Model Types
- 0: null - Dummy object without segments.
- 1: geodynamic - Geometry with envelope and modifiers.
- 2: cloth - Cloth (ClothGeometry segments).
- 3: bone - Animated null.
- 4: geobone - Animated geometry (only SegmentGeometry segments).
- 5: geostatic - Standard geometry, no envelope or deformers.
- 6: geoshadow - Shadow geometry (ShadowGeometry segments).
File Structure and Naming Conventions
MSH Name = name
name.txt
bool has_shadowvolume: Does this MSH have a shadow volume (SHDW)?
name nfo.txt
string name: Scene Name
float[2] frame_range: Start Frame, End Frame
float fps: Scene FPS
float[3] scale: Scene scale
BBox bbox: Scene BBox
For every Model:
name mdl model_name.txt
string name:
Model Name
string parent:
Parent Name
string model_type:
One of the available Model Types
int visible:
1 == visible, 0 == hidden
bool collprim:
Is this model a collision primitive?
[int, float, float, float] primitive:
Primitive type, value 0, value 1, value 2
int num_deformers:
Number of deformers on save, ignored when loading
string[] deformers:
Deformer names
BBox bbox:
Model BBox
Transform transform:
Model Transform
For every segment (SEGM/CLTH/SHDW) in the models geometry:
name mdl model_name seg #_of_segment.txt
SegmentGeometry:
string type:
SegmentGeometry | ShadowGeometry | ClothGeometry
string material:
Material name
int num_vertices:
Number of vertices on save, ignored when loading
Vertex[] vertices:
Segment vertices
int num_faces:
Number of faces on save, ignored when loading
Face[] faces:
Segment faces
ShadowGeometry:
string type:
See above
int num_positions:
Number of positions on save, ignored when loading
float[3][] positions:
Positions, currently only used to store the information
int num_faces:
Number of faces on save, ignored when loading
Face[] faces:
Faces, currently only used to store the information
ClothGeometry:
string type:
See above
string texture:
Cloth texture
int num_vertices:
Number of vertices on save, ignored when loading
ClothVertex[] vertices:
Cloth vertices
int num_faces:
Number of faces on save, ignored when loading
int[2][] stretch:
Stretch constraint value pairs
int[2][] cross:
Cross constraint value pairs
int[2][] bend:
Bend constraint value pairs
ClothCollision[] collisions:
Collisions
For every Material:
name mtl material_name.txt
string name:
Material name
int index:
Initial index on save, recalculated on load
string tex0:
Diffuse texture
string tex1:
Special texture 1
string tex2:
Special texture 2
string tex3:
Special texture 3
Flag[8] flags:
[string name, bool active, int enum_value]
int render_type:
Render type
int data0:
Shader data 0
int data1:
Shader data 1
Color diffuse:
Diffuse color
Color specular:
Specular color
Color ambient:
Ambient color
float gloss:
Gloss value
BBox
float[3] rotation:
Rotation in degrees
float[3] extents:
BBox extents
float[3] center:
BBox center
float radius:
BBox radius
Transform
float[3] rotation:
Rotation in degrees
float[3] position:
Position
float[3] sacle:
Scale
Color
float[4] rgba:
Channel values (0.0 to 1.0)
OR
int[4] rgba:
Channel values (0 to 255)
Vertex
float[3] position:
Position in world space
float[2] uv:
UV coordinate
float[3] normal:
Vertex normal
string[4] deformers:
Deformers for this vertex
float[4] weights:
Weights for the corresponding deformer
Color color:
Vertex color
Face
int[] vertices:
Indices to the vertices forming this polygon
ClothVertex
float[3] position:
Position in world space
float[2] uv:
UV coordinate
string deformer:
Joint this point moves with
bool is_fixed:
If true, does not get simulated and moves with deformer (if it exists)
ClothCollision
string name:
Collision name
string parent:
Parent of the collision object
int unknown_long:
Unknown purpose
float[3] collision_primitive:
[value 0, value 1, value 2]