MSH2TXT


Project maintained by Schlechtwetterfront Hosted on GitHub Pages — Theme by mattgraham



Model Types

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]