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