This document describes how to create, interpret, and modify Infini-D 3.0-3.5 scene files and object library files. A scene file describes either a static 3D scene or a 3D animation, and includes parameters for geometric objects, lights, cameras, surfaces, effects, and time-based transformation parameters. An object library file describes the geometry of a single SplineForm&tm; object, which describes a path, 4 rails, and 1 or more cross-sections to form a cubic Bezier-patch surface.
Infini-D versions 3.0 and later use the Elmo file format. Elmo is a nested block structure which brings order to an otherwise chaotic collection of data. Elmo's main features are:
a) Each file is a list of 1 or more blocks.
b) Each block has a list of 0 or more subblocks after the main block data.
c) Each block has a header containing the block type, a unique block ID (the Tag), the block size, and the position of the first subblock.
d) Blocks have a fixed or variable size depending on the block type.
e) Any block can have extra data added by adding a subblock of a new type.
f) Any unrecognized block types are ignored, to allow backward compatibility.
g) Blocks are written in a standard order for efficiency of reading.
h) File readers can take advantage of the expected order for efficiency, but should not expect blocks in a particular order to allow for new and unrecognized block types.
i) Integers and other values are ordered with the most-significant byte first (big-endian), as is typical with Mactinosh data.
Offset |
Size in Bytes |
Contents |
Description |
| 0 |
4 |
Elmo type |
a 4-character code which determines the block contents, e.g. "scen" for scene files. |
| 4 |
4 |
Elmo tag |
unique identifying number for each block in a file. |
| 8 |
4 |
block size |
block size in bytes, including header and subblocks. |
| 12 |
4 |
subblock offset |
subblock
offset: the number of bytes from the start of the block to the first subblock.
If there are no subblocks then the offset equals the block size. |
| 16 |
varies |
block
data |
The
contents here depends on the block type, and extends from byte 16 to
(subblock_offset - 1) |
| subblock_offset |
varies |
1st
subblock |
(subblocks
are optional, according to block type) |
| subblock_offset
+ 1st subblock block size |
varies |
2nd
subblock |
(subblocks
are optional, according to block type) |
| subblock_offset
+ 2nd subblock block size |
varies |
3nd
subblock |
(subblocks
are optional, according to block type) |
| ... |
... |
... |
... |
| block
size |
start
of next block |
Type |
Name |
Subblock of |
Possible subblocks |
Subblock offset |
Page |
| elmo |
File header |
- |
(many) |
28 |
12 |
| scen |
Scene |
elmo |
surf |
48 |
12 |
| csrf |
Composite surface |
elmo |
csla |
100 |
13 |
| csla |
Composite surface layer |
csrf |
- |
156 |
14 |
| surf |
Basic surface |
elmo |
rgb, tile, frct, nois, marb, wood, natw, imag |
104 |
15 |
| rgb |
RGB color |
surf |
- |
28 |
16 |
| tile |
Tile surface |
surf |
- |
192 |
17 |
| frct |
Fractal surface |
surf, terr |
- |
72 |
17 |
| nois |
Noise surface |
surf |
- |
48 |
18 |
| marb |
Marble surface |
surf |
- |
64 |
18 |
| wood |
Wood surface |
surf |
- |
56 |
18 |
| natw |
Natural wood surface |
surf |
- |
64 |
19 |
| wave |
Wave surface |
surf |
- |
64 |
19 |
| imag |
Image map |
surf, terr |
alis, qtsp |
80 |
19 |
| alis |
File Alias |
imag |
- |
varies |
20 |
| qtsp |
QuickTime surface parameters |
imag |
- |
42 |
21 |
| lite |
Light |
elmo |
lnsf |
124 |
21 |
| lnsf |
Lens Flare |
lite |
- |
20 |
22 |
| obj |
Object |
elmo |
obx1, evtm, terr, modl |
236 |
22 |
| obx1 |
Object extended |
obj |
- |
20 |
24 |
| terr |
Terrain data |
obj |
imag, frct |
28 |
25 |
| modl |
Polygonal Mesh data |
obj |
verl, edgl, facl |
25 |
|
| verl |
Vertex list |
modl |
- |
varies |
26 |
| edgl |
Edge list |
modl |
- |
varies |
26 |
| facl |
Face list |
modl |
indl |
varies |
27 |
| indl |
Index list |
facl |
- |
varies |
27 |
| evtm |
Event mark |
obj |
afev, raev, sfev, olev, txev, ptev, liev, caev, trev, ppev |
varies |
28 |
| afev |
Affine event mark |
evtm |
- |
72 |
29 |
| raev |
Rotation Affine event mark |
evtm |
- |
88 |
30 |
| sfev |
Surface event mark |
evtm |
- |
28 |
30 |
| olev |
Outline event mark |
evtm |
- |
28 |
31 |
| txev |
Text object event mark |
evtm |
- |
varies |
31 |
| liev |
Light object event mark |
evtm |
lfev |
72 |
32 |
| lfev |
Lens flare event |
liev |
- |
106 |
32 |
| caev |
Camera object event mark |
evtm |
- |
28 |
33 |
| trev |
Terrain object event mark |
evtm |
frct |
28 |
33 |
| ppev |
Path-profile obj. event mark |
evtm |
pmdl |
28 |
34 |
| ptev |
Path-Profile text obj. event mark |
evtm |
pmdl |
varies |
35 |
| pmdl |
Path Model |
ppev, ptev |
ppro |
40 |
35 |
| ppro |
Path Profile |
pmdl |
ol3d, pf2d |
varies |
36 |
| pf2d |
Cross Section (Profile 2D) |
ppro |
ol2d |
varies |
37 |
| ol3d |
3D Spline (Outline 3D) |
ppro |
- |
varies |
38 |
| ol2d |
2D Spline (Outline 2D) |
pf2d |
- |
varies |
38 |
| envv |
Environment Variables |
elmo |
- |
64 |
39 |
| seqv |
Sequence Variables |
elmo |
- |
64 |
40 |
| bkmk |
Bookmark |
elmo |
- |
96 |
41 |
| view |
View of scene |
elmo |
vwx2 |
196 |
41 |
| vwx2 |
View extended |
view |
- |
20 |
43 |
| outl |
Outline Model (5-way Polyline) |
elmo |
pypt |
58 |
44 |
| pypt |
Polypoint |
outl |
pylp |
varies |
45 |
| pylp |
Polypoint Loop |
pypt |
- |
varies |
45 |
| sqin |
Sequencer Info |
elmo |
sqob |
20 |
46 |
| sqob |
Sequencer Object data |
sqin |
- |
32 |
46 |
| sprf |
Scene preferences |
elmo |
- |
24 |
46 |
| end! |
End of file |
elmo |
- |
16 |
47 |
Type |
Name |
Subblock of |
Possible subblocks |
Subblock offset |
Page |
| afev |
Affine event mark |
evtm |
- |
72 |
27 |
| alis |
File Alias |
imag |
- |
varies |
20 |
| bkmk |
Bookmark |
elmo |
- |
96 |
38 |
| caev |
Camera object event mark |
evtm |
- |
28 |
31 |
| csla |
Composite surface layer |
csrf |
- |
156 |
14 |
| csrf |
Composite surface |
elmo |
csla |
100 |
13 |
| edgl |
Edge list |
modl |
- |
varies |
25 |
| elmo |
File header |
- |
(many) |
28 |
12 |
| end! |
End of file |
elmo |
- |
16 |
44 |
| envv |
Environment Variables |
elmo |
- |
64 |
37 |
| evtm |
Event mark |
obj |
afev, raev, sfev, olev, txev, ptev, liev, caev, trev, ppev |
varies |
26 |
| facl |
Face list |
modl |
indl |
varies |
25 |
| frct |
Fractal surface |
surf, terr |
- |
72 |
17 |
| imag |
Image map |
surf, terr |
alis, qtsp |
80 |
19 |
| indl |
Index list |
facl |
- |
varies |
26 |
| lfev |
Lens flare event |
liev |
- |
106 |
|
| liev |
Light
object event mark |
evtm |
lfev |
72 |
30 |
| lite |
Light |
elmo |
lnsf |
124 |
21 |
| lnsf |
Lens
Flare |
lite |
- |
20 |
|
| marb |
Marble
surface |
surf |
- |
64 |
18 |
| modl |
Polygonal
Mesh data |
obj |
verl,
edgl, facl |
24 |
|
| natw |
Natural
wood surface |
surf |
- |
64 |
19 |
| nois |
Noise
surface |
surf |
- |
48 |
18 |
| obj |
Object |
elmo |
obx1,
evtm, terr, modl |
236 |
22 |
| obx1 |
Object
extended |
obj |
- |
20 |
|
| ol2d |
2D
Spline (Outline 2D) |
pf2d |
- |
varies |
36 |
| ol3d |
3D
Spline (Outline 3D) |
ppro |
- |
varies |
35 |
| olev |
Outline
event mark |
evtm |
- |
28 |
29 |
| outl |
Outline
Model (5-way Polyline) |
elmo |
pypt |
58 |
41 |
| pf2d |
Cross
Section (Profile 2D) |
ppro |
ol2d |
varies |
35 |
| pmdl |
Path
Model |
ppev,
ptev |
ppro |
40 |
33 |
| ppev |
Path-profile
obj. event mark |
evtm |
pmdl |
28 |
32 |
| ppro |
Path
Profile |
pmdl |
ol3d, pf2d |
varies |
33 |
| ptev |
Path-Profile text obj. event mark |
evtm |
pmdl |
varies |
32 |
| pylp |
Polypoint Loop |
pypt |
- |
varies |
42 |
| pypt |
Polypoint |
outl |
pylp |
varies |
42 |
| qtsp |
QuickTime surface parameters |
imag |
- |
42 |
|
| raev |
Rotation Affine event mark |
evtm |
- |
88 |
28 |
| rgb |
RGB color |
surf |
- |
28 |
16 |
| scen |
Scene |
elmo |
surf |
48 |
12 |
| seqv |
Sequence
Variables |
elmo |
- |
64 |
37 |
| sfev |
Surface
event mark |
evtm |
- |
28 |
29 |
| sprf |
Scene
preferences |
elmo |
- |
24 |
|
| sqin |
Sequencer
Info |
elmo |
sqob |
20 |
43 |
| sqob |
Sequencer
Object data |
sqin |
- |
32 |
43 |
| surf |
Basic
surface |
elmo |
rgb,
tile, frct, nois, marb, wood, natw, imag |
104 |
15 |
| terr |
Terrain
data |
obj |
imag,
frct |
28 |
23 |
| tile |
Tile
surface |
surf |
- |
192 |
17 |
| trev |
Terrain
object event mark |
evtm |
frct |
28 |
31 |
| txev |
Text
object event mark |
evtm |
- |
varies |
30 |
| verl |
Vertex
list |
modl |
- |
varies |
25 |
| view |
View
of scene |
elmo |
vwx2 |
196 |
39 |
| vwx2 |
View
extended |
view |
- |
20 |
|
| wave |
Wave
surface |
surf |
- |
64 |
19 |
| wood |
Wood surface |
surf |
- |
56 |
18 |
elmo |
-------file header |
|||||||
| scen |
-------one scene block |
|||||||
| csrf |
-------one
block per composite surface, in a mixed list of basic and composite surfaces. |
|||||||
| csla |
-------one block per composite surface layer |
|||||||
| surf |
-------one
block per basic surface, in a mixed list of basic and composite surfaces.
Basic surfaces have 1 or 2 surface mapping subblocks:
-------one image mapping subblock from list below. |
|||||||
| rgb
|
-------RGB
color parameter. |
|||||||
| tile |
-------tiling
parameters. |
|||||||
| frct |
-------fractal
parameters. |
|||||||
| nois |
-------noise
parameters. |
|||||||
| marb |
-------marble
parameters. |
|||||||
| wood |
-------(old
style) wood parameters. |
|||||||
| natw |
-------natural
wood parameters. |
|||||||
| imag |
-------image
map parameters. |
|||||||
| alis |
-------one
file alias block. |
|||||||
| qtsp |
-------one
QuickTime surface parameter block. |
|||||||
| -------optionally
one bump maping subblock from list below. |
||||||||
| nois |
-------noise
parameters. |
|||||||
| wave |
-------wave
parameters. |
|||||||
| lite |
-------one
per light |
|||||||
| lnsf |
-------one
lens flare block per light. |
|||||||
| obj |
-------one
per object, including cameras and lights, in a tree structure. |
|||||||
| obx1 |
-------one
object extended block per object. |
|||||||
| terr |
-------one
terrain block for terrain objects |
|||||||
| frct |
-------one
fractal data block for fractal terrains. |
|||||||
| imag |
-------one
image block for image mapped terrains. |
|||||||
| alis |
-------one
file alias block |
|||||||
| modl |
-------one
model block for polygonal mesh objects. |
|||||||
| verl |
-------one
vertex list. |
|||||||
| edgl |
-------one
edge list. |
|||||||
| facl |
-------one
face list. |
|||||||
| indl |
-------multiple
edge or neighbor index lists blocks. |
|||||||
| evtm |
-------one
for each eventmark of object. Event marks have different sets of parameters
stored with the subblocks below: |
|||||||
| afev |
-------affine
event data. |
|||||||
| raev |
-------rotation
Affine event data. |
|||||||
| caev |
-------camera
event data. |
|||||||
| liev |
-------light
event data. |
|||||||
| lfev |
-------one
lens flare event data. block. |
|||||||
| sfev |
-------surface
event data. |
|||||||
| ppev |
-------path-profile
event data. |
|||||||
| pmdl |
-------one
path model data block. |
|||||||
| ppro |
-------one
path-profile data block. |
|||||||
| ol3d |
-------5
outline 3D data blocks (path & 4 rails). |
|||||||
| pf2d |
-------one
profile2D block for each cross-section. |
|||||||
| ol2d |
-------one
outline2D block for each curve in a cross-section. |
|||||||
| ptev |
-------path-profile
text event data. |
|||||||
| pmdl |
-------one
path model data block (see above for subblocks) |
|||||||
| trev |
-------terrain
event data. |
|||||||
| frct |
-------Fractal
parameters. |
|||||||
| envv |
-------one
environment variables block. |
|||||||
| seqv |
-------one
sequence variables block. |
|||||||
| bkmk |
-------one
per bookmark, forming a linked list of blocks. |
|||||||
| view |
-------one
per view, forming a linked list of blocks. |
|||||||
| vwx2 |
-------one
view extended block per view. |
|||||||
| outl |
-------one
per outline object, forming a link list of blocks. |
|||||||
| pypt |
-------5
polypoint lists per outline object. |
|||||||
| pylp |
-------one
or more Polypoint Loop blocks per Polypoint block. |
|||||||
| sqin |
-------one
sequencer info block. |
|||||||
| sqob |
-------one
per object listed in sequencer. |
|||||||
| sprf |
-------one
scene preferences block. |
|||||||
| end! |
-------one
EOF block. |
|||||||
elmo |
-------file
header |
|||||||
| pmdl |
-------one
path model data block |
|||||||
| ppro |
-------one
path-profile data block |
|||||||
| ol3d |
-------5
outline 3D data blocks (path & 4 rails) |
|||||||
| pf2d |
-------one
profile2D block for each cross-section |
|||||||
| ol2d |
-------one
outline2D block for each curve in a cross-section |
|||||||
| end! |
-------one
EOF block |
|||||||
Infini-D version 3.0.1 was released shortly after 3.0. This bug-fix release did not have any file format changes.
Infini-D version 3.1 was released in October 1995. The QuickTime -Surface-Parameters block (`qtsp') was introduced, and the ElmoIndexUnion type was modified to correct smoothing problems with polygonal mesh models having 65,535 or more faces.
Infini-D version 3.2 was released in April 1996. This version did not have any file format changes.
Infini-D version 3.5 was released in August 1996. New block types were Lens-Flare (`lnsf'), Lens-Flare-Event (`lfev'), Object-Extended (`obx1'), View-Extended (`vwx2'), Scene-Preferences (`sprf').
Please note that all elmo scene files are backward compatible to Infini-D version 3.0, since unrecognized block types are ignored. See "About the Elmo Block Structure" for more information.
General Types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoUInt8 |
1 |
8
bit unsigned integer |
||||
| ElmoUInt16 |
2 |
16
bit unsigned integer |
||||
| ElmoUInt32 |
4 |
32
bit unsigned integer |
||||
| ElmoInt8 |
1 |
8
bit signed integer |
||||
| ElmoInt16 |
2 |
16
bit signed integer |
||||
| ElmoInt32 |
4 |
32
bit signed integer |
||||
| ElmoFloat32 |
4 |
32
bit floating point number (IEEE single precision) |
||||
| ElmoBoolean |
1 |
8
bit boolean value. 1 = TRUE, 0 = FALSE. |
||||
| ElmoPString |
varies |
A
Macintosh "Pascal" string, where the first byte is the number of characters
(0-255) in the string that follows. There is no terminating character. Note
that the maximum string length is one less than the number of bytes available. |
||||
| Block
header types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoType |
4 |
4-character
code, e.g. 'elmo'. Characters must be in the range 32-216 ($20-$D8). |
||||
| ElmoTag |
4 |
An
identifying number unique to each block in an elmo file. A 32 bit unsigned
value. |
||||
| Reserved
block numbers are: |
||||||
| kNotAnElmoTag
= 0 |
No
block or end of block list. |
|||||
| kElmoEOFTag
= -1 |
Tag
of "end!" block. |
|||||
| Elmo
file header = 1 |
Tag
of file header block. |
|||||
| ElmoBlockHeader |
16 |
The
standard header for each Elmo block: |
||||
| 4 |
ElmoType |
a
4-character code which determines the block contents, e.g. "scen" for scene
files. Characters must be in the range 32-2216 ($20-$D8). |
||||
| 4 |
ElmoTag |
unique
identifying number for each block in a file. |
||||
| 4 |
ElmoUInt32 |
block
size in bytes, including header and subblocks. |
||||
| 4 |
ElmoUInt32 |
subblock
offset: the number of bytes from the start of the block to the first subblock.
If there are no subblocks then the offset equals the block size. |
||||
| Geometric
types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoPoint2D |
8 |
A
2D point (ElmoFloat32: x, y) |
||||
| ElmoIntPoint2D |
4 |
A
2D Macintosh-style point (ElmoInt16: x, y) |
||||
| ElmoPointST |
8 |
A
point for texture mapping (ElmoFloat32: s, t) |
||||
| ElmoPoint3D |
12 |
a
3D point or 3D vector (x, y, z) |
||||
| ElmoPoint4D |
16 |
a
4D point or 4D vector (x, y, z, w) |
||||
| ElmoQuaternion |
16 |
a
quaternion (a useful way to represent rotation: c, x, y, z) |
||||
| ElmoRect |
16 |
a
rectangle (left, top, right, bottom) |
||||
| ElmoIntRect |
8 |
an
integer, Macintosh-style rect (top, left, bottom, right) |
Color types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoRGBInt8Color |
4 |
A
Macintosh-style RGB color |
||||
| 1 |
ElmoUInt8 |
red |
||||
| 1 |
ElmoUInt8 |
green |
||||
| 1 |
ElmoUInt8 |
blue |
||||
| 1 |
ElmoUInt8 |
padding
(reserved, set to 0) |
||||
| ElmoRGBIntColor |
6 |
A
Macintosh-style RGB color |
||||
| 2 |
ElmoUInt16 |
red |
||||
| 2 |
ElmoUInt16 |
green |
||||
| 2 |
ElmoUInt16 |
blue |
||||
| ElmoRGBColor |
12 |
an RGB color (each component ranges from 0.0--1.0) |
||||
| 4 |
ElmoFloat32 |
red |
||||
| 4 |
ElmoFloat32 |
green |
||||
| 4 |
ElmoFloat32 |
blue |
||||
| ElmoHSVColor |
12 |
an HSV color (each component ranges from 0.0--1.0) |
||||
| 4 |
ElmoFloat32 |
hue |
||||
| 4 |
ElmoFloat32 |
saturation |
||||
| 4 |
ElmoFloat32 |
value |
||||
| ElmoColorTransition |
28 |
an RGB or HSV transition from one color to another |
||||
| 2 |
ElmoUInt16 |
padding (reserved, set to 0) |
||||
| 2 |
ElmoUInt16 |
transition type (ElmoRGBTransition = 0, ElmoHSVTransition = 1) |
||||
| 12 |
ElmoRGBColor / ElmoHSVColor |
start |
||||
| 12 |
ElmoRGBColor / ElmoHSVColor |
end |
||||
| ElmoAlphaMode |
1 |
What
kind of alpha channel for an image? |
||||
| kElmoNoAlpha
= 0 |
||||||
| kElmoStraightAlpha
= 1 |
||||||
| kElmoMultipliedAlpha
= 2 |
||||||
| Object
transform types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoAffine |
72 |
An
object's affine data. |
||||
| 12 |
ElmoVector3D |
scale |
local
scale; does not affect children |
|||
| 12 |
ElmoVector3D |
offset |
local
offset; does not affect children |
|||
| 12 |
ElmoVector3D |
tree_scale |
"uniform
scale"; passed down to children |
|||
| 12 |
ElmoVector3D |
rotation |
passed
down to children |
|||
| 12 |
ElmoVector3D |
shear |
passed
down to children |
|||
| 12 |
ElmoVector3D |
position |
passed
down to children |
|||
| ElmoConstraint3D |
28 |
An
object's constraint information (rotation, scale, or position). |
||||
| 12 |
ElmoVector3D |
min |
||||
| 12 |
ElmoVector3D |
max |
||||
| 1 |
ElmoBoolean |
xLocked |
||||
| 1 |
ElmoBoolean |
yLocked |
||||
| 1 |
ElmoBoolean |
zLocked |
||||
| 1 |
ElmoBoolean |
reserved |
||||
Bezier spline types |
||||||
| Name |
Bytes |
Description |
||||
| PtNode2D_Elmo_Struct |
28 |
A
point node on a 2D cubic Bezier spline. |
||||
| 2 |
ElmoUInt16 |
reserved |
||||
| 1 |
ElmoUInt8 |
reserved |
||||
| 1 |
ElmoUInt8 |
kind |
kPlainKind=0 |
|||
| kCornerKind=1 |
||||||
| kCurveKind=2 |
||||||
| kSmoothKind=3 |
||||||
| 8 |
ElmoPoint2D |
position |
||||
| 8 |
ElmoPoint2D |
LControl |
||||
| 8 |
ElmoPoint2D |
RControl |
||||
| PtNode3D_Elmo_Struct |
40 |
A
point node on a 3D cubic Bezier spline. |
||||
| 2 |
ElmoUInt16 |
reserved |
||||
| 1 |
ElmoUInt8 |
reserved |
||||
| 1 |
ElmoUInt8 |
kind |
kPlainKind=0 |
|||
| kCornerKind=1 |
||||||
| kCurveKind=2 |
||||||
| kSmoothKind=3 |
||||||
| 12 |
ElmoPoint3D |
position |
||||
| 12 |
ElmoPoint3D |
LControl |
||||
| 12 |
ElmoPoint3D |
RControl |
||||
| Polygonal
Model types |
||||||
| Name |
Bytes |
Description |
||||
| ElmoModelIndex |
4 |
An
index into a Polygonal model's face, edge, or vertex list (an unsigned integer) |
||||
| ElmoEdge |
8 |
An
edge of a polygonal mesh model. |
||||
| 4 |
ElmoModelIndex |
index1 |
Index
into vertex list; vertex has coordinates of 1st endpoint. |
|||
| 4 |
ElmoModelIndex |
index2 |
Index
into vertex list; vertex has coordinates of 2nd endpoint. |
|||
| ElmoFace |
40 |
A
"face", a 3 or more sided 3D polygon; a facet of a polygonal mesh model. |
||||
| 4 |
ElmoUInt16 |
flags |
kElmoFlatFace
= 0 (face is planar) |
|||
| kElmoInterpFace
= 1 (face not planar) |
||||||
| 4 |
ElmoModelIndex |
edgeCount |
Number
of edges |
|||
| 16 |
ElmoIndexUnion |
edgeList |
4
edge indexes or Tag of (edge) index list, in CCW order. |
|||
| 16 |
ElmoIndexUnion |
neighborList |
4
neighboring face indexes or Tag of (neighboring face) index list, in CCW order
and corresponding to the above edgeList. |
|||
| ElmoIndexUnion |
16 |
A
list of up to 4 indices *OR* the tag of a subblock with a list of 5 or more
indicies. Used for a face's edge and neighbor lists - since most faces have 3
or 4 edges and 3 or 4 neighbors, we optimize for that case. Edges and Faces
must be listed in counter-clockwise order (CCW from the ouside perspective).
If a face does not exist, or smoothing towards the neighboring face is not
desired, the constant K_no_neighboring_face is used. K_no_neighboring_face is
0xFFFFFFFF for version 3.1 or later, 0xFFFF for version 3.0 or 3.0.1. |
||||
| (if
ElmoFace.edgeCount is 4 or less) |
||||||
| 4 |
ElmoModelIndex |
index[0] |
Index
of the first edge or neighbor |
|||
| 4 |
ElmoModelIndex |
index[1] |
Index
of the second edge or neighbor |
|||
| 4 |
ElmoModelIndex |
index[2] |
Index
of the third edge or neighbor |
|||
| 4 |
ElmoModelIndex |
index[3] |
Index
of the fourth edge or neighbor |
|||
| (or,
if ElmoFace.edgeCount is 5 or more) |
||||||
| 4 |
ElmoTag |
indexListTag |
Tag
of Index List subblock (holds edge list or face list). |
|||
| Outline
Model types |
||||||
| Name |
Bytes |
Description |
||||
| Elmo_Polypoint_Node |
8 |
A
node of a polypoint loop |
||||
| 4 |
ElmoPoint2D |
pt |
||||
| 2 |
ElmoUInt16 |
padding |
||||
| 2 |
ElmoInt16 |
mode |
K_straight_segment = 0 |
|||
| K_interpolated_segment = 1 |
||||||
| K_bezier_segment
= 2 (cubic spline) |
||||||
| K_bezier_2_segment
= 3 (quadratic spline) |
Name |
The
4-character block type, followed by the C language structure or type name,
followed by a C language constant which is equal to the block type. |
| Desc. |
A
brief description of the block type. |
| Content |
The
contents of the bock, which always starts with an Elmo header. |
| Offset |
The
number of bytes from the start of the block to that particular element. The
last offset listed is usually the subblock offset. |
| Size |
The
number of bytes that particular element spans. |
| Type |
The
C Language type of the element. See section 7, "Data Types" for an
explanation. Some types are common structures which have sub-elements listed
in "Data Types", e.g. ElmoPoint3D has "x", "y", and "z" subelements. |
| Name |
The
C Language name of the element. Some groups of elements (between horizontal
lines) are part of a sub-structure of the block, with the name of the subblock
is listed at the top of the group. E.g. Bookmark blocks have a set of
"Movie_Camera_Elmo_Struct" elements. |
| Description
and cases |
A
brief description of the element, followed by any special values or usual
values for that element (indented). |
Name |
elmo |
ElmoFileHeader |
kElmoFormatKind |
|||
| Desc. |
The
Elmo file header. Identifies the file type and size. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoUInt32 |
elmo_vers |
The
Elmo block structure version number. |
||
| Version
2 = 512 (200 hex) |
||||||
| 20 |
4 |
ElmoUInt32 |
creator_signature |
The
Macintosh application signature of Infini-D. |
||
| Infini-D
signature =SI[infinity]D (5349 B004 hex) |
||||||
| 24 |
4 |
ElmoUInt32 |
creator_file_vers |
The
file format version number. |
||
| Inifini-D
3.0, 3.0.1 = 296 (0000 0128 hex) |
||||||
| Inifini-D
3.1, 3.2 = 301 (0000 012D hex) |
||||||
| 28 |
Inifini-D
3.5 = 350 (0000 015E hex) |
|||||
| Subbl. |
All
other blocks are subblocks of this one. |
|||||
| Context |
This
block encompases the entire file. |
|||||
| Name |
scen |
Scene_Elmo_Block |
kSceneElmoBlockType |
|||
| Desc. |
An
Infini-D scene. Usually there is one scene block at the start of each scene
file. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoTag |
objectTree |
Tag
of the first block in the scene's object tree. |
||
| 20 |
4 |
ElmoTag |
outlineList |
Tag
of the first block in the scene's outline list. |
||
| 24 |
4 |
ElmoTag |
surfaceList |
Tag
of the first block in the scene's surface list. |
||
| 28 |
4 |
ElmoTag |
lightList |
Tag
of the first block in the scene's light list. |
||
| 32 |
4 |
ElmoTag |
viewList |
Tag
of the first block in the scene's view list. |
||
| 36 |
4 |
ElmoTag |
bookMarkList |
Tag
of the first block in the scene's book mark list. |
||
| 40 |
4 |
ElmoTag |
sequencerInfoTag |
Tag
of the scene's sequencer info block. |
||
| 44 |
4 |
ElmoTag |
useParentSurfaceTag |
Tag
value reserved for "use parent's surface." There is no block with this tag
value. If an object has a surfaceTag with this value, the symbolic meaning is
"use the parent object's surface." |
||
| 48 |
||||||
| Subbl. |
none |
|||||
| Context |
An
elmo subblock, usually the first in a scene file. |
|||||
| Name |
csrf |
Composite_Surface_Elmo_Block |
kComposedSurfaceElmoBlockType |
|||
| Desc. |
A
composite surface. Each composite surface has multiple layers as subblocks. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
||||
| 16 |
4 |
ElmoTag |
next |
Tag
of next block in surface list |
||
| 20 |
2 |
ElmoSurfaceType |
type |
The
type of this surface |
||
| (an
ElmoUInt16) |
kElmoBasicSurface
= 0 (`surf' blocks only) |
|||||
| kElmoPictureSurface
= 1 (`surf' with `imag' subblock only) |
||||||
| kElmoCompositeSurface
= 2 (`csrf' blocks only) |
||||||
| 22 |
2 |
ElmoSurfaceType |
nextType |
The
type of the next surface |
||
| (an
ElmoUInt16) |
kElmoBasicSurface
= 0 (`surf' blocks only) |
|||||
| kElmoPictureSurface
= 1 (`surf' with `imag' subblock only) |
||||||
| kElmoCompositeSurface
= 2 (`csrf' blocks only) |
||||||
| 24 |
32 |
char
(ElmoPString) |
name |
The
surface name |
||
| 56 |
4 |
ElmoFloat32 |
diffusion |
Diffuse
reflection [0.0 to 1.0] |
||
| 60 |
4 |
ElmoFloat32 |
specularity |
Specular
highlight [0.0 to 1.0] |
||
| 64 |
4 |
ElmoFloat32 |
reflectivity |
Specular
reflection [0.0 to 1.0] |
||
| 68 |
4 |
ElmoFloat32 |
transmission |
Transparency
[0.0 to 1.0] |
||
| 72 |
4 |
ElmoFloat32 |
glow |
Glow
(ambient light) [0.0 to 1.0] |
||
| 76 |
4 |
ElmoFloat32 |
specularPower |
Shininess
[20-220] |
||
| 80 |
4 |
ElmoFloat32 |
indexOfRefraction |
Ranges
from 0.5 to 5.5 |
||
| 84 |
4 |
ElmoFloat32 |
metallicity |
Metalicity
[0.0 to 1.0] |
||
| 88 |
4 |
ElmoFloat32 |
colorTransmission |
|||
| 92 |
4 |
ElmoTag |
layerListTag |
Tag
of first block in layer list |
||
| 96 |
4 |
ElmoUInt32 |
combinedSwitch |
Bitwise-OR
of the "mapSwitch" field of the layers. |
||
| 100 |
||||||
| Subbl. |
one
or more csla blocks |
|||||
| Context |
An
elmo subblock, in a list of basic and composed surfaces started by the Scene
block's surfaceList tag. |
|||||
| Name |
csla |
Surface_Layer_Elmo_Block |
kSurfaceLayerElmoBlockType |
|||
| Desc. |
A
composite surface layer. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
||||
| 16 |
4 |
ElmoTag |
next |
Tag
of next block in layer list |
||
| 20 |
4 |
ElmoTag |
material |
Tag
of the basic surface for this layer (`surf' block) |
||
| 24 |
2 |
ElmoInt16 |
inverseMappingID |
|||
| 26 |
2 |
ElmoInt16 |
transferMode |
Surface
layer transfer modes: |
||
| K_copy
= 0 |
||||||
| K_matte
= 1 |
||||||
| K_transparent
= 2 |
||||||
| K_blend_copy
= 3 |
||||||
| K_blend_matte
= 4 |
||||||
| K_blend_transparent
= 5 |
||||||
| K_alpha_channel
= 6 |
||||||
| 28 |
72 |
ElmoAffine |
transform |
|||
| 100 |
4 |
ElmoUInt32 |
mapSwitch |
Map
in use if TRUE for the following bits: |
||
| kElmoTextureMap
= 0x0001 |
||||||
| kElmoSpecularMap
= 0x0002 |
||||||
| kElmoTransmitMap
= 0x0004 |
||||||
| kElmoReflectMap
= 0x0008 |
||||||
| kElmoGlowMap
= 0x0010 |
||||||
| kElmoBumpMap
= 0x0020 |
||||||
| kElmoSpecularPowerMap
= 0x0040 |
||||||
| kElmoIndexOfRefractionMap
= 0x0080 |
||||||
| kElmoMetallicityMap
= 0x00100 |
||||||
| 104 |
4 |
ElmoFloat32 |
textureValue |
[0,
1] |
||
| 108 |
4 |
ElmoFloat32 |
specularValue |
|||
| 112 |
4 |
ElmoFloat32 |
transmitValue |
|||
| 116 |
4 |
ElmoFloat32 |
reflectValue |
|||
| 120 |
4 |
ElmoFloat32 |
glowValue |
|||
| 124 |
4 |
ElmoFloat32 |
bumpValue |
|||
| 128 |
4 |
ElmoFloat32 |
cylindricalAngle |
Only
for cylindrical, cylindrical cap, and spherical |
||
| 132 |
1 |
ElmoBoolean |
invert |
|||
| 133 |
1 |
ElmoBoolean |
padding1 |
Reserved,
Set to 0. |
||
| 134 |
2 |
ElmoInt16 |
horizRepeat |
These
two fields do not apply to 3D textures. |
||
| 136 |
2 |
ElmoInt16 |
vertRepeat |
|||
| 138 |
1 |
ElmoUInt8 |
flip |
surface
layer flip mode: |
||
| k_layer_flip_none
= 0 |
||||||
| k_layer_flip_horz
= 1 |
||||||
| k_layer_flip_vert
= 2 |
||||||
| k_layer_flip_both
= 3 |
||||||
| 139 |
1 |
ElmoUInt8 |
rotate |
surface
layer mapping rotate mode: |
||
| k_layer_rotate_none
= 0 |
||||||
| k_layer_rotate_CW_90
= 1 |
||||||
| k_layer_rotate_CW_180
= 2 |
||||||
| k_layer_rotate_CW_270
= 3 |
||||||
| 140 |
8 |
ElmoPointST |
stMin |
for
ST mapping |
||
| 148 |
8 |
ElmoPointST |
stMax |
for
ST mapping |
||
| 156 |
||||||
| Subbl. |
none |
|||||
| Context |
A
composed surface subblock, in a list of layers started by the surface's
layerListTag element. |
|||||
| Name |
surf |
Surface_Elmo_Block |
kSurfaceElmoBlockType |
|||
| Desc. |
A
single "basic" surface, including color, image, or texture mapping and bump
mapping. |
|||||
Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
||||
| 16 |
4 |
ElmoTag |
next |
Tag
of next block in surface list |
||
| 20 |
2 |
ElmoSurfaceType |
type |
The
type of this surface |
||
| (an
ElmoUInt16) |
kElmoBasicSurface
= 0 (`surf' blocks only) |
|||||
| kElmoPictureSurface
= 1 (`surf' with `imag' subblock only) |
||||||
| kElmoCompositeSurface
= 2 (`csrf' blocks only) |
||||||
| 22 |
2 |
ElmoSurfaceType |
nextType |
The
type of the next surface |
||
| (an
ElmoUInt16) |
kElmoBasicSurface
= 0 (`surf' blocks only) |
|||||
| kElmoPictureSurface
= 1 (`surf' with `imag' subblock only) |
||||||
| kElmoCompositeSurface
= 2 (`csrf' blocks only) |
||||||
| 24 |
32 |
char
(ElmoPString) |
name |
The
surface name |
||
| 56 |
4 |
ElmoFloat32 |
diffusion |
Diffuse
reflection [0.0 to 1.0] |
||
| 60 |
4 |
ElmoFloat32 |
specularity |
Specular
highlight [0.0 to 1.0] |
||
| 64 |
4 |
ElmoFloat32 |
reflectivity |
Specular
reflection [0.0 to 1.0] |
||
| 68 |
4 |
ElmoFloat32 |
transmission |
Transparency
[0.0 to 1.0] |
||
| 72 |
4 |
ElmoFloat32 |
glow |
Glow
(ambient light) [0.0 to 1.0] |
||
| 76 |
4 |
ElmoFloat32 |
specularPower |
Shininess
[20 - 220] |
||
| 80 |
4 |
ElmoFloat32 |
indexOfRefraction |
Refraction
during transparency [0.5 to 5.5] |
||
| 84 |
4 |
ElmoFloat32 |
metallicity |
Metalicity
[0.0 to 1.0] |
||
| 88 |
4 |
ElmoFloat32 |
colorTransmission |
|||
| 92 |
2 |
ElmoMappingType |
mappingType |
One
of the following: |
||
| (an
ElmoUInt16) |
kElmoHomogeneousMap
= 0 |
|||||
| kElmoMandelbrotMap
= 1 |
||||||
| kElmoJuliaMap
= 2 |
||||||
| kElmoTileMap
= 3 |
||||||
| kElmoNoiseMap
= 4 |
||||||
| kElmoMarbleMap
= 5 |
||||||
| kElmoWoodMap
= 6 |
||||||
| kElmoImageMap
= 7 |
||||||
| kElmoNaturalWoodMap
= 8 |
||||||
| 94 |
2 |
ElmoBumpType |
bumpType |
One
of the following: |
||
| (an
ElmoUInt16) |
kElmoNoBump
= 0 |
|||||
| kElmoWaveBump
= 1 |
||||||
| kElmoNoiseBump
= 2 |
||||||
| kElmoCorrosionBump
= 3 |
||||||
| kElmoImageBump
= 4 |
||||||
| 96 |
4 |
ElmoTag |
mappingTag |
Tag
of subblock with color/image mapping data |
||
| 100 |
4 |
ElmoTag |
bumpTag |
Tag
of block with bump mapping data |
||
| 104 |
||||||
| Subbl. |
One
surface mapping sublock from the following list: rgb , tile, frct, nois, marb,
wood, natw, imag, and optionally one bump mapping subblock from this list:
nois, wave, imag. |
|||||
| Context |
An
elmo subblock, in a list of basic and composed surfaces started by the Scene
block's surfaceList tag. |
|||||
| Name |
'rgb
' |
RGB_Color_Elmo_Block |
kRGBColorElmoBlockType |
|||
| Desc. |
A
color specified as additive Red, Green, and Blue values from 0.0 to 1.0. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
12 |
ElmoRGBColor |
color |
|||
| 28 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
tile |
Tile_Param_Elmo_Block |
kTileElmoBlockType |
|||
| Desc. |
A
tile map. The tile colors are determined by the basic surface blocks referred
to below. The surfaces must be basic surfaces in the surface list; image maps
and composed surfaces can not be used. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
2 |
ElmoInt16 |
tilesPerX; |
|||
| 18 |
2 |
ElmoInt16 |
tilesPerY; |
|||
| 20 |
4 |
ElmoTag |
oddTileSurfaceTag; |
tag
of `surf' block for odd tiles. |
||
| 24 |
4 |
ElmoTag |
evenTileSurfaceTag; |
tag
of `surf' block for even tiles. |
||
| 28 |
1 |
ElmoBoolean |
isCheckerBoard; |
TRUE
or FALSE |
||
| 29 |
1 |
ElmoUInt8 |
pad1 |
Reserved,
set to 0. |
||
| 30 |
2 |
ElmoUInt8 |
pad2 |
Reserved,
set to 0. |
||
| 32 |
160 |
ElmoIntPoint2D[40] |
tile
points |
|||
| 192 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
frct |
Fractal_Param_Elmo_Block |
kFractalElmoBlockType |
|||
| Desc. |
Parameters
for a fractal surface |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
8 |
ElmoPoint2D |
seed |
|||
| 24 |
16 |
ElmoRect |
bound |
|||
| 40 |
2 |
ElmoUInt16 |
padding |
Reserved,
set to 0. |
||
| 42 |
2 |
ElmoInt16 |
maxIterations |
|||
| 44 |
28 |
ElmoColorTransition |
transition |
|||
| 72 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface or terrain subblock. |
|||||
| Name |
nois |
Noise_Param_Elmo_Block |
kNoiseElmoBlockType |
|||
| Desc. |
Noise
parameters for a surface |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
28 |
ElmoColorTransition |
transition |
|||
| 44 |
4 |
ElmoFloat32 |
density |
|||
| 48 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
marb |
Marble_Param_Elmo_Block |
kMarbleElmoBlockType |
|||
| Desc. |
A
marble map. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
16 |
ElmoVector4D |
weight |
|||
| 32 |
4 |
ElmoFloat32 |
magnitude |
|||
| 36 |
28 |
ElmoColorTransition |
transition |
|||
| 64 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
wood |
Wood_Param_Elmo_Block |
kWoodElmoBlockType |
|||
| Desc. |
An
original-style wood map. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
28 |
ElmoColorTransition |
transition |
The
two wood colors |
||
| 44 |
12 |
ElmoPoint3D |
scale |
Swirl,
Grain, Cut. |
||
| 56 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
natw |
Natural_Wood_Param_Elmo_Block |
kNaturalWoodElmoBlockType |
|||
| Desc. |
A
"Natural Wood" map. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
28 |
ElmoColorTransition |
transition |
The
two wood colors |
||
| 44 |
4 |
ElmoFloat32 |
angle |
|||
| 48 |
4 |
ElmoFloat32 |
centerOffset |
|||
| 52 |
4 |
ElmoFloat32 |
ringScale |
|||
| 56 |
4 |
ElmoFloat32 |
gnarl |
|||
| 60 |
4 |
ElmoFloat32 |
gnarlScale |
|||
| 64 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
wave |
Wave_Param_Elmo_Block |
kWaveElmoBlockType |
|||
| Desc. |
A
wave map. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoTag |
next |
Tag
of next wave block. |
||
| 20 |
12 |
ElmoPoint3D |
center |
|||
| 32 |
4 |
ElmoFloat32 |
amplitude |
|||
| 36 |
4 |
ElmoFloat32 |
frequency |
in
radians |
||
| 40 |
4 |
ElmoFloat32 |
phase |
in
radians |
||
| 44 |
4 |
ElmoFloat32 |
damp |
|||
| 48 |
4 |
ElmoFloat32 |
innerLimit |
in
radians. |
||
| 52 |
4 |
ElmoFloat32 |
outerLimit |
in
radians. |
||
| 56 |
4 |
ElmoFloat32 |
animRate |
positive
or negative. |
||
| 60 |
4 |
ElmoFloat32 |
initialPhase |
offset
for animating. |
||
| 64 |
||||||
| Subbl. |
none |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
imag |
Image_Param_Elmo_Block |
kImageElmoBlockType |
|||
| Desc. |
An
image map (picture). This is either a surface subblock (for an image surface),
or a |
|||||
| terrain
subblock (the terrain data). |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
32 |
char
(ElmoPString) |
fileName |
|||
| 48 |
2 |
ElmoInt16 |
vRefNum |
Macintosh
volume reference number |
||
| 50 |
2 |
ElmoInt16 |
id |
|||
| 52 |
4 |
ElmoInt32 |
parID |
Macintosh
parent directory ID. |
||
| 56 |
2 |
ElmoInt16 |
padding |
Reserved,
set to 0. |
||
| 58 |
2 |
ElmoUInt16 |
originalDepth |
Actual
image bit depth. |
||
| 60 |
2 |
ElmoUInt16 |
depth |
Bit
depth to promote or dither to in Infini-D. |
||
| 62 |
12 |
ElmoRGBColor |
color |
for
monochrome images. |
||
| 74 |
2 |
ElmoImageType |
type |
One
of the following: |
||
| (ElmoUInt16) |
kElmoNoPicture
= 0 |
|||||
| kElmoPICTPicture
= 1 |
||||||
| kElmoPICSPicture
= 2 |
||||||
| kElmoMOVIEPicture
= 3 |
||||||
| kElmoSCRAPPicture
= 4 |
||||||
| 76 |
1 |
ElmoBoolean |
hasAlpha |
Is
there an alpha channel? (for 32-bit images only). |
||
| 77 |
1 |
ElmoAlphaMode |
alphaMode |
One
of the following: |
||
| kElmoNoAlpha
= 0 |
||||||
|
|
kElmoStraightAlpha
= 1 |
|||||
|
|
kElmoMultipliedAlpha
= 2 |
|||||
| 78 |
1 |
ElmoFilterType |
filterType |
|||
| (ElmoUInt8) |
||||||
| 79 |
1 |
ElmoUInt8 |
padding2 |
Reserved,
set to 0. |
||
| 80 |
||||||
| Subbl. |
alis,
qtsp |
|||||
| Context |
A
basic surface subblock. |
|||||
| Name |
alis |
(no
block definition exists) |
kMacAliasElmoBlockType |
|||
| Desc. |
An
alias to a Macintosh file, using the Macintosh Toolbox "AliasRecord" type.
Used to refer to |
|||||
| a
file of image data. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
varies |
AliasRecord |
alias |
A
Macintosh file alias (private data). |
||
| Subbl. |
none |
|||||
| Context |
An
`imag' surface subblock. |
|||||
| Name |
qtsp |
QTSurf_Param_Elmo_Block |
kQTSurfParamElmoBlockType |
|||
| Desc. |
QuickTime
Surface Parameters for an Image block which contains a QuickTime movie. |
|||||
| a
file of image data. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoInt32 |
playRate |
(actually
a 16.16 fixed point number). |
||
| 20 |
4 |
ElmoInt32 |
movieStartTime |
|||
| 24 |
4 |
ElmoInt32 |
movieEndTime |
|||
| 28 |
4 |
ElmoFloat32 |
worldStartTime |
|||
| 32 |
4 |
ElmoInt32 |
leadInFrame |
|||
| 36 |
4 |
ElmoInt32 |
leadOutFrame |
|||
| 40 |
1 |
ElmoBoolean |
loop |
|||
| 41 |
1 |
ElmoBoolean |
padding |
Reserved,
set to 0. |
||
| 42 |
||||||
| Subbl. |
none |
|||||
| Context |
An
`imag' surface subblock. |
|||||
| Name |
lite |
Light_Elmo_Block |
kLightElmoBlockType |
|||
| Desc. |
A
light information block. A light is also an object, so this block also refers |
|||||
| to
a object block. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoTag |
next |
Tag
of next light in list |
||
| 20 |
2 |
ElmoUInt16 |
padding |
Reserved,
set to 0. |
||
| 22 |
2 |
ElmoUInt16 |
type |
One
of the following: |
||
| point_light
= 0 |
||||||
|
|
sun_light
= 1 |
|||||
|
|
spot_light
= 2 |
|||||
| 24 |
4 |
ElmoTag |
lightObject |
Tag
of the associated object |
||
| current |
Light_Info_Elmo_Struct
data follows: |
|||||
| 28 |
12 |
ElmoRGBColor |
color |
|||
| 40 |
12 |
ElmoPoint3D |
position |
|||
| 52 |
12 |
ElmoVector3D |
direction |
direction
of light; normalized and perpendicular to "up_vector" |
||
| 64 |
12 |
ElmoVector3D |
up_vector |
normalized
and perpendicular to "direction" |
||
| 76 |
4 |
ElmoFloat32 |
distanceFallOffStart |
|||
| 80 |
4 |
ElmoFloat32 |
distanceFallOffEnd |
|||
| 84 |
4 |
ElmoFloat32 |
distanceFallOffExponent |
Always
set to 2.0 |
||
| 88 |
4 |
ElmoFloat32 |
innerAngle |
|||
| 92 |
4 |
ElmoFloat32 |
outerAngle |
|||
| 96 |
4 |
ElmoFloat32 |
angleDropExponent |
|||
| 100 |
4 |
ElmoFloat32 |
innerAngleCosine |
Cosine
of "innerAngle" |
||
| 104 |
4 |
ElmoFloat32 |
outerAngleCosine |
Cosine
of "outerAngle" |
||
| 108 |
4 |
ElmoFloat32 |
intensityScaler |
|||
| 112 |
4 |
ElmoTag |
gelSurfaceTag |
Tag
of surface block in surface list. |
||
| 116 |
4 |
ElmoTag |
maskSurfaceTag |
Tag
of surface block in surface list. |
||
| 120 |
2 |
ElmoUInt16 |
padding1 |
Reserved,
set to 0. |
||
| 122 |
1 |
ElmoUInt8 |
padding2 |
Reserved,
set to 0. |
||
| 123 |
1 |
ElmoBoolean |
castsShadows |
|||
| 124 |
||||||
| Subbl. |
lnsf |
|||||
| Context |
An
elmo subblock, in a list of light blocks started by the Scene block's lightList
tag. |
|||||
| Name |
lnsf |
Lens_flare_Elmo_Block |
kLensFlareElmoBlockType |
|||
| Desc. |
Lens-flare
data for a light. The animatable width=100% lens-flare data is stored in a lens-flare
event block (`lfev'). |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
1 |
ElmoBoolean |
enabled |
Does
this light have a lens-flare? |
||
| 17 |
1 |
ElmoBoolean |
usesIntensity |
|||
| 18 |
1 |
ElmoBoolean |
usesColor |
|||
| 19 |
1 |
ElmoBoolean |
enableObfuscation |
|||
| 20 |
||||||
| Subbl. |
none |
|||||
| Context |
A
`lite' subblock. Used by Infini-D 3.5 or greater. |
|||||
| Name |
obj |
Object_Elmo_Block |
kObjectElmoBlockType |
|||
| Desc. |
A
single object. EventMarks, terrain & model data are sub-blocks. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
2 |
ElmoUInt16 |
objectType |
One
of the following: |
||
| k_sphere
= 0 |
||||||
| k_square
= 1 |
||||||
| k_plane
= 2 |
||||||
| k_cube
= 3 |
||||||
| k_cylinder
= 4 |
||||||
| k_cone
= 5 |
||||||
| k_CSG_object
= 6 |
||||||
| k_extrude
= 7 |
||||||
| k_lathe
= 8 |
||||||
| k_terrain
= 9 (has 'terr' subblock) |
||||||
| k_torus
= 10 |
||||||
| k_bicubic_patch
= 11 |
||||||
| k_light
= 12 |
||||||
| k_camera
= 13 |
||||||
| k_freeform
= 14 |
||||||
| k_mesh
= 15 (has 'modl' subblock) |
||||||
| k_font
= 16 (Infini-D 2.6 and earlier polygonal text) |
||||||
| k_pathpro
= 17 (SplineForm object) |
||||||
| k_pathpro_font
= 18 (SplineForm text) |
||||||
| 18 |
1 |
ElmoUInt8 |
renderMode |
One
of the following: |
||
| k_at_setting
= 0 |
||||||
| k_wireframe
= 1 |
||||||
| k_hidden_line
= 2 |
||||||
| k_shade_fast
= 3 |
||||||
| k_shade_better
= 4 |
||||||
| k_shade_best
= 5 |
||||||
| 19 |
1 |
ElmoUInt8 |
options |
8
option flags using the following bit masks: |
||
| kElmoObjOptVisible
= 0x01 |
||||||
| kElmoObjOptForceBackFaces
= 0x02 |
||||||
| kElmoObjOptNoShadows
= 0x04 |
||||||
| kElmoObjOptCubeObject
= 0x08 ("bbox only") |
||||||
| kElmoObjOptCubeTree
= 0x10 ("fast tree") |
||||||
| kElmoObjOptHiddenFromInterface
= 0x20 (2nd-Nth characters) |
||||||
| kElmoObjOptHeadOfGroup
= 0x40 (1st text character) |
||||||
| kElmoObjOptVisibleMotionPath
= 0x80 |
||||||
| 20 |
4 |
ElmoTag |
parentTag |
Tag
of parent object |
||
| 24 |
4 |
ElmoTag |
siblingTag |
Tag
of sibling object |
||
| 28 |
4 |
ElmoTag |
childTag |
Tag
of child object |
||
| 32 |
32 |
char
(ElmoPString) |
name |
Object
name |
||
| 64 |
28 |
ElmoConstraint3D |
constraint.rotation |
Rotation
constraints |
||
| 92 |
28 |
ElmoConstraint3D |
constraint.position |
Position
constraints |
||
| 120 |
28 |
ElmoConstraint3D |
constraint.scale |
Scale
constraints |
||
| 148 |
72 |
ElmoAffine |
currentAffine |
Affine
transformation parameters |
||
| 220 |
4 |
ElmoTag |
surfaceTag |
Tag
of surface used for this object, or "useParentSurfaceTag" value of scene block. |
||
| 224 |
4 |
ElmoTag |
eventListTag |
Tag
of events for this object ('evtm' sublock). |
||
| 228 |
1 |
ElmoBoolean |
collapsed |
Are
the object's children hidden in the sequencer window? |
||
| 229 |
1 |
ElmoUInt8 |
patchBreakupMode |
Patch
breakup mode constants: |
||
| k_patch_at_setting
= 0 |
||||||
| k_patch_low
= 1 |
||||||
| k_patch_medium
= 2 |
||||||
| k_patch_high
= 3 |
||||||
| 230 |
2 |
ElmoUInt16 |
pad1 |
Reserved,
set to 0. |
||
| 232 |
4 |
ElmoTag |
extraInfoTag |
Tag
of subblock with data specific to the object-type. k_light: `lite' block in
light list, k_camera: `view' block in view list, k_mesh: `modl' subblock,
k_terrain: `terr' subblock. |
||
| 236 |
||||||
| Subbl. |
One
obx1 subblock, one eventListTag sublock of type 'evtm', plus an extraInfoTag
subblock (depending on the "type" parameter) of type: terr or modl. |
|||||
| Context |
An
Elmo subblock, in a tree of Object blocks started by the Scene block's
objectTree tag. |
|||||
| Name |
obx1 |
Lens_flare_Elmo_Block |
kObjX1ElmoBlockType |
|||
| Desc. |
Extended
object data for Infini-D 3.5 or greater. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
1 |
ElmoUInt8 |
CSG_mode |
Constructive
Solid Geometry mode: |
||
| k_CSG_union
= 0 |
||||||
| k_CSG_intersection
= 1 |
||||||
| k_CSG_difference
= 2 |
||||||
| 17 |
1 |
ElmoUInt8 |
padding |
Reserved,
set to 0. |
||
| 18 |
1 |
ElmoBoolean |
trace_as_spline |
|||
| 19 |
1 |
ElmoBoolean |
shadow_catcher |
|||
| 20 |
||||||
| Subbl. |
none |
|||||
| Context |
An
`obj ' subblock. Used by Infini-D 3.5 or greater. |
|||||
| Name |
terr |
Terrain_Elmo_Block |
kTerrainElmoBlockType |
|||
| Desc. |
A
terrain info block for terrain objects. For image and fractal terrains, the
appropriate |
|||||
| mapping
data is stored in a sub-block. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
2 |
ElmoUInt16 |
type |
The
terrain type: |
||
| JULIA_IN_MANDEL_FN
= 0 ('frct' subblock) |
||||||
| SQUARE_FN
= 1 (no subblock) |
||||||
| RIPPLE_FN
= 2 (no subblock) |
||||||
| BLACK_HOLE_FN
= 3 (no subblock) |
||||||
| STARR_FN
= 4 (no subblock) |
||||||
| BUMPS_FN
= 5 (no subblock) |
||||||
| (reserved)
= 6 |
||||||
| NOISE_FN
= 7 ('nois' subblock) |
||||||
| MANDEL_FN
= 8 ('frct' subblock) |
||||||
| JULIA_FN
= 9 ('frct' subblock) |
||||||
| IMAGE_FN
= 10 ('imag' subblock) |
||||||
| 18 |
2 |
ElmoUInt16 |
gridSize |
Size
of terrain grid (e.g. 10 = 10 by 10) |
||
| 20 |
1 |
ElmoBoolean |
matching |
Apply
matching surface? |
||
| 21 |
1 |
ElmoBoolean |
cliffs |
|||
| 22 |
2 |
ElmoUInt16 |
pad |
Reserved,
set to 0. |
||
| 24 |
4 |
ElmoTag |
mapTag |
Tag
of terrain map subblock, if any. |
||
| 28 |
||||||
| Subbl. |
one
nois, frct, or imag subblock, depending on the terrain type. |
|||||
| Context |
An
object subblock. |
|||||
| Name |
modl |
Model_Elmo_Block |
kModelElmoBlockType |
|||
| Desc. |
A
surface model block for polygon mesh objects. The vertex, face, and edge lists
are |
|||||
| sub-blocks. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
1 |
ElmoBoolean |
drawBackfaces |
|||
| 17 |
1 |
ElmoBoolean |
firstFaceForWireframeOnly |
|||
| 18 |
1 |
ElmoBoolean |
hasFrontCap |
Unused,
set to FALSE. |
||
| 19 |
1 |
ElmoBoolean |
hasBackCap |
Unused,
set to FALSE. |
||
| 20 |
4 |
ElmoModelIndex |
vertexCount |
Number
of verticies in vertex list |
||
| 24 |
4 |
ElmoTag |
vertexListTag |
Tag
of vertex list block |
||
| 28 |
4 |
ElmoModelIndex |
edgeCount |
Number
of edges in edge list |
||
| 32 |
4 |
ElmoTag |
edgeListTag |
Tag
of edge list subblock |
||
| 36 |
4 |
ElmoModelIndex |
faceCount |
Number
of faces in face list |
||
| 40 |
4 |
ElmoTag |
faceListTag |
Tag
of face list subblock |
||
| 44 |
||||||
| Subbl. |
3
subblocks, one of each type: verl, edgl, facl |
|||||
| Context |
An
object subblock. |
|||||
| Name |
verl |
Vertex_List_Elmo_Block |
kVertexListElmoBlockType |
|||
| Desc. |
A
vertex list. A vertex is a 3D point on a polygonal model, using scene
coordinates. Two verticies make an edge, and 3 |
|||||
| or
more edges make a polygon face. |
||||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoModelIndex |
vertexCount |
number
of verticies to follow |
||
| 20 |
12 |
ElmoPoint3D |
vertexList[0] |
First
vertex |
||
| 32 |
12 |
ElmoPoint3D |
vertexList[1] |
Second
vertex |
||
| 44 |
12 |
ElmoPoint3D |
vertexList[2] |
Third
vertex |
||
| ... |
... |
... |
... |
... |
||
| Subbl. |
none |
|||||
| Context |
A
Model subblock |
|||||
| Name |
edgl |
Edge_List_Elmo_Block |
kEdgeListElmoBlockType |
|||
| Desc. |
A
list of edges. An edge is a 3D line segment defined by its two endpoint
verticies. The vertex indexes in each edge are zero-origin (0, 1, 2, ...).
Three or more edges, listed in counter-clockwise order, make a polygon face. |
|||||
| Content |
Offset |
Size |
Type |
Name |
Description
and cases |
|
| 0 |
16 |
ElmoBlockHeader |
header |
|||
| 16 |
4 |
ElmoModelIndex |
edgeCount |
number
of edges to follow |
||
| 20 |
8 |
ElmoEdge |
edgeList[0] |
First
edge (index of vertex 1, index of vertex 2) |
||
| 28 |
8 |
ElmoEdge |
edgeList[1] |
Second
edge |
||
| 36 |
8 |
ElmoEdge |
edgeList[2] |
Third
edge |
||
| ... |
... |
... |
... |
... |
||
| Subbl. |