Goat3D scene file format ------------------------ Chunk structure --------------- Leaf nodes which carry actual data are marked with , or [MULTIPLE_CHILDREN]. Where choice is involved, options are seperated with the | symbol. SCENE +--ENV | +--AMBIENT | | +-- | +--FOG | +--FOG_COLOR | | +-- | +--FOG_EXP | +-- +--MTL | +--MTL_NAME | | +-- | +--MTL_ATTR | +--MTL_ATTR_NAME | | +-- | +--MTL_ATTR_VAL | | +-- | +--MTL_ATTR_MAP | +-- (filename) +--MESH | +--MESH_NAME | | +-- | +--MESH_MATERIAL | | +-- (material name or index) | +--MESH_VERTEX_LIST | | +--[FLOAT3] | +--MESH_NORMAL_LIST | | +--[FLOAT3] | +--MESH_TANGENT_LIST | | +--[FLOAT3] | +--MESH_TEXCOORD_LIST | | +--[FLOAT3] | +--MESH_SKINWEIGHT_LIST | | +--[FLOAT4] (vector elements are the 4 skin weights/vertex) | +--MESH_SKINMATRIX_LIST | | +--[INT4] (vector elements are the 4 matrix indices/vertex) | +--MESH_COLOR_LIST | | +--[FLOAT4] | +--MESH_BONES_LIST | | +--[INT|STRING] (list of bone nodes by name or index) | +--MESH_FACE_LIST | | +--MESH_FACE | | +--[INT] (three INT chunks for the vertex indices) | +--MESH_FILE | +-- (filename of mesh file to get all the data from) +--LIGHT | +--LIGHT_NAME | | +-- | +--LIGHT_POS | | +-- | +--LIGHT_COLOR | | +-- | +--LIGHT_ATTEN | | +-- (constant, linear, and quadratic attenuation) | +--LIGHT_DISTANCE | | +-- | +--LIGHT_DIR | | +-- | +--LIGHT_CONE_INNER | | +-- | +--LIGHT_CONE_OUTER | +-- +--CAMERA | +--CAMERA_NAME | | +-- | +--CAMERA_POS | | +-- | +--CAMERA_TARGET | | +-- | +--CAMERA_FOV | | +-- | +--CAMERA_NEARCLIP | | +-- | +--CAMERA_FARCLIP | +-- +--NODE +--NODE_NAME | +-- +--NODE_PARENT | +-- +--NODE_MESH|NODE_LIGHT|NODE_CAMERA | +-- +--NODE_POS | +-- +--NODE_ROT | +-- ([x, y, z], w <- real part) +--NODE_SCALE | +-- +--NODE_PIVOT | +-- +--NODE_MATRIX0 | +-- (first row) +--NODE_MATRIX1 | +-- (second row) +--NODE_MATRIX2 +-- (third row) NOTES: * Name chunks are mandatory. If something doesn't have a name, one must be made up, even if it's just "object%d". * In node chunks, both POS/ROT/SCALE, and MATRIX0/MATRIX1/MATRIX2 are mandatory and they must agree. Makes it easy for the reader to pick the transformation data in whichever way is more convenient.