Sub-Chunks
|
IDEL
|
Todo: Needs description..
|
U2
|
ChunkSize.
|
U4
|
Index. more needed
|
S0
|
Reference Name within the scene.???
|
S0
|
Parent Item Name.???
|
S0
|
Something???
|
S0
|
Something???
|
S0
|
Something???
|
|
}
CHNM
|
Channel Names are repeated throughout the file. Rather than repeating them unnecessarily and increasing the file size, they are consolidated into this chunk. ITEM and ACTN chunks can then index into the array of channel names to get the appropriate string. The first string in the table is usually "unknown".
|
U4
|
ChunkSize.
|
U4
|
Count. The number of elements in the following array.
|
S0[]
|
An array of Channel Name strings from 1 to Count.
|
LAYR
|
The LAYR chunk is used with mesh items that have a corresponding LAYR sub-chunk in their ITEM chunk. This is a combination of LWO2 data and newer LXO data. There may be zero or more of these chunks present in an LXOB file.
|
U4
|
ChunkSize.
|
U2
|
Legacy index for LWO2 compatibility.
|
U2
|
Flags. see below.
|
F4[3]
|
Rotation pivot point location, which defines the center of rotation.
|
S0
|
Layer name. May be empty if the layer has not been named.
|
I2
|
Legacy parent index for LWO2 compatibility. This chunk attribute/property is always set to -1. Parentage is now defined by a LINK subchunk (with a graph of 'parent') on the ITEM chunk associated with this LAYR.
|
F4
|
Refinement level used when freezing subdivision meshes into polygons for rendering. The display refinement level is a per-system user setting and is not stored in the LXO.
|
F4
|
Refinement level used when freezing curves, represented as the maximum angle between adjacent linear segments.
|
F4[3]
|
Scale pivot point location, which defines the center of scaling.
|
U4[6]
|
Currently unused.
|
U4
|
Item reference for the mesh layer.
|
U2
|
Refinement level used when freezing spline patch surfaces.
|
U2[3]
|
For future expansion.
|
PNTS
|
Lists (x, y, z) coordinate triples for a set of points.
|
The number of points in the chunk is just the chunk size divided by 12. The PNTS chunk must precede the POLS, VMAP and VMAD chunks that refer to it. These chunks list points using a zero-based index into this PNTS chunk. The coordinate system is left-handed, with +X to the right or east, +Y upward, and +Z forward or north. Coordinates in the PNTS chunk are relative to the pivot point of the layer.
|
U4
|
ChunkSize.
|
VEC12[ChunkSize/12]
|
The XYZ positions of points. The number of points present is the ChunkSize / 12.
|
BBOX
|
Bounding Box chunk is an optional chunk that stores the minimum and maximum vectors are the lower and upper corners of the bounding box.
|
U4
|
ChunkSize.
|
VEC12
|
Minimum XYZ vector.
|
VEC12
|
Maximum XYZ vector.
|
VMPA
|
The ??? chunk is associated with every VMAP chunk and must precede it.
|
U4
|
ChunkSize.
|
U4
|
Something ???.
|
U4
|
Something ???.
|
VMAP
|
Vertex Map.
|
Associates a set of floating-point vectors with a set of points. VMAPs begin with a type, a dimension (vector length) and a name. These are followed by a list of vertex/vector pairs. The vertex is given as an index into the most recent PNTS chunk, in VX format. The vector contains dimension floating-point values. There can be any number of these chunks, but they should all have different types or names. A particular point index in the PNTS chunk may or may not have a VMAP value.
|
U4
|
ChunkSize.
|
ID4
|
Vertex Map Type.
|
ID4
|
Dimension
|
Description
|
MORF
|
3
|
A relative offset vertex morph map.
|
NORM
|
3
|
A vertex normal map.
|
PICK
|
0
|
A vertex (or point) selection set map. The mare existense of the PNTS index indcates that point/vertex is part of this selection set.
|
RGB
|
3
|
A vertex colour map.
|
RGBA
|
4
|
A vertex colour map with alpha.
|
SPOT
|
3
|
A absolute offset vertex morph map.
|
TXUV
|
2
|
A vertex UV coordinate map.
|
WGHT
|
1
|
A vertex weight map.
|
TBAS
|
6
|
A vertex tangent basis map. Usually (if not always) this map contains no information. The useable info. is stored in the corresponding VMAD (discontinuous) vmap on a per vertex / per polygon basis.
|
|
U2
|
Dimension.
|
S0
|
Vertex map name.
|
VERTVALUES[]
|
An array of vertex indexes and there associated float values.
|
VMAD
|
Discontinuous Vertex Map.
|
The VMAD chunk holds information about discontinuous vertex maps, which are often used for UVs. This includes the type, dimensions, name and an array of vertex values for 1 or more polygons.
|
U4
|
ChunkSize.
|
ID4
|
Vertex Map Type.
|
ID4
|
Dimension
|
Description
|
MORF
|
3
|
A relative offset vertex morph map.
|
NORM
|
3
|
A vertex normal map.
|
RGB
|
3
|
A vertex colour map.
|
RGBA
|
4
|
A vertex colour map with alpha.
|
SPOT
|
3
|
A absolute offset vertex morph map.
|
TXUV
|
2
|
A vertex UV coordinate map.
|
WGHT
|
1
|
A vertex weight map.
|
TBAS
|
6
|
A vertex tangent basis map.
|
|
U2
|
Dimension.
|
S0
|
Vertex map name.
|
VERTPOLYVALUES[]
|
An array of vertex/polygon indexes and dimension number of float values. Array(VX,VX,F4[n]).
|
VMED
|
Discontinuous Edge Map.
|
The VMED chunk holds dimension number of floating point values for a given edge. An edge is defined by 2 vertex indexes into the previous PNTS chunk.
|
U4
|
ChunkSize.
|
ID4
|
Vertex Map Type.
|
ID4
|
Dimension
|
Description
|
SUBV
|
1
|
A subdivision edge weight map.
|
EPCK
|
0
|
A edge selection set map.
|
|
U2
|
Dimension.
|
S0
|
Vertex map name.
|
EDGEVALUES[]
|
An array of vertex A, vertex B and dimension number of float values. Array(VX,VX,F4[n]).
|
POLS
|
A list of polygons of a given type for the current layer.
|
Each polygon is defined by a vertex count followed by a list of indexes into the most recent PNTS chunk. The maximum number of vertices is 1023. The 6 high-order bits of the vertex count are flag bits with different meanings for each polygon type. When reading POLS, remember to mask out the flags to obtain numverts. (For CURV polygon: The two low order flags are for continuity control point toggles. The four remaining high order flag bits are additional vertex count bits; this brings the maximum number of vertices for CURV polygons to 2^14 = 16383). When writing POLS, the vertex list for each polygon should begin at a convex vertex and proceed clockwise as seen from the visible side of the polygon. Polygons are single-sided (although double-sidedness is a possible surface property), and the normal is defined as the cross product of the first and last edges. As of 701 the HCRV & BCRV chunks have a seperate 'flags' U4 so the NoOfVerts count is a full U2. As of 801 the new 'LINE' chunk to define 'Polylines' was introduced and also has the seperate 'flags' U4.
|
U4
|
ChunkSize.
|
ID4
|
Polygon Type.
ID4
|
Description
|
FACE
|
A standard polygon.
|
CURV
|
Catmull-Rom curve.
|
LINE
|
Polyline.
|
BEZR
|
Bezier curve.
|
SPCH
|
Spline patch, as generated by the patching tools.
|
TEXT
|
Text polygons, as generated by the Text tool.
|
SUBD
|
Subdivision surface polygons.
|
PSUB
|
Catmull-Clark subdivision surface, Pixar Subdivision surface.
|
HCRV
|
Hermite curve. As of 701 CURV is depricated in favour of HCRV.
|
BCRV
|
Bezier curve. As of 701 BEZR is depricated in favour of BCRV.
|
OPNT
|
One point polygon. Added in 13.1v1 RC2 Build 559310.
|
|
Polygons[]
|
An array of polygons. Eg. U2,VX[] or U2,U4,VX[].
|
PTAG
|
Associates tags of a given type with polygons in the most recent POLS chunk.
|
The polygon is identified by an index into the most recent POLS chunk, and the tag is given by an index into the TAGS chunk. Not all polygons will have a value for every tag type. The behavior for polygons lacking a given tag depends on the type of the polygon.
|
U4
|
ChunkSize.
|
ID4
|
Tag Type.
|
ID4
|
Description
|
MATR
|
A material assignment.
|
PART
|
The part the polygon belongs to. Parts are named groups of polygons within the current LAYR chunk. A polygon can belong to only one part.
|
PICK
|
A selection set a polygon belong's too. A given polygon may belong to many PICK chunks simultaneously.
|
FONT
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'FONT'. The 'TAGS' entry this chunk points too specifies the font details as a string.
|
JUST
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'JUST'. The 'TAGS' entry this chunk points too specifies the justification of the text.
|
TEXT
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'TEXT'. The 'TAGS' entry this chunk points too specifies the the actual text string that is to be displayed.
|
SMGP
|
The smoothing group the polygon belongs to. Shading is only interpolated within a smoothing group, not across groups.
|
|
ptag[]
|
An array of POLS index, TAGS index. Eg. (VX,U2)[]. Where the index value into the most recent POLS chunk is specified in VX format. Either a U2 or U4. And, the TAGS index is a U2 into the TAGS chunk at the start of the file.
|
ITEM
|
The LXOB file contains one ITEM chunk per item in the scene, which in turn contain various sub-chunks representing the item’s attributes. The ITEM chunk contains three fixed fields representing the type name, the user name for the item, and a reference ID.
|
U4
|
ChunkSize.
|
S0
|
Item Type Name. The type name of the item, such as camera or mesh.
|
S0
|
Item Name. The name the user has assigned to the item. This may be an empty string if a name has not been assigned.
|
U4
|
Item reference ID, unique within the file. This is used to reference the item from other items.
|
Sub-Chunks
|
PAKG
|
The ITEM.PAKG subchunk occurs when a user has added a package of channels to an ITEM. This type of subchunk is becomming more prevalent in recent .LXO's.
|
U2
|
ChunkSize.
|
S0
|
PackageName. The internal name of the package.
|
U4
|
Reserved. Always zero.
|
|
XREF
|
The XREF is an optional sub-chunk that identifies this item as an external reference item, and is only present if this item is indeed a reference.
|
U2
|
ChunkSize.
|
U4
|
Index for the sub-scene in the REFS chunk.
|
S0
|
Filename containing the source scene being referenced.
|
S0
|
Item identifier in the source scene.
|
|
LAYR
|
Optional layer sub-chunk contains layer-specific features for the item. This consists of a layer index, flag bits, and a wireframe/element color.
|
U2
|
ChunkSize.
|
U4
|
Index of the layer in the LAYR chunk.
|
U4
|
Flags describing layer-specific properties.
|
Mask
|
Name
|
Description
|
0
|
Visible
|
True if the layer is visible in GL.
|
1
|
Hidden
|
True if the layer is hidden in GL.
|
2
|
Foreground
|
Set if this layer is the foreground layer.
|
3
|
Background
|
Set if this layer is a background layer.
|
4
|
Bounding Box
|
Set if this layer is displayed as a bounding box only.
|
8
|
Linear Subdiv UV's
|
Set to use linear interpolation of UVs on subdivision surfaces.
|
The first four bits of the flags represent the item’s visibility, and may be set as follows. Note that it is possible for both the Visible and Hidden to be set, in which case the layer’s visibility is in a mixed state and the true visibility is determined by the layer’s children. Also note that an item may be neither a foreground nor a background item. In that case, it is not currently selected and thus not visible in GL. This is different from the Hidden/Visible state. An item can still be the foreground or background object and also be hidden.
|
|
U1[4]
|
Four-element array representing the RGBA element (wireframe) color in the UI.
|
|
LINK
|
Item Link. There may be zero or more Item Link sub-chunks and relates one item to another item. Parenting is one kind of linking. LINK sub-chunks contain a graph type name, unique ID to the target item, and the index of the link.
|
U2
|
ChunkSize.
|
S0
|
GraphName. The name of the graph that this link belongs to, such as 'parent', 'deformers', etc..
|
I4
|
ItemIndexID. The Index ID of the item that this item is linked too.
|
I4
|
LinkIndex. The index of the link. For instance, a locator may have 3 child locators. This item maybe the third child locator linked to the parent. This 'LinkIndex' reflects that order. Another example is transform items where this LINK chunk details a 'xfrmcore' graph link and the 'LinkIndex' defines the order of the various transform items. Thus facilitating Order Of Operations.
|
|
CLNK
|
Channel Link. There may be zero or more CLNK sub-chunk's and relates a channel in one item to a channel in another item. This is commonly used to drive one channel's value to another channel's value.
|
U2
|
ChunkSize.
|
S0
|
Graph Name. The name of the graph that this link belongs to, such as 'chanLinks'.
|
S0
|
Channel From Name. Channel name of the 'from' channel. If '(none)', this is a channel-to item link.
|
U4
|
From Reference ID. The RefId of the 'from' item containing the 'from' channel.
|
S0
|
Channel name for the 'to' channel.
|
I4
|
'From' link index.
|
I4
|
'To' link index.
|
|
UCHN
|
User Channel. Is a custom user defined channel. All items have a set of standard channels that vary based on the item type. These can be further extended through the use of user channels, which allow for arbitrarily defined channels to be added to the end of the item's normal channel list. The UCHAN sub-chunk defines user channels. These channels behave just like other channels, and their values are stored in the file in the same way. Note that all UCHAN sub-chunks must come before any other channel chunks.
|
U2
|
ChunkSize.
|
S0
|
Channel Name. The name of the user channel, without any vector mode suffixes.
|
S0
|
Channel Type Name. The name of the channel's datatype (ExoType).
|
U4
|
Vector Mode.
|
Most channels are simple scalar channels, meaning they represent a single component. modo also supports vector mode channels. These are defined just like normal channels, but are actually created as two or more related channels with a standard suffix automatically applied to the base channel name. For example, a color channel named "mycolor" defined as an RGB vector implicitly creates three scalar channels identified as mycolor.r, mycolor.g and mycolor.b. Each of the component channels are accessed just like normal scalar channels.
|
Value
|
Mode
|
Description
|
0
|
Scalar
|
The channel name has no suffixes applied, and only a single channel is created.
|
1
|
XY
|
Two channels suffixed with .x and .y representing a two dimensional position, rotation or vector.
|
2
|
XYZ
|
Three channels suffixed with .x, .y and .z representing a three dimensional position, rotation or vector.
|
3
|
RGB
|
Three channels suffixed with .r, .g and .b representing a color.
|
4
|
RGBA
|
Three channels suffixed with .r, .g, .b and .a representing a color plus an alpha.
|
|
U4
|
Flags. Currently always 0.
|
I4
|
Default Integer Value. Default value for integer channels.
|
F4
|
Default Float Value. Default value for floating point channels.
|
U2
|
Hint Count. Number of text hints in the hints array that follows. May be zero if there are no hints.
|
Hint[]
|
Hint. Optional, Zero to Hint Count number of Name/Value pairs.
|
S0
|
Name of the hint, restricted by standard text hint naming rules.
|
I4
|
Value of the hint.
|
|
|
CHNL
|
Scalar Channel. There may be Zero or more of these sub-chunks in a given ITEM chunk. The CHNL sub-chunk contains the name, type and value of an individual channel. These are commonly found in preset files and older LXO files without CHNM tables, while newer LXOs contain only CHAN chunks and matching CHNM tables.
|
U2
|
ChunkSize.
|
S0
|
Channel Name.
|
U2
|
Channel Data Type. Which may be one of the following values.
|
Value
|
Datatype
|
Description
|
1
|
I4
|
Signed integer.
|
2
|
F4
|
Floating point number.
|
3
|
S0
|
A padded NULL-terminated string. This is used for raw strings and for text hint discrete choices.
|
|
??
|
Channel Value. The type of this field is dependent on the above 'Channel Data Type' flag field. For example, if the flag field was 1, then the data type of this 'Value' field would be I4.
|
|
CHNV
|
Vector Channel. There may be zero or more of these sub-chunks in a given ITEM chunk. The CHNV chuck represents the values of a channel vector. This is a combination of three channel values, usually RGB or XYZ. The chuck has the base name, datatype, array dimensions, and an array of values. Zero or more of these may be present in an ITEM chunk. These are commonly found in preset files and older LXO files without CHNM tables. They are becoming more prevalent in newer LXO's where packages added to item's may have channels that are vectors. Such as a F4[3] channel denoting an offset on a glItemShape package attched to a ITEM.
|
U2
|
ChunkSize.
|
S0
|
Channel Name. The base name of the channel. This is the channel name minus the vector component.
|
U2
|
Channel Data Type. Which may be one of the following values.
|
Value
|
Datatype
|
Description
|
1
|
I4
|
Signed integer.
|
2
|
F4
|
Floating point number.
|
3
|
S0
|
A padded NULL-terminated string. This is used for raw strings and for text hint discrete choices.
|
|
U2
|
Vector Count. The number of elements in the vector. 3 for XYZ or RGB, four for RGBA, etc.
|
??[]
|
Channel Value. An array of name/value pairs. The underlying type of the value component of the pair is dependent on the 'Channel Data Type' field above. For example, a commonly occuring CHNV sub-chunk is for the 'wireColor' channel on an item. The 'Channel Name' would be 'wireColor'. The 'Channel Data Type' flag would be 2 (for float). The 'Vector Count' would be 3, for each component .r, .g & .b. And the array of name/value pairs would be 3 pairs of [S0,F4]. Namely, [R,<somevalue>], [G,somevalue] & [B,somevalue].
|
|
CHNS
|
String Channel. There may be zero or more 'String Channel' sub-chunk's present for an ITEM chunk and it represents a string channel containing the channel name and the string value. These are commonly found in preset files and older LXO files without CHNM tables, while newer LXOs contain only CHAN chunks and matching CHNM tables.
|
U2
|
ChunkSize.
|
S0
|
Channel Name.
|
S0
|
Channel Value.
|
|
GRAD
|
Gradient Channel. The GRAD sub-chunk contains the values of a gradient channel, which consists of the channel name and the index of a related envelope (ENVL) chunk. Zero or more of these may be present in an ITEM chunk.
|
U2
|
ChunkSize.
|
S0
|
Channel Name.
|
VX
|
Envelope Index. Index of the envelope (ENVL) chunk relating to this gradient channel.
|
U4
|
Envelope Interpolation Flags. Which may be one of the following values.
|
The flag determines how the path between keyframes is resolved.
|
Value
|
Description
|
0
|
Curve.
|
1
|
Linear.
|
2
|
Stepped.
|
|
|
CHAN
|
Channel Value. The CHAN sub-chunk is a newer, more generalized mechanism used to represent a channel value. The channel name is looked up by index in the CHNM chunk. The value’s type is determined by the U2 type field. Zero or more of these may be present in an ITEM chunk.
|
U2
|
ChunkSize.
|
VX
|
Index into the CHNM (Channel Names) Chunk.
|
U2
|
Channel Data Type. Which may be one of the following values. NOTE: If an associated envelope datatype then this ITEM.CHAN should be looked up in the ACTN.scene chunk.
|
Value
|
Description
|
1
|
Integer.
|
2
|
Float.
|
3
|
String representing an integer text hint.
|
17
|
Integer with an envelope.
|
18
|
Float with an envelope.
|
19
|
String representing an integer text hint with an envelope.
|
|
??
|
Channel Value. The datatype of this field is determined by the above 'Channel Data Type' field.
|
|
CHNC
|
Custom channel value sub-chunk. Zero or more of these may be present in an ITEM chunk. Often these channels will equate to a persisted struct.
|
U2
|
ChunkSize.
|
U1[ChunkSize]
|
Arbitrary byte array of custom data. NOTE: Often the ChunkSize of this sub-chunk will be a non-even amount of bytes, therefore the actual chunk size will have an additional padding-byte which is not counted in the ChunkSize.
|
|
ITAG
|
Item Tag Channel. Items can be tagged with arbitrary strings, which are stored in ITAG sub-chunks. Zero or more of these may be present in an ITEM chunk.
|
U2
|
ChunkSize.
|
ID4
|
Tag type, such as CMNT, DESC or CUE, etc.
|
S0
|
Channel Value. This may be an empty string for some tags.
|
|
UNIQ
|
Unique Identifier. This sub-chunk defines the absolute internal unique name indentifier for this item.
|
U2
|
ChunkSize.
|
S0
|
Identifier.
|
|
UIDX
|
User Interface Unique Index. An item can have 3 names. The ITEM.UNIQ sub-chunk defines the absolute internal scene unique name. The ITEM.Username attribute defines a modo user defined name, if any. If no ITEM.Username is specified by the user the composite synthetically generated name is defined by the Item-Type plus this UIDX value appended as a suffix. The synthetic name formatting is subject to message table & user preference settings. For instance, a locator item-type has a message table username of 'Locator' and if the modo user's preference settings (Preferences>Defaults>Application>Item Index Style) was 'Item2' then the composite name would be formated as 'Locator<ITEM.UIDX.Index>'. And, thus providing a unqiue user-friendly UI name for the internal scene unique name of say 'locator106'.
|
U2
|
ChunkSize.
|
U4
|
Index.
|
|
VNAM
|
Visible Name. The user-visible name of the item. If the item has not been explicitly been renamed, a 'synthetic name' is created (e.g. "Mesh (37)" or "Floor (Material)")
|
U2
|
ChunkSize.
|
S0
|
Name.
|
|
BCHN
|
'B' Channel. Ostensibly used with procedural 'Mesh Operations' in modo 10+ series. Identifies an 'operation' type and a reference index ID that relates to a 'DATA' chunk (usually located at the end of the file).
|
U2
|
ChunkSize.
|
S0
|
Operation Type.
|
U4
|
'DATA' chunk index ID. Identifies the appropriate 'DATA' chunk that conatins the value type and value data for this operation type.
|
|
|
ENVL
|
The ENVL chunk describes an envelope applied to an item. In modo, envelopes define the keys of gradients and for normal keyframed animation. Note that this is not the same as the LWO2 envelope chunk. The envelope contains three sub-chunks representing the spline, TANI, TANO and KEY, as well as the behavior chunks PRE and POST. The spline type used in modo is a variation on the bezier spline. The specific implementation is not currently documented, but it should be close enough to standard bezier curves for you to use that at the moment.
|
U4
|
ChunkSize.
|
VX
|
Envelope Index. Note: It is either U2 or U4 in size.
|
U4
|
Envelope Type.
|
Sub-Chunks
|
TANI
|
The TANI, Incoming tangent is a sub-chunk of the ENVL chunk and it contains information about the incoming tangent of the spline.
|
U2
|
ChunkSize.
|
U2
|
Slope Type. May be any of the following type values.
|
Value
|
Description
|
0
|
Manual
|
1
|
Automatic
|
2
|
Linear In
|
4
|
Linear Out
|
8
|
Flat
|
16
|
Auto Flat
|
32
|
Stepped
|
64
|
Smooth Flat
|
|
U2
|
Weight Type. May be either manual or automatic.
|
Value
|
Description
|
0
|
Automatic
|
1
|
Manual
|
|
F4
|
Weight.
|
F4
|
Slope.
|
F4
|
Value.
|
|
TANO
|
TANO similarly contains the outgoing tangent. This is used only for broken keys.
|
U2
|
ChunkSize.
|
U4
|
Broken Key Flags. Describes which values are discontinuous. May be any combination of the following values.
|
Value
|
Description
|
0
|
None
|
1
|
Value
|
2
|
Slope
|
4
|
Weight
|
|
U2
|
Slope Type. May be any of the following type values.
|
Value
|
Description
|
0
|
Manual
|
1
|
Automatic
|
2
|
Linear In
|
4
|
Linear Out
|
8
|
Flat
|
16
|
Auto Flat
|
32
|
Stepped
|
64
|
Smooth Flat
|
|
U2
|
Weight Type. May be either manual or automatic.
|
Value
|
Description
|
0
|
Automatic
|
1
|
Manual
|
|
F4
|
Weight.
|
F4
|
Slope.
|
F4
|
Value.
|
|
KEY
|
This is the key value itself, which includes a key and an input value for the gradient. It also contains the FLAG sub-sub-chunk. (Depricated)
|
U2
|
ChunkSize.
|
F4
|
Input value for the gradient.
|
F4
|
Value for the key.
|
|
PRE
|
Behaviour before the first key.
|
U2
|
ChunkSize.
|
U2
|
Pre Behaviour Type. May be 1 of the following values.
|
Mask
|
Name
|
Description
|
0
|
Reset
|
The default value. Values are set to flat 0 (zero) outside the key area.
|
1
|
Constant (Smooth)
|
Same as Constant, but the keyframe slope values are adjusted to smoothly transition to the Constant behavior.
|
2
|
Repeat
|
Values of keys are repeated. When incoming and outgoing values match, a loop can be created.
|
3
|
Oscillate (Smooth)
|
Same as Oscillate but slope values are adjusted to smoothly transition to the next oscillation.
|
4
|
Offset Repeat (Smooth)
|
Same as Offset Repeat but slope values are adjusted to smoothly transition to the repeated sections.
|
5
|
Linear
|
Values project outward in a linear fashion from the first or last key, providing a constant offset.
|
6
|
Constant
|
Values remain the same. With the AutoSlope and Weight options, ease-in or out as it transitions to the key values.
|
7
|
Oscillate
|
Values are repeated forwards, and then reversed, like a ping-pong type effect.
|
8
|
Offset Repeat
|
Values of keys are repeated, but each subsequent repeat is offset by the amount of the last key.
|
|
|
POST
|
Behaviour after the last key.
|
U2
|
ChunkSize.
|
U2
|
Post Behaviour Type. May be 1 of the following values.
|
Mask
|
Name
|
Description
|
0
|
Reset
|
The default value. Values are set to flat 0 (zero) outside the key area.
|
1
|
Constant (Smooth)
|
Same as Constant, but the keyframe slope values are adjusted to smoothly transition to the Constant behavior.
|
2
|
Repeat
|
Values of keys are repeated. When incoming and outgoing values match, a loop can be created.
|
3
|
Oscillate (Smooth)
|
Same as Oscillate but slope values are adjusted to smoothly transition to the next oscillation.
|
4
|
Offset Repeat (Smooth)
|
Same as Offset Repeat but slope values are adjusted to smoothly transition to the repeated sections.
|
5
|
Linear
|
Values project outward in a linear fashion from the first or last key, providing a constant offset.
|
6
|
Constant
|
Values remain the same. With the AutoSlope and Weight options, ease-in or out as it transitions to the key values.
|
7
|
Oscillate
|
Values are repeated forwards, and then reversed, like a ping-pong type effect.
|
8
|
Offset Repeat
|
Values of keys are repeated, but each subsequent repeat is offset by the amount of the last key.
|
|
|
|
ACTN
|
The ACTN chunk describes an 'Action Layer' which is a mechanism for storing one or more items' channel values in differing states. There are currently three default 'application action layer' types , 'edit', 'scene' and 'setup'. Also, there may be 1 or more additional user created action layers of type 'scene'.
|
U4
|
ChunkSize.
|
S0
|
ActionLayerName. At least the three default action layers of edit, scene & setup plus any user defined action layers.
|
S0
|
ActionLayerType, either 'edit', 'scene' or 'setup'. The 'scene' action layer type is a slightly awkward name for the action layer type that identifies items within the scene with animated channels. The 'setup' action layer type identifies items with setup channel values. The 'edit' action layer type identifies items with edited channel values where the time slider has not yet been altered by the modo user at the time of saving the .lx? file. The setup & scene action layers allow for a start & end state for channel values facilitating animation.
|
U4
|
ActionLayerIndex. The zero based Index ID of this action layer.
|
Sub-Chunks
|
ITEM
|
The ACTN.ITEM sub-chunk identifies the main ITEM chunk that following ACTN sub-chunks are related too. Until the next ACT.ITEM sub-chunk.
|
U2
|
ChunkSize.
|
U4
|
Item reference ID, unique within the file.
|
|
CHAN
|
The ACTN.CHAN sub-chunk relates to the most recent ACTN.ITEM sub-chunk. It is similar in all respects to the ITEM.CHAN sub-chunk except it has an extra VX field that identifies the Envelope associated with this ACTN.CHAN.
|
U2
|
ChunkSize.
|
VX
|
Index into the CHNM (Channel Names) Chunk.
|
U2
|
Channel Data Type. Which may be one of the following values.
|
Value
|
Description
|
1
|
Integer.
|
2
|
Float.
|
3
|
String representing an integer text hint.
|
17
|
Integer with an envelope.
|
18
|
Float with an envelope.
|
19
|
String representing an integer text hint with an envelope.
|
|
VX
|
Index of the associated ENVL (envelope) chunk.
|
??
|
Channel Value. The datatype of this field is determined by the above 'Channel Data Type' field.
|
|
GRAD
|
The ACTN.GRAD sub-chunk relates to the most recent ACTN.ITEM sub-chunk and contains the values of a gradient channel, which consists of the channel name (CHNM) index and the index of a related envelope (ENVL) chunk. Zero or more of these may be present in an ACTN chunk.
|
U2
|
ChunkSize.
|
VX
|
Index into the CHNM (Channel Names) Chunk.
|
VX
|
Envelope Index. Index of the envelope (ENVL) chunk relating to this gradient channel.
|
U4
|
Envelope Interpolation Flags. Which may be one of the following values.
|
The flag determines how the path between keyframes is resolved.
|
Value
|
Description
|
0
|
Curve.
|
1
|
Linear.
|
2
|
Stepped.
|
|
|
CHNS
|
The ACTN.CHNS sub-chunk relates to the most recent ACTN.ITEM sub-chunk. It is similar in all respects to the ITEM.CHNS sub-chunk except it has an extra VX field that identifies the index into the CHNM (Channel Names) chunk. Also, although the 'S0' channel name field is still present, it is no longer used in preference to the index variation.
|
U2
|
ChunkSize.
|
S0
|
Channel Name.
|
VX
|
Index into the CHNM (Channel Names) Chunk.
|
S0
|
Channel Value.
|
|
|
ANNI
|
The ANNI chunk describes...
|
U4
|
ChunkSize.
|
Sub-Chunks
|
AAIT
|
The ANNI.AAIT sub-chunk identifies...
|
U2
|
ChunkSize.
|
U4
|
Item reference ID, unique within the file.
|
|
AASE
|
The ANNI.AASE sub-chunk identifies...
|
U2
|
ChunkSize.
|
U2
|
LoopMode. Describes the...
|
U2
|
MuteState. Describes the...
|
U2
|
ScrubState. Describes the...
|
F4
|
StartTime. Describes the...
|
|
|
BAKE
|
The BAKE chunk is essentially a summary chunk describing the number & frequency of 'static mesh' triangle surface definitions that have been saved to the file to represent an animation sequence in a similar fashion to MDD. Most commonly resulting from an Alembic importation to modo.
|
U4
|
ChunkSize.
|
U4
|
Reference ID.
|
U4
|
Samples count. The number of
|
F4
|
Start time.
|
F4
|
Samples per second.
|
S0
|
Bake name. ???
|
S0
|
Bake name. ???
|
3GRP
|
The 3GRP chunk is the first in a series of chunks that detail modo's triangle surface 'static mesh'.
|
U4
|
ChunkSize.
|
U4
|
Tri-Surf count. The number of triangle surf definitions that constitute the 'static mesh'. A triangle surface definition is a grouping of a following 3SRF chunk, VRTS chunk, a TRIS chunk, 1 or more VVEC chunks & a TTGS chunk.
|
U4
|
Item reference ID. The unique ID of the ITEM chunk associated with this 3GRP chunk.
|
U4
|
Flags.
|
3SRF
|
The 3SRF chunk is the second in a series of chunks that detail a 'static mesh' item and relates to the most recent 3GRP chunk. It is essentially a summary statistics chunk detailing the number of verts, tri's, vertex vectors, tags & flags for the triangle surfaces that constitute the 'static mesh'.
|
U4
|
ChunkSize.
|
U4
|
VertexCount. The number of vertices' present in the triangle surface. This value will be consistent with a following 'VRTS' chunk.
|
U4
|
TrinagleCount. The number of triangles present in the triangle surface. This value will be consistent with a following 'TRIS' chunk.
|
U4
|
VertexVectorCount. The number of vertex vectors associated with this triangle surface. This value will be consistent with number of following VVEC chunks.
|
U4
|
TagsCount. The number of tags strings detailed in a following TTGS, triangle surface tags chunk.
|
U4
|
Flags.
|
VRTS
|
The VRTS chunk is the third in a series of chunks that detail a 'static mesh' item and relates to the most recent 3SRF chunk. It details 3 float values (xyz) for the count of vertices' from the most recent 3SRF.
|
U4
|
ChunkSize.
|
VEC12[3SRF.VertCount]
|
An array of F4[3] (three float values) denoting XYZ position of 3SRF.VertexCount number of vertices.
|
TRIS
|
The TRIS chunk is the fourth in a series of chunks that detail a 'static mesh' item and relates to the most recent 3SRF chunk. It details 3 U4 values for the count of triangles from the most recent 3SRF.
|
U4
|
ChunkSize.
|
(U4[3])[3SRF.TriCount]
|
An array of U4[3] (three unsigned long values) denoting the 3 indices from the most recent VRTS chunk xyz point positions and thereby facilitating the definition of a triangle.
|
VVEC
|
The VVEC chunk is the fifth in a series of chunks that detail a 'static mesh' item and relates to the most recent 3SRF chunk. They essentially contain the exact same sort of information as a 'VMAP' for a 'mesh' but are specifically detailed for 3SRF (triangle surface) items. These VVEC chunks can vary in size and makeup depending on the dimensionality required. For instance a 'normal' map VVEC will describe 3 floating point values for each point in the VRTS chunk associated with this 3SRF. A 'uv' VVEC chunk will describe 2 floating point values for each vertex. NOTE. These VVEC chunks can be inefficient in so much that the similar VMAP for MESH items only define values the user specified for particular vertices whereas VVEC chunks describe values for the total 3SRF.VertexCount irrespective of whether they had a value or not. If a user had numerous VMAPs defined for a MESH prior to converting it to a 'static mesh' item then the resulting VVECs can (and often do) contain much surpurfluous data.
|
U4
|
ChunkSize.
|
ID4
|
Vertex Vector Type.
|
ID4
|
Dimension
|
Description
|
MORF
|
3
|
A relative offset vertex morph map.
|
NORM
|
3
|
A vertex normal map.
|
PICK
|
0
|
A vertex (or point) selection set map. The mare existense of the PNTS index indcates that point/vertex is part of this selection set.
|
RGB
|
3
|
A vertex colour map.
|
RGBA
|
4
|
A vertex colour map with alpha.
|
SPOT
|
3
|
A absolute offset vertex morph map.
|
TXUV
|
2
|
A vertex UV coordinate map.
|
WGHT
|
1
|
A vertex weight map.
|
|
U2
|
Dimension.
|
S0
|
Vertex vector name.
|
VERTVALUES[]
|
An array of VVEC.Dimension values for 3SRF.VertexCount vertices.
|
TTGS
|
The TTGS chunk is the sixth in a series of chunks that detail a 'static mesh' item and relates to the most recent 3SRF chunk. These are essentially the same as PTAG's, polygon tags.
|
U4
|
ChunkSize.
|
(ID4,S0)[3SRF.TagsCount]
|
An array of ID4,S0 (PTAG ID4's and S0 strings) for 3SRF.TagsCount. Usually only 'MATR' & 'PART' are detailed.
Tag Type.
|
ID4
|
Description
|
MATR
|
A material assignment.
|
PART
|
The part the polygon belongs to. Parts are named groups of polygons within the current LAYR chunk. A polygon can belong to only one part.
|
PICK
|
A selection set a polygon belong's too. A given polygon may belong to many PICK chunks simultaneously.
|
FONT
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'FONT'. The 'TAGS' entry this chunk points too specifies the font details as a string.
|
JUST
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'JUST'. The 'TAGS' entry this chunk points too specifies the justification of the text.
|
TEXT
|
If the most recent POLS chunk specifies polygons of type 'TEXT' then there will be a PTAG chunk of type 'TEXT'. The 'TAGS' entry this chunk points too specifies the the actual text string that is to be displayed.
|
SMGP
|
The smoothing group the polygon belongs to. Shading is only interpolated within a smoothing group, not across groups.
|
|
IASS
|
Perhaps this is an 'Import As Scene' chunk? If present, is usually found near the begining of the file. It details subchunks that describe imported reference 'scenes' (XREF subchunks).
|
U4
|
ChunkSize.
|
Sub-Chunks
|
XREF
|
Defines the reference Name and Absolute filespec.
|
U2
|
SubchunkSize.
|
S0
|
Reference Name within the root scene.
|
S0
|
Absolute filespec.
|
|
|
SUBS
|
If a IASS chunk is present then there will be the same number of 'SUBS' chunks per IASS.XREF subchunks. This chunk details the 'import items' from the reference scene and any load options.
|
U4
|
ChunkSize.
|
S0
|
Subscene / Cinema filespec.
|
S0
|
Target root type of load.
|
Sub-Chunks
|
LOPT
|
Loading options (if any) eg. when referencing a wavefront obj.
|
S0
|
Loader type name.
|
U4
|
Unknown.
|
U4
|
Unknown.
|
|
IREF
|
Import reference ident, name & type.
|
U2
|
ChunkSize.
|
S0
|
Item ident from import reference file.
|
S0
|
Item name from import reference file.
|
S0
|
Item type from import reference file.
|
|
|
XREF
|
Relates to IASS & SUBS Chunks and further details Imported Reference Scenes/Cinemas. There will be an XREF chunk per SUBS chunk previously defined.
|
U4
|
ChunkSize.
|
U4
|
SUBS Chunk Index.
|
S0
|
Subscene Reference Name.
|
Sub-Chunks
|
IDEL
|
Reference scene item deletion id's.
|
U2
|
ChunkSize.
|
U4
|
Item ID's Subchunk Size / U4.
|
|
XMAN
|
Import reference stuff.
|
U2
|
ChunkSize.
|
U4
|
Mode. If Mode 3 five flag bytes follow for Graph Tag, Action, Name, Select & Remove flags. If mode 2 it's a U4 with bit shifting for the flags
|
|
|
DATA
|
The DATA chunk has an string exotype which determines the interpretation of the value portion of the <name, value> pairs till the end of the chunk.
|
U4
|
ChunkSize.
|
U4
|
Index. An index indentifying this 'DATA' chunk which is referenced from a 'ITEM.BCHN' subchunk.
|
U4
|
Unknown.
|
S0
|
A string exotype identifying how one interprets the followng 'name', 'value' pairs till the end of the chunk. eg. '+intrange' would indentify that the following 'value' string be interpreted as a range of integer values. '+wcWeightMap' etc.
|
<S0, Value> Pair
|
<Name, Value> pair(s).
|
LXPR Preset File
- The LXPR file format is a subset of the standard LXOB format. It commonly represents item presets for materials, lights, or anything other than mesh items.
- By default the file name extension for LXPR files is .lxp.
- ToDo: chunk layout summary
- ToDo: chunk details
LXPM Mesh Layer Preset File
- The LXPM file format is a subset of the standard LXOB format. It contains a single mesh item and necessary shading items and can be dropped into a scene or used as a source with the Mesh Paint tool.
- By default the file name extension for LXPM files is .lxl.
- ToDo: chunk layout summary
- ToDo: chunk details
LXPE Environment Preset File
- The LXPE file format is a subset of the standard LXOB format. It is basically an entire scene that is intended to serve as a background that can be swapped out quickly and cleanly. It can contain meshes and basically any other type of item. It is commonly mistaken for an Item Preset (.lxp) for an Environment type item..
- By default the file name extension for LXPE files is .lxe.
- ToDo: chunk layout summary
- ToDo: chunk details
eof
|