annotate doc/goatfmt @ 14:188c697b3b49
- added a document describing the goat3d file format chunk hierarchy
- started an alternative XML-based file format
- added the openctm library
author |
John Tsiombikas <nuclear@member.fsf.org> |
date |
Thu, 26 Sep 2013 04:47:05 +0300 |
parents |
|
children |
f1b4c27382ce |
rev |
line source |
nuclear@14
|
1 Chunk structure
|
nuclear@14
|
2 ---------------
|
nuclear@14
|
3
|
nuclear@14
|
4 Leaf nodes which carry actual data are marked with <SINGLE_CHILD>, or
|
nuclear@14
|
5 [MULTIPLE_CHILDREN]. Where choice is involved, options are seperated with the |
|
nuclear@14
|
6 symbol.
|
nuclear@14
|
7
|
nuclear@14
|
8 SCENE
|
nuclear@14
|
9 +--ENV
|
nuclear@14
|
10 | +--AMBIENT
|
nuclear@14
|
11 | | +--<FLOAT3>
|
nuclear@14
|
12 | +--FOG
|
nuclear@14
|
13 | +--FOG_COLOR
|
nuclear@14
|
14 | | +--<FLOAT3>
|
nuclear@14
|
15 | +--FOG_EXP
|
nuclear@14
|
16 | +--<FLOAT>
|
nuclear@14
|
17 +--MTL
|
nuclear@14
|
18 | +--MTL_NAME
|
nuclear@14
|
19 | | +--<STRING>
|
nuclear@14
|
20 | +--MTL_ATTR
|
nuclear@14
|
21 | +--MTL_ATTR_NAME
|
nuclear@14
|
22 | | +--<STRING>
|
nuclear@14
|
23 | +--MTL_ATTR_VAL
|
nuclear@14
|
24 | | +--<FLOAT|FLOAT3|FLOAT4>
|
nuclear@14
|
25 | +--MTL_ATTR_MAP
|
nuclear@14
|
26 | +--<STRING> (filename)
|
nuclear@14
|
27 +--MESH
|
nuclear@14
|
28 | +--MESH_NAME
|
nuclear@14
|
29 | | +--<STRING>
|
nuclear@14
|
30 | +--MESH_MATERIAL
|
nuclear@14
|
31 | | +--<STRING> (material name)
|
nuclear@14
|
32 | +--MESH_VERTEX_LIST
|
nuclear@14
|
33 | | +--[FLOAT3]
|
nuclear@14
|
34 | +--MESH_NORMAL_LIST
|
nuclear@14
|
35 | | +--[FLOAT3]
|
nuclear@14
|
36 | +--MESH_TANGENT_LIST
|
nuclear@14
|
37 | | +--[FLOAT3]
|
nuclear@14
|
38 | +--MESH_TEXCOORD_LIST
|
nuclear@14
|
39 | | +--[FLOAT3]
|
nuclear@14
|
40 | +--MESH_SKINWEIGHT_LIST
|
nuclear@14
|
41 | | +--[FLOAT4] (vector elements are the 4 skin weights/vertex)
|
nuclear@14
|
42 | +--MESH_SKINMATRIX_LIST
|
nuclear@14
|
43 | | +--[INT4] (vector elements are the 4 matrix indices/vertex)
|
nuclear@14
|
44 | +--MESH_COLOR_LIST
|
nuclear@14
|
45 | | +--[FLOAT4]
|
nuclear@14
|
46 | +--MESH_BONES_LIST
|
nuclear@14
|
47 | | +--[INT|STRING] (list of bone nodes by name or index)
|
nuclear@14
|
48 | +--MESH_FACE_LIST
|
nuclear@14
|
49 | | +--MESH_FACE
|
nuclear@14
|
50 | | +--[INT] (three INT chunks for the vertex indices)
|
nuclear@14
|
51 | +--MESH_FILE
|
nuclear@14
|
52 | +--<STRING> (filename of mesh file to get all the data from)
|
nuclear@14
|
53 +--LIGHT
|
nuclear@14
|
54 | +--LIGHT_NAME
|
nuclear@14
|
55 | | +--<STRING>
|
nuclear@14
|
56 | +--LIGHT_POS
|
nuclear@14
|
57 | | +--<FLOAT3>
|
nuclear@14
|
58 | +--LIGHT_COLOR
|
nuclear@14
|
59 | | +--<FLOAT3>
|
nuclear@14
|
60 | +--LIGHT_ATTEN
|
nuclear@14
|
61 | | +--<FLOAT3> (constant, linear, and quadratic attenuation)
|
nuclear@14
|
62 | +--LIGHT_DISTANCE
|
nuclear@14
|
63 | | +--<FLOAT>
|
nuclear@14
|
64 | +--LIGHT_DIR
|
nuclear@14
|
65 | | +--<FLOAT3>
|
nuclear@14
|
66 | +--LIGHT_CONE_INNER
|
nuclear@14
|
67 | | +--<FLOAT>
|
nuclear@14
|
68 | +--LIGHT_CONE_OUTER
|
nuclear@14
|
69 | +--<FLOAT>
|
nuclear@14
|
70 +--CAMERA
|
nuclear@14
|
71 | +--CAMERA_NAME
|
nuclear@14
|
72 | | +--<STRING>
|
nuclear@14
|
73 | +--CAMERA_POS
|
nuclear@14
|
74 | | +--<FLOAT3>
|
nuclear@14
|
75 | +--CAMERA_TARGET
|
nuclear@14
|
76 | | +--<FLOAT3>
|
nuclear@14
|
77 | +--CAMERA_FOV
|
nuclear@14
|
78 | | +--<FLOAT>
|
nuclear@14
|
79 | +--CAMERA_NEARCLIP
|
nuclear@14
|
80 | | +--<FLOAT>
|
nuclear@14
|
81 | +--CAMERA_FARCLIP
|
nuclear@14
|
82 | +--<FLOAT>
|
nuclear@14
|
83 +--NODE
|
nuclear@14
|
84 +--NODE_NAME
|
nuclear@14
|
85 | +--<STRING>
|
nuclear@14
|
86 +--NODE_PARENT
|
nuclear@14
|
87 | +--<INT|STRING>
|
nuclear@14
|
88 +--NODE_MESH|NODE_LIGHT|NODE_CAMERA
|
nuclear@14
|
89 | +--<INT|STRING>
|
nuclear@14
|
90 +--NODE_POS
|
nuclear@14
|
91 | +--<FLOAT3>
|
nuclear@14
|
92 +--NODE_ROT
|
nuclear@14
|
93 | +--<FLOAT4> ([x, y, z], w <- real part)
|
nuclear@14
|
94 +--NODE_SCALE
|
nuclear@14
|
95 | +--<FLOAT3>
|
nuclear@14
|
96 +--NODE_PIVOT
|
nuclear@14
|
97 | +--<FLOAT3>
|
nuclear@14
|
98 +--NODE_MATRIX0
|
nuclear@14
|
99 | +--<FLOAT4> (first row)
|
nuclear@14
|
100 +--NODE_MATRIX1
|
nuclear@14
|
101 | +--<FLOAT4> (second row)
|
nuclear@14
|
102 +--NODE_MATRIX2
|
nuclear@14
|
103 +--<FLOAT4> (third row)
|
nuclear@14
|
104
|
nuclear@14
|
105 NOTES:
|
nuclear@14
|
106 * Name chunks are mandatory. If something doesn't have a name, one must be made
|
nuclear@14
|
107 up, even if it's just "object%d".
|
nuclear@14
|
108 * In node chunks, both POS/ROT/SCALE, and MATRIX0/MATRIX1/MATRIX2 are mandatory
|
nuclear@14
|
109 and they must agree. Makes it easy for the reader to pick the transformation
|
nuclear@14
|
110 data in whichever way is more convenient.
|