Skip to content

Instantly share code, notes, and snippets.

@fadden
Created April 2, 2023 01:05
Show Gist options
  • Save fadden/8a0e0898e220b18cfc087b4d9d89e847 to your computer and use it in GitHub Desktop.
Save fadden/8a0e0898e220b18cfc087b4d9d89e847 to your computer and use it in GitHub Desktop.
Arc3D shape definition file format
ATMTDS
<1>
# Krait from ELITE (version for Modulae simulator)
Krait
POINTS
# main shape
1 0 0 40
2 -45 0 -10
3 45 0 -10
4 0 10 -40
5 0 -10 -40
*
# prongs (2,3 are parts of the main shape)
6 -45 0 40
7 45 0 40
# view port
8 0 3 16
9 12 3 5
10 -12 3 5
11 0 4 8
# engines
12 15 0 -30
13 6 6 -36
14 6 -6 -36
15 -15 0 -30
16 -6 6 -36
17 -6 -6 -36
endpoints
FACES
1 -1 1 3 4
2 -1 1 4 2
3 -1 1 5 3
4 -1 1 2 5
5 -1 2 4 5
6 -1 3 5 4
endfaces
DECORATIONS
# prongs (color 13 = dark gray)
# mode 2 (OR): draw if either of the flat panels it attaches to is visible
{ 2 4 } 2 13 2 6
{ 1 3 } 2 13 3 7
# windshield (color 2 = yellow)
# mode 0 (AND): draw only if top panels are visible
{ 1 } 0 2 8 9 11
{ 2 } 0 2 8 10 11
# engines (color 6 = red)
# mode 0 (AND): draw only if rear panels are visible
{ 6 } 0 6 12 13 14 12
{ 5 } 0 6 15 16 17 15
enddecorations
END
Format of shape definition files (v1.0)
Blank lines and lines starting with "#" are ignored.
----------
ATMTDS [ file signature; MUST be first line of file ]
<#> [ # is the minimum version number needed to read
the file, between angle brackets ]
shape_name [ 15 chars max ]
POINTS [ "POINTS" signals start of point list ]
id0 xc yc zc [ each id should be a unique integer (1-32767) ]
id1 xc yc zc [ max of 128 points ]
. [ max coordinate value is +/- 16384 ]
.
idn xc yc zc
ENDPOINTS
FACES [ "FACES" signals the start of face descriptions ]
id0 color p1 p2 p3...pn [ each pn is an ID for a point ]
id1 color p1 p2 p3...pn [ each list is terminated with a CR ]
. [ specify points in COUNTERCLOCKWISE order. Put
. the 3 points with the greatest angle FIRST. ]
idn color p1 p2 p3...pn [ max of 64 faces ]
[ color is pixel value; if -1 then current pen
color will be used for that face ]
ENDFACES
DECORATIONS [ "DECORATIONS" signals start of decorative edges ]
[ this section is optional ]
[ the faces f1...fn are evaluated according to
logic_mode; if it evaluates to TRUE, the decoration
will be drawn ]
[ p1...pn are the points to join. Note that, unlike
faces, pn and p1 are not joined automatically ]
[ color is the line color to use. If color = -1 then
the decoration will be drawn in the same color as
the rest of the shape ]
'{' f1...fn '}' logic_mode color p1...pn
'{' f1...fn '}' logic_mode color p1...pn
.
.
'{' f1...fn '}' logic_mode color p1...pn
ENDDECORATIONS
END [ end of file... everything after this is ignored ]
Other stuff:
-----------
The default colors are:
0 black
1 dark gray
2 brown
3 dark purple
4 medium blue
5 dark green
6 orange
7 deep red
8 pink (beige)
9 yellow
10 light green
11 light blue
12 purple (lilac)
13 periwinkle (light bluish-purple)
14 light gray
15 white
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment