The Infini-D File Format

For Infini-D versions 3.0--3.5, Specular R&D
September 6, 1996
Converted by Paul Bourke


Introduction

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.

About the Elmo Block Structure.

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.

A Single Elmo Block

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

Block Type Summary - In order of occurrence

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

Block Type Summary - Alphabetical

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

Scene file structure.

Blocks types are listed in the order they usually appear in a scene file. Each level of indentation below indicates that the block type is a subblock of the block above.

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.









Object Library file structure

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









Version History

Infini-D version 3.0 was released in August 1995. This was the first version of Infini-D to used a published file format.

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.

Data Types.

Integers are ordered with the most-significant byte first (big-endian), as is typical with Mactinosh data. All floating-point values are in standard IEEE format.

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)

Block Reference.

Blocks types are listed in the same order as the "Block Type Summary" table width=100%, which has page references. The meaning of the table width=100% entries is as follows:

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.
none





Context
A Model subblock



















Name
facl

Face_List_Elmo_Block

kFaceListElmoBlockType

Desc.
A list of faces (the polygons) of a polygonal model. Each face has list of edges, and each edge has list of verticies (3D points). Care should be taken to list edges of a face in counter-clockwise order (viewed from the outside), and to have neighboring faces correspond to edges where applicable - see ElmoFace in the Data Structures section.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoModelIndex
faceCount
number of faces to follow


20
38
ElmoFace
faceList[0]
First face


58
38
ElmoFace
faceList[1]
Second face


96
38
ElmoFace
faceList[2]
Third face


...
...
...
...
...

Subbl.
2 x (number of faces with 5 or more edges) subblocks of type: indl





Context
A Model subblock



















Name
indl

Index_List_Elmo_Block

kIndexListElmoBlockType

Desc.
A list of model indices. The indexes are of edges or neighboring faces, depending on the context, and are zero-origin (0, 1, 2, ...). If the indicies are of neighboring faces, use the constant `K_no_neighboring_face' to indicate missing data - see ElmoFace in the Data Structures section.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoModelIndex
indexCount
number of indexes to follow


20
4
ElmoModelIndex
indexList[0]
first index


24
4
ElmoModelIndex
indexList[1]
second index


28
4
ElmoModelIndex
indexList[2]
third index


...
...
...
...
...

Subbl.
none





Context
A face subblock, 2 index for each face that has 5 or more edges.



















Name
evtm

EventMark_Elmo_Block

kEventMarkElmoBlockType

Desc.
An event mark for an object. Event marks are formed as a linked list of






object subblocks.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
next
Next event mark for object.


20
4
ElmoTag
previous
Previous event mark for object.


24
4
ElmoFloat32
time
Time of this event, in seconds ("world time").


28
2
ElmoUInt16
objectType
Same as object types of Object block.


30
1
ElmoBoolean
dont_render
Is this a "death" event?

31
1
ElmoBoolean
sameAsPrevious
Is this a "null" event?

32
2
ElmoInt16
easeIn
Ignored for Infini-D 3.0

34
2
ElmoInt16
easeOut
Ignored for Infini-D 3.0


The following fields represent the values that the user can change at an eventmark. If a field is kNotAnElmoTag, the






corresponding parameter isn't fixed at this eventmark. Otherwise, it is the tag of a structure that contains the value of






the corresponding parameter at this event, and info on how to interpolate from that value to the appropriate values at






later times





36
4
ElmoTag
positionTag
Tag of a 'afev' subblock, or zero.


40
4
ElmoTag
rotationTag
Tag of a 'rfev' subblock, or zero.


44
4
ElmoTag
scaleTag
Tag of a 'afev' subblock, or zero.


48
4
ElmoTag
offsetTag
Tag of a 'afev' subblock, or zero.


52
4
ElmoTag
uniformScaleTag
Tag of a 'afev' subblock, or zero.


56
4
ElmoTag
surfaceTag
Tag of a 'sfev' subblock, or zero.


60
4
ElmoTag
objectInfoTag
Zero or the tag of a subblock of type: olev, ppev,


64



ptev, txev, liev, caev, or trev.

Subbl.
afev, raev, sfev, olev, txev, ptev, liev, caev, trev, ppev





Context
An 'obj ' subblock














Event type constants:







kAllEventMarkTypes = 0






kPositionEvent = 2






kRotationEvent = 3






kScaleEvent = 4






kOffsetEvent = 5






kUniformScaleEvent = 6






kSurfaceEvent = 7






kObjectInfoEvent = 8












Event flags bit fields:







kEventMark_Spline = 0x0001 (Set if spline-based event interpolation)






kEventMark_Mixed = 0x0002 (For meta-eventmarks that have some parameters that are spline and some that aren't.










Name
afev

AffineEvent_Elmo_Block

kAffineEventElmoBlockType

Desc.
An Affine transformation event.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoFloat32
v_in
Velocity in - initially 0.

28
4
ElmoFloat32
v_out
Velocity out - initially 0.

32
4
ElmoFloat32
a_in
Acceleration in - initially 0.

36
4
ElmoFloat32
a_out
Acceleration in - initially 0.

40
4
ElmoFloat32
arclength


44
4
ElmoFloat32
tension
Arc parameter [-1.0 to 1.0]

48
4
ElmoFloat32
continuity
Arc parameter [-1.0 to 1.0]

52
4
ElmoFloat32
bias
Arc parameter [-1.0 to 1.0]

56
12
ElmoVector3D
value
Position, scale, uniform scale, or offset value, depending on "paramType"

68
1
ElmoBoolean
vlock


69
1
ElmoUInt8
padding3
Reserved, set to 0.

70
2
ElmoUInt16
padding4
Reserved, set to 0.

72





Subbl.
none





Context
An 'evtm' subblock referred to by: positionTag, scaleTag, offsetTag, or uniformScaleTag.



















Name
raev

RotAffineEvent_Elmo_Block

kRotAffineEventElmoBlockType

Desc.
A rotation "Affine" event.





Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoFloat32
v_in
Velocity in - initially 0.

28
4
ElmoFloat32
v_out
Velocity out - initially 0.

32
4
ElmoFloat32
a_in
Acceleration in - initially 0.

36
4
ElmoFloat32
a_out
Acceleration in - initially 0.

40
4
ElmoFloat32
arclength


44
4
ElmoFloat32
tension
Arc parameter [-1.0 to 1.0]

48
4
ElmoFloat32
continuity
Arc parameter [-1.0 to 1.0]

52
4
ElmoFloat32
bias
Arc parameter [-1.0 to 1.0]

56
12
ElmoVector3D
value
X, Y, Z rotation at the event (0, 0, 0 = no rotation).

68
1
ElmoBoolean
vlock


69
1
ElmoUInt8
padding3
Reserved, set to 0.

70
2
ElmoUInt16
padding4
Reserved, set to 0.

72
16
ElmoQuaternion
qval
Quaternion rotation value (1, 0, 0, 0 = no rotation).


88





Subbl.
none





Context
An 'evtm' subblock



















Name
sfev

SurfaceEvent_Elmo_Block

kSurfaceEventElmoBlockType

Desc.
A surface event.





Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
metaSurfaceTag
Tag of `surf' or `csrf' block, or scene's "useParentSurfaceTag" value.

28





Subbl.
none





Context
An 'evtm' subblock



















Name
olev

OutlineObjectEvent_Elmo_Block

kOutlineObjEventElmoBlockType

Desc.
An Outline Object event.





Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
outlineTag
Tag of `outl' block.

28





Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
txev

TextObjectEvent_Elmo_Block

kTextObjEventElmoBlockType

Desc.
Information about a text object's parameters at a given eventmark.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
outlineTag



28
varies
ElmoPString
textLength
A length byte followed by 0-255


varies



characters of text.

Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
liev

LightObjectEvent_Elmo_Block

kLightObjEventElmoBlockType

Desc.
Information about a light object's parameters at a given eventmark.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
12
ElmoRGBColor
color



36
4
ElmoFloat32
distanceFallOffStart



40
4
ElmoFloat32
distanceFallOffEnd



44
4
ElmoFloat32
distanceFallOffExponent



48
4
ElmoFloat32
innerAngle
0 - [pi] radians (0 - 180 degrees).

52
4
ElmoFloat32
outerAngle
0 - [pi] radians; must be larger than innerAngle.

56
4
ElmoFloat32
angleDropExponent


60
4
ElmoFloat32
innerAngleCosine


64
4
ElmoFloat32
outerAngleCosine


68
4
ElmoFloat32
intensityScaler



72





Subbl.
One lens-flare event subblock `lfev', for Infini-D 3.5 or greater.
Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
lfev

Lens_flare_Event_Elmo_Block
kLensFlareEvtElmoBlockType
Desc.
Lens flare event data.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
1
ElmoInt8
haloKind



17
1
ElmoInt8
streakKind



18
1
ElmoInt8
reflectionKind



19
1
ElmoInt8
padding1
Reserved, set to 0.


20
4
ElmoRGBInt8Color
strkRGB



24
4
ElmoRGBInt8Color
haloRGB



28
4
ElmoRGBInt8Color
lightRGB



32
4
ElmoRGBInt8Color
sourceRGB



36
4
ElmoRGBInt8Color
innerRGB



40
4
ElmoRGBInt8Color
outerRGB



44
4
ElmoRGBInt8Color
ringTintRGB



48
4
ElmoFloat32
brightness



52
4
ElmoFloat32
aspectRatio



56
4
ElmoFloat32
lightIntensity



60
4
ElmoFloat32
lightScale



64
4
ElmoFloat32
haloIntensity



68
4
ElmoFloat32
haloScale



72
4
ElmoFloat32
reflectionIntensity



76
4
ElmoFloat32
reflectionScale



80
4
ElmoFloat32
strkIntensity



84
4
ElmoFloat32
strkScale



88
4
ElmoFloat32
strkRotation



92
4
ElmoFloat32
strkAngleDelta



96
4
ElmoFloat32
strkClumpAngle



100
1
ElmoBoolean
doLightColor



101
1
ElmoBoolean
doSourceGlow



102
1
ElmoBoolean
doInnerGlow



103
1
ElmoBoolean
doOuterGlow



104
1
ElmoBoolean
doRingTint



105
1
ElmoBoolean
doGreenSpot



106





Subbl.
none





Context
An `liev' subblock. Used by Infini-D 3.5 or greater.



















Name
caev

CameraObjectEvent_Elmo_Block

kCameraObjEventElmoBlockType

Desc.
Information about a camera object's parameters at a given eventmark.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoFloat32
lensSize



28





Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
trev

TerrainObjectEvent_Elmo_Block

kTerrainObjEventElmoBlockType

Desc.
Information about a terrain object's parameters at a given eventmark.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
fractalTag
Tag of a 'frct' sub-block.


28





Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
ppev

PathProObjectEvent_Elmo_Block

kPathProObjEventElmoBlockType

Desc.
Information about a path-profile object's parameters at a given eventmark.






The associated path model is written as a sub-block.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
pathModelTag
Tag of a 'pmdl' sub-block.


28





Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
ptev

PathProTextObjectEvent_Elmo_Block

kPProTextObjEventElmoBlockType

Desc.
Information about a path-profile object's parameters at a given eventmark.






The associated path model is written as a sub-block.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoInt16
paramType
Event type (see Evtm block)


18
2
ElmoUInt16
flags
Flags (see Evtm block)


20
1
ElmoBoolean
sameAsPrevious
TRUE if this is a "null" event.

21
1
ElmoUInt8
padding1
Reserved, set to 0.

22
2
ElmoUInt16
padding2
Reserved, set to 0.

24
4
ElmoTag
pathModelTag
Tag of a 'pmdl' sub-block.


28
varies
ElmoPString
textLength
A length byte followed by 0-255 characters of text.


varies





Subbl.
none





Context
An 'evtm' subblock referred to by its objectInfoTag parameter.



















Name
pmdl

PathModel_Elmo_Block

kPathModelElmoBlockType

Desc.
A "path model" object (a.k.a. SplineForm or Path Cross-Section model).












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
pathProTag
Tag of the pathpro subblock (3D data subblock)


20
12
ElmoPoint3D
rotation
Object viewing angle (rotation in X, Y, Z away from top view.)


32
4
ElmoFloat32
flatness
Object view - patch breakup flatness tolerance (default: 0.0)


36
2
ElmoUInt16
padding
Reserved, set to 0.

38
2
ElmoInt16
fineness
Object view subpatch fineness.







kLowDetail = 0






kMedDetail = 2






kHighDetail = 4

40





Subbl.
One ppro sublock





Context
A ppev or ptev subblock.



















Name
ppro

PathPro_Elmo_Block

kPathProElmoBlockType

Desc.
The 3D geometry of a Path-Profile object, a.k.a. SplineForm or Path-Cross Section object.






These blocks are variable sized, since the profile2DTags array does not have a pre-set size.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoUInt32
flags
Rendering subclass flags







general object = 0






k_pathpro_is_extrude = 1






k_pathpro_is_lathe = 2

20
4
ElmoUInt32
layoutID
Workshop layout to use







Lathe1 = 0x0100 (hex values)






Lathe2 = 0x1100






Extrude1 = 0x2100






Extrude2 = 0x3100






FreeFormVert = 0x4100






FreeFormHor = 0x5100

24
4
ElmoFloat32
marker
Marker position on path


28
4
ElmoFloat32
pixelsPerUnit
E.g. 72 (pixels per inch)

32
1
ElmoBoolean
pathActive
Is the path active in the workshop?

33
1
ElmoBoolean
railsActive
Are the rails active in the workshop?

34
1
ElmoBoolean
showTwist
Show twist in the workshop?


35
1
ElmoBoolean
capFront
Cap the object at start of path?


36
1
ElmoBoolean
capBack
Cap the object at end of path?


37
1
ElmoUInt8
orientMode
Flat or Pipeline mode?







kParallelProfiles = 0 (Flat)






kPipedProfiles = 1 (Pipeline)

38
1
ElmoUInt8
mirrorMode
Rail mirroring mode







kMirrorNone = 0






kMirror2Way = 1






kMirror4Way = 2

39
1
ElmoUInt8
majorAxis
Axis used to grow/shrink/replace path.







kXAxis = 0






kYAxis = 1






kZAxis = 2 (default)

40
1
ElmoInt8
bevelType
One of the following:







k_bevel_none=0






k_bevel_straight=1






k_bevel_double=2






k_bevel_convex=3






k_bevel_concave=4






k_bevel_step=5






k_bevel_double_step=6






k_bevel_interpolated =-1

41
1
ElmoBoolean
hasBackBevel


42
2
ElmoInt16
scaleUnits


44
4
ElmoFloat32
bevelSize
Size of bevel [0 - 1]

48
4
ElmoFloat32
bevelDepth
Depth of bevel [0 - 1]

52
20
ElmoTag
curveTags [5]
tags of 3D spline sub-blocks. Index values are:







kPath = 0 (path : spine curve of object)






kRail_xpos = 1 (positive x-axis rail)






kRail_xneg = 2 (negative x-axis rail)






kRail_ypos = 3 (positive y-axis rail)






kRail_yneg = 4 (negative y-axis rail)








72
4
ElmoUInt32
profile2DCount
number of Profile2D subblocks


76
4
ElmoTag
profile2DTag[0]
Tag of 1st profile (required)


80
4
ElmoTag
profile2DTag[1]
Tag of 2nd profile (if exists)


84
4
ElmoTag
profile2DTag[2]
Tag of 3rd profile (if exists)


...
...
...
...
...

Subbl.
Five 'ol3d' blocks, 1 or more 'pf2d' blocks





Context
A pmdl subblock.



















Name
pf2d

Profile2D_Elmo_Block

kProfile2DElmoBlockType

Desc.
A "Profile 2D", a.k.a. Cross-Section of a SplineForm object. This is a block with a variable size list of 2D outlines, each of which is a 2D cubic bezier spline. The outlines are stored as subblocks.





Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoUInt32
pathIndex
Location of profile: Index of node on path.


20
12
ElmoVector3D
planeNormal
Normal vector for profile plane (any non-zero length).


32
12
ElmoVector3D
planeUp
Up vector (3D orientation of Y-axis) for profile plane.


44
4
ElmoFloat32
twist
Profile twist







none = 0.0

48
4
ElmoFloat32
xTilt
Tilt on profile's x-axis (in radians)







none = 0.0

52
4
ElmoFloat32
yTilt
Tilt on profile's y-axis (in radians)







none = 0.0

56
4
ElmoUInt32
outlineCount
Number of outline subblocks.


60
4
ElmoTag
outlineTag[0]
Tag of the 1st outline subblock.


64
4
ElmoTag
outlineTag[1]
Tag of the 2nd outline subblock.


68
4
ElmoTag
outlineTag[2]
Tag of the 3rd outline subblock.


...
...
...
...
...

Subbl.
One or more 'ol2d' blocks





Context
A ppro subblock. There is one pf2d subblock for each cross-section of an object.



















Name
ol3d

Outline3D_Elmo_Block

kOutline3DElmoBlockType

Desc.
A 3D "outline", which is a cubic Bezier spline. Every node on the spline straddles two cubic Bezier curves, or is the end of one spline if at the start or end of an open spline.

Each Bezier curve is defined by four 3D points of the nodes: (1) the position of the 1st node, (2) the right control of the 1st node, (3) the left control of the 2nd node, and (4) the position of the 2nd node.

This is a variable-sized block.






Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoUInt16
padding1
Reserved, set to 0.

18
1
ElmoUInt8
padding2
Reserved, set to 0.

19
1
ElmoBoolean
closed
TRUE if spline is closed.


20
4
ElmoUInt32
numberOfPoints
number of point node structures to follow


24
40
PtNode3D_Elmo_Struct
node[0]
First point node (required)


64
40
PtNode3D_Elmo_Struct
node[1]
Second point node (required)


104
40
PtNode3D_Elmo_Struct
node[2]
Third point node (optional)


...
...
...
...
...

Subbl.
none





Context
A ppro subblock. There are 5 ol3d subblocks for each ppro.



















Name
ol2d

Outline2D_Elmo_Block

kOutline2DElmoBlockType

Desc.
A 2D "outline", which is a cubic Bezier spline. Every node on the spline straddles two cubic Bezier curves, or is the end of one spline if at the start or end of an open spline.

Each Bezier curve is defined by four 2D points of the nodes: (1) the position of the 1st node, (2) the right control of the 1st node, (3) the left control of the 2nd node, and (4) the position of the 2nd node.

This is a variable-sized block.






Content

Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoFloat32
thickness
Spline thickness in pixels







default = 1.0

20
6
ElmoRGBIntColor
color
Spline color


26
2
ElmoUInt16
padding1
Reserved, set to 0.

28
1
ElmoUInt8
padding2
Reserved, set to 0.

29
1
ElmoBoolean
closed
TRUE if spline is closed.


30
4
ElmoUInt32
numberOfPoints
number of point node structures to follow


34
28
PtNode2D_Elmo_Struct
node[0]
First point node (required)


62
28
PtNode2D_Elmo_Struct
node[1]
Second point node (required)


90
28
PtNode2D_Elmo_Struct
node[2]
Third point node (optional)


...
...
...
...
...

Subbl.
none





Context
A pf2d subblock. There is one ol2d subblock for each curve in a cross-section.



















Name
envv

Env_Var_Elmo_Block

kEnvironmentVarElmoBlockType

Desc.
An environment variables block. Contains the scene's environment data.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
12
ElmoRGBColor
ambientLight



28
12
ElmoRGBColor
backgroundColor



40
4
ElmoTag
backgroundImageTag
Tag of a surface block in the surface list.


44
2
ElmoUInt16
padding1



46
2
ElmoBGAlignment
backgroundAlignment
One of the following:




(ElmoUInt16)


kElmoAlignWithCenter = 1






kElmoAlignWithUpperLeft = 2






kElmoScaleToFit = 3

48
4
ElmoTag
environmentTag
Tag of a surface block in the surface list.

52
2
ElmoUInt16
padding2


54
1
ElmoUInt8
padding3


55
1
ElmoBoolean
doFog


56
4
ElmoFloat32
fogStart


60
4
ElmoFloat32
fogEnd
fogEnd must be greater than fogStart.

64




Subbl.
none





Context
An elmo subblock, one per scene file.



















Name
seqv

SequenceVars_Elmo_Block

kSequenceVarsElmoBlockType

Desc.
A sequence variables block. Contains data about the scene's animation settings, including output options.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoFloat32
worldTime
Current time, in seconds.


20
2
ElmoUInt16
fileLimit
limit of Pics file size, in kilobytes.

22
2
ElmoUInt16
animateFrom


24
2
ElmoUInt16
outputAs


26
1
ElmoBoolean
rayTraceFrames
Ray-trace frames while spooling?

27
1
ElmoBoolean
cropFrames
Crop frames while spooling?

28
4
ElmoFloat32
beginningOfAnimation
"punch-in" time, in seconds.

32
4
ElmoFloat32
endOfAnimation
"punch-out" time, in seconds.

36
2
ElmoUInt16
bitDepth
Bit depth of Quicktime movie.

38
2
ElmoUInt16
framesPerSecond
Frames per second, e.g. 30

40
4
ElmoFloat32
snapshotIncrement
Snap shot increment, in seconds. E.g. 0.5

44
4
ElmoFloat32
spoolBeginTime
In seconds.


48
4
ElmoFloat32
spoolEndTime
In seconds.


52
4
CodecType
codecType
Mac-specific image compression data.


56
4
CodecComponent
compressor
Mac-specific image compression data.


60
4
CodecQ
spatialQuality
Mac-specific image compression data.


64





Subbl.
none





Context
An elmo subblock, one per scene file.



















Name
bkmk

BookMark_Elmo_Block

kBookMarkElmoBlockType

Desc.
A camera bookmark for views.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
next
Tag of next bookmark in list.


20
32
char (ElmoPString)
name



52
1
ElmoBoolean
padding



53
1
ElmoUInt8
viewType
One of the following:







TOP_view = 1






FRONT_view = 2






RIGHT_view = 3






BOTTOM_view = 4






BACK_view = 5






LEFT_view = 6






CAMERA_view = 7

54
1
ElmoBoolean
cantKill



55
1
ElmoBoolean
defaultBM





Movie_Camera_Elmo_Struct

"theCam" elements:


56
2
ElmoUInt16
theCam.padding
Reserved, set to 0.


58
2
ElmoInt16
theCam.type



60
12
ElmoPoint3D
theCam.position



72
12
ElmoVector3D
theCam.rotation



84
4
ElmoFloat32
theCam.lensSize



88
4
ElmoFloat32
theCam.eyeDistance



92
4
ElmoFloat32
theCam.orthoWindowSize



96





Subbl.
none





Context
An elmo subblock, in a list of bookmarks started by the Scene block's bookMarkList tag.



















Name
view

View_Elmo_Block

kViewElmoBlockType

Desc.
A view structure.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
next
Tag of next view block in list.


20
2
ElmoUInt16
windowKind



22
2
ElmoUInt16
viewType
One of the following:







TOP_view = 1






FRONT_view = 2






RIGHT_view = 3






BOTTOM_view = 4






BACK_view = 5






LEFT_view = 6






CAMERA_view = 7

24
32
char (ElmoPString)
name





View_Options_Elmo_Struct

"viewingOptions" elements:


56
1
ElmoUInt8
mode
View rendering mode:






K_view_fast_wireframe = 0 (wireframe, really)






K_view_wireframe = 1 (bounding box, really)






K_view_hidden_line = 2 (reserved)






K_view_shade_fast = 3






K_view_shade_better = 4






K_view_shade_best = 5






K_view_ray_trace = 6

57
1
ElmoUInt8
offscreenDepth
View bit depth:






K_automatic_depth = 0






K_1_bit = 1






K_2_bit = 2






K_4_bit = 3






K_8_bit = 4






K_16_bit = 5






K_32_bit = 6

58
1
ElmoBoolean
doShadow


59
1
ElmoBoolean
doReflection


60
1
ElmoBoolean
doRefraction


61
1
ElmoBoolean
doSuperSampling


62
1
ElmoBoolean
doDither


63
1
ElmoBoolean
displayBackdrop


64
1
ElmoBoolean
forceVisibleWireframe



65
1
ElmoBoolean
showInvisibleObjects



66
1
ElmoUInt8
tracerSuperSamplingLevel



67
1
ElmoUInt8
shaderSuperSamplingLevel



68
1
ElmoUInt8
alphaMode








k_no_alpha = 0






k_straight_alpha = 1






k_multiplied_alpha = 2

69
1
ElmoBoolean
doShaderShadows



70
1
ElmoBoolean
doShaderTransparency



71
1
ElmoUInt8
wireframe_quality_level



72
2
ElmoUInt16
maxReflectionDepth



74
2
ElmoUInt16
maxRefractionDepth



76
4
ElmoFloat32
supersamplingThreshold



80
4
ElmoFloat32
lightTraceThreshold



84
4
ElmoFloat32
moveIncrement



88
4
ElmoFloat32
swivelIncrement



92
4
ElmoFloat32
zoomIncrement



96
4
ElmoFloat32
zoomOrthographicIncrement



100
1
ElmoUInt8
padding
Reserved, set to 0.


101
1
ElmoBoolean
visible



102
1
ElmoUInt8
renderMenuItem



103
1
ElmoBoolean
moveSwivel



104
32
char (ElmoPString)
bookMarkString





Movie_Camera_Elmo_Struct

"movieCam" elements:


136
2
ElmoUInt16
movieCam.padding
Reserved, set to 0.


138
2
ElmoInt16
movieCam.type



140
12
ElmoPoint3D
movieCam.position



152
12
ElmoVector3D
movieCam.rotation



164
4
ElmoFloat32
movieCam.lensSize



168
4
ElmoFloat32
movieCam.eyeDistance



172
4
ElmoFloat32
movieCam.orthoWindowSize



174
2
ElmoInt16
magnification



176
2
ElmoInt16
WDEFItem



178
8
ElmoIntRect
viewRect



196





Subbl.
one vwx2 block for Infini-D 3.5 or greater.





Context
An elmo subblock, in a list of views started by the Scene block's viewList tag.



















Name
vwx2

View_Options_X1_Elmo_Struct
kViewX1ElmoBlockType
Desc.
Extended data for a view.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
1
ElmoBoolean
showLensFlare



17
1
ElmoBoolean
showTitleSafe



18
1
ElmoBoolean
showActionSave



19
1
ElmoBoolean
padding



20





Subbl.
none





Context
A `view subblock. Used by Infini-D 3.5 or greater.



















Name
outl

Outline_Elmo_Block

kOutlineElmoBlockType

Desc.
An outline model. These are the 5-way polyline models (Lathe, Extrusion, FreeForm)






created with Infini-D 2.6 or earlier.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
next
Tag of next outline block


20
4
ElmoTag
previous
Tag of previous outline block


24
2
ElmoInt16
type
One of the following:







k_generic_outline = 0






k_SoR_outline = 1






k_prism_outline = 2






k_font_outline = 3




Elmo_Bevel_Info elements:



26
2
ElmoInt16
bevel.type
One of the following:







k_bevel_none=0






k_bevel_straight=1






k_bevel_double=2






k_bevel_convex=3






k_bevel_concave=4






k_bevel_step=5






k_bevel_double_step=6






k_bevel_interpolated =-1

28
1
ElmoUInt8
bevel.padding



29
1
ElmoBoolean
bevel.hasBackBevel



30
4
ElmoFloat32
bevel.size
[0 - 1]

34
4
ElmoFloat32
bevel.depth
[0 - 1]

38
4
ElmoTag
posXTag
Tag of PolyPoint block for X+ profile.


42
4
ElmoTag
negXTag
Tag of PolyPoint block for X- profile.


46
4
ElmoTag
posYTag
Tag of PolyPoint block for Y+ profile.


50
4
ElmoTag
negYTag
Tag of PolyPoint block for Y- profile.


54
4
ElmoTag
crossTag
Tag of PolyPoint block for cross-section profile.


58





Subbl.
5 PolyPoint subblocks





Context
An elmo subblock, in a list of outlines started by the Scene block's outlineList tag.



















Name
pypt

Polypoint_Elmo_Block

kPolypointElmoBlockType

Desc.
A polypoint block. Each polypoint can have multiple loops, each of which can have a variable






number of points. Each loop is stored in a PolypointLoop subblock.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoUInt16
padding
Reserved, set to 0.


18
2
ElmoUInt16
loopCount
Number of loop tags to follow:


20
4
ElmoTag
loopTags[0]
Tag of the first Polypoint Loop block.


24
4
ElmoTag
loopTags[1]
Tag of the second Polypoint Loop block.


28
4
ElmoTag
loopTags[2]
Tag of the third Polypoint Loop block.


...
...
...
...
...

Subbl.
a number of Polypoint Loop subblocks equal to "loopCount"





Context
One of 5 Polypoint subblocks of an Outline block.



















Name
pylp

Polypoint_Loop_Elmo_Block

kPolypointLoopElmoBlockType

Desc.
A polypoint loop block.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
2
ElmoUInt16
padding



18
2
ElmoUInt16
pointCount
Number of Polypoint Nodes in list below:


20
8
Elmo_Polypoint_Node
nodes[0]
First Polypoint.


28
8
Elmo_Polypoint_Node
nodes[1]
Second Polypoint.


36
8
Elmo_Polypoint_Node
nodes[2]
Third Polypoint.


...
...
...
...
...

Subbl.
none





Context
A polypoint subblock.



















Name
sqin

Seq_Obj_List_Elmo_Block

kSequencerInfoElmoBlockType

Desc.
A sequencer information block. Lists the objects known by the sequencer. The subblock order






is significant, and determines the order objects appear in the sequencer.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoUInt32
objectCount
Number of sqob subblocks.


20





Subbl.
A number of 'sqob' subblocks equal to objectCount.





Context
An elmo subblock.



















Name
sqob

Seq_Obj_Elmo_Block

kSequencerObjectElmoBlockType

Desc.
A sequencer object block. Contains sequencer information pertaining to one object in a scene.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoTag
worldInfoTag
Tag of object block.


20
1
ElmoBoolean
collapsed
Are the names of this object's children hidden?

21
1
ElmoBoolean
hidden
TRUE for text objects only.


22
1
ElmoBoolean
showParams
Are the object's position, rotation, etc. visible?

23
1
ElmoUInt8
cellCount
Number of cells used vertically.


24
4
ElmoUInt32
indentLevel
Object tree indentation, 0 or more.


28
1
ElmoBoolean
expandPosition
Reserved, set to 0.


29
1
ElmoBoolean
expandRotation
Reserved, set to 0.


30
1
ElmoBoolean
expandScale
Reserved, set to 0.


31
1
ElmoBoolean
expandOffset
Reserved, set to 0.


32





Subbl.
none





Context
A Sequencer Info subblock.



















Name
sprf

ScenePref_Elmo_Block
kScenePrefsElmoBlockType
Desc.
Scene-specific preferences.












Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header



16
4
ElmoInt32
patchDetail



20
4
ElmoInt32
measurementUnits



24





Subbl.
none





Context
A `view subblock. Used by Infini-D 3.5 or greater.



















Name
end!

(no block definition exists)
kElmoEOFKind
Desc.
The end-of-file block. Always the last block of the file.





Content
Offset
Size
Type
Name
Description and cases


0
16
ElmoBlockHeader
header


Subbl.
none





Context
An elmo subblock.