1 | <!ELEMENT mesh (sharedgeometry?, submeshes, |
---|
2 | skeletonlink?, boneassignments?, levelofdetail?, submeshnames?, poses?, animations?, extremes?)> |
---|
3 | <!ELEMENT sharedgeometry (vertexbuffer+)> |
---|
4 | <!ATTLIST sharedgeometry |
---|
5 | vertexcount CDATA #REQUIRED> |
---|
6 | <!ELEMENT submeshes (submesh+)> |
---|
7 | <!ELEMENT submesh (textures?,faces,geometry?,boneassignments?)> |
---|
8 | <!ATTLIST submesh |
---|
9 | material CDATA #REQUIRED |
---|
10 | usesharedvertices (true|false) "true" |
---|
11 | use32bitindexes (true|false) "false" |
---|
12 | operationtype (triangle_list|triangle_strip|triangle_fan) "triangle_list"> |
---|
13 | <!ELEMENT textures (texture+)> |
---|
14 | <!ELEMENT texture EMPTY> |
---|
15 | <!ATTLIST texture |
---|
16 | alias CDATA #REQUIRED |
---|
17 | name CDATA #REQUIRED> |
---|
18 | <!ELEMENT faces (face+)> |
---|
19 | <!ATTLIST faces |
---|
20 | count CDATA #IMPLIED> |
---|
21 | <!ELEMENT face EMPTY> |
---|
22 | <!-- Do not need all 3 vertex indexes if triangle_strip or triangle_fan |
---|
23 | since every face after the first one is defined by a single vertex --> |
---|
24 | <!ATTLIST face |
---|
25 | v1 CDATA #REQUIRED |
---|
26 | v2 CDATA #IMPLIED |
---|
27 | v3 CDATA #IMPLIED> |
---|
28 | <!ELEMENT geometry (vertexbuffer+)> |
---|
29 | <!ATTLIST geometry |
---|
30 | vertexcount CDATA #IMPLIED > |
---|
31 | <!ELEMENT skeletonlink EMPTY> |
---|
32 | <!ATTLIST skeletonlink |
---|
33 | name CDATA #REQUIRED> |
---|
34 | <!ELEMENT boneassignments (vertexboneassignment+)> |
---|
35 | <!ELEMENT vertexboneassignment EMPTY> |
---|
36 | <!ATTLIST vertexboneassignment |
---|
37 | vertexindex CDATA #REQUIRED |
---|
38 | boneindex CDATA #REQUIRED |
---|
39 | weight CDATA "1.0"> |
---|
40 | <!ELEMENT levelofdetail ( (lodmanual|lodgenerated)+ )> |
---|
41 | <!ATTLIST levelofdetail |
---|
42 | numlevels CDATA #REQUIRED |
---|
43 | manual (true|false) "false"> |
---|
44 | <!ELEMENT lodmanual EMPTY> |
---|
45 | <!ATTLIST lodmanual |
---|
46 | fromdepthsquared CDATA #REQUIRED |
---|
47 | meshname CDATA #REQUIRED> |
---|
48 | <!ELEMENT lodgenerated (lodfacelist)> |
---|
49 | <!ATTLIST lodgenerated |
---|
50 | fromdepthsquared CDATA #REQUIRED |
---|
51 | meshname CDATA #REQUIRED> |
---|
52 | <!ELEMENT lodfacelist (face)+> |
---|
53 | <!ATTLIST lodfacelist |
---|
54 | submeshindex CDATA #REQUIRED |
---|
55 | numfaces CDATA #REQUIRED> |
---|
56 | |
---|
57 | <!ELEMENT vertexbuffer (vertex+)> |
---|
58 | <!ATTLIST vertexbuffer |
---|
59 | positions (true|false) "false" |
---|
60 | normals (true|false) "false" |
---|
61 | colours_diffuse (true|false) "false" |
---|
62 | colours_specular (true|false) "false" |
---|
63 | texture_coords (0|1|2|3|4|5|6|7|8) "0" |
---|
64 | texture_coord_dimensions_0 (0|1|2|3) "2" |
---|
65 | texture_coord_dimensions_1 (0|1|2|3) "2" |
---|
66 | texture_coord_dimensions_2 (0|1|2|3) "2" |
---|
67 | texture_coord_dimensions_3 (0|1|2|3) "2" |
---|
68 | texture_coord_dimensions_4 (0|1|2|3) "2" |
---|
69 | texture_coord_dimensions_5 (0|1|2|3) "2" |
---|
70 | texture_coord_dimensions_6 (0|1|2|3) "2" |
---|
71 | texture_coord_dimensions_7 (0|1|2|3) "2" |
---|
72 | tangents (true|false) "false" |
---|
73 | binormals (true|false) "false"> |
---|
74 | <!ELEMENT vertex (position, normal?, tangent?, binormal?, colour_diffuse?, colour_specular?, |
---|
75 | texcoord*)> |
---|
76 | <!ELEMENT position EMPTY> |
---|
77 | <!ATTLIST position |
---|
78 | x CDATA #REQUIRED |
---|
79 | y CDATA #REQUIRED |
---|
80 | z CDATA #REQUIRED > |
---|
81 | <!ELEMENT normal EMPTY> |
---|
82 | <!ATTLIST normal |
---|
83 | x CDATA #REQUIRED |
---|
84 | y CDATA #REQUIRED |
---|
85 | z CDATA #REQUIRED > |
---|
86 | <!ELEMENT tangent EMPTY> |
---|
87 | <!ATTLIST tangent |
---|
88 | x CDATA #REQUIRED |
---|
89 | y CDATA #REQUIRED |
---|
90 | z CDATA #REQUIRED > |
---|
91 | <!ELEMENT binormal EMPTY> |
---|
92 | <!ATTLIST binormal |
---|
93 | x CDATA #REQUIRED |
---|
94 | y CDATA #REQUIRED |
---|
95 | z CDATA #REQUIRED > |
---|
96 | <!ELEMENT colour_diffuse EMPTY> |
---|
97 | <!-- 'value' is a space-separated string containing r,g,b and optionally alpha |
---|
98 | for example value="1.0 0.0 0.0 0.5" or value="0.7 0.5 0.2" --> |
---|
99 | <!ATTLIST colour_diffuse |
---|
100 | value CDATA #REQUIRED> |
---|
101 | <!ELEMENT colour_specular EMPTY> |
---|
102 | <!-- 'value' is a space-separated string containing r,g,b and optionally alpha |
---|
103 | for example value="1.0 0.0 0.0 0.5" or value="0.7 0.5 0.2" --> |
---|
104 | <!ATTLIST colour_specular |
---|
105 | value CDATA #REQUIRED> |
---|
106 | <!ELEMENT texcoord EMPTY> |
---|
107 | <!ATTLIST texcoord |
---|
108 | u CDATA #REQUIRED |
---|
109 | v CDATA "0" |
---|
110 | w CDATA "0" > |
---|
111 | <!ELEMENT submeshnames (submeshname+)> |
---|
112 | <!ELEMENT submeshname EMPTY> |
---|
113 | <!ATTLIST submeshname |
---|
114 | name CDATA #REQUIRED |
---|
115 | index CDATA #REQUIRED > |
---|
116 | <!ELEMENT poses (pose+)> |
---|
117 | <!-- A single pose references a single set of geometry data with a set of offsets. |
---|
118 | If target is 'mesh', targets the shared geometry, if target is submesh, targets |
---|
119 | the submesh identified by 'index'. |
---|
120 | --> |
---|
121 | <!ELEMENT pose (poseoffset+) > |
---|
122 | <!ATTLIST pose |
---|
123 | target (mesh|submesh) #REQUIRED |
---|
124 | index CDATA "0" |
---|
125 | name CDATA ""> |
---|
126 | <!-- poseoffset lists the vertices that change position, and by how much --> |
---|
127 | <!ELEMENT poseoffset EMPTY> |
---|
128 | <!ATTLIST poseoffset |
---|
129 | index CDATA #REQUIRED |
---|
130 | x CDATA #REQUIRED |
---|
131 | y CDATA #REQUIRED |
---|
132 | z CDATA #REQUIRED > |
---|
133 | <!ELEMENT animations (animation+)> |
---|
134 | <!ELEMENT animation (tracks)> |
---|
135 | <!ATTLIST animation |
---|
136 | name CDATA #REQUIRED |
---|
137 | length CDATA #REQUIRED > |
---|
138 | <!ELEMENT tracks (track+)> |
---|
139 | <!ELEMENT track (keyframes)> |
---|
140 | <!-- Morph animation is a keyframed set of absolute vertex positions. Cannot |
---|
141 | be blended with other morph animations or pose animation. |
---|
142 | Pose animation is a set of keyframes referencing poses and a weight, |
---|
143 | with one track per set of vertex data. |
---|
144 | Can be blended with other poses but not with morph animation. |
---|
145 | If target is 'mesh', targets the shared geometry, if target is submesh, targets |
---|
146 | the submesh identified by 'index'. |
---|
147 | --> |
---|
148 | <!ATTLIST track |
---|
149 | target (mesh|submesh) #REQUIRED |
---|
150 | index CDATA "0" |
---|
151 | type (morph|pose) #REQUIRED> |
---|
152 | <!-- keyframes are applicable for all tracks, but for morph tracks |
---|
153 | they contain positions, and for pose tracks they contain pose references --> |
---|
154 | <!ELEMENT keyframes (keyframe*)> |
---|
155 | <!ELEMENT keyframe (position*, poseref*)> |
---|
156 | <!ATTLIST keyframe |
---|
157 | time CDATA #REQUIRED > |
---|
158 | <!-- Pose reference, links to pose via numeric index. target of parent track |
---|
159 | must agree with target of referenced pose. For a single track, each |
---|
160 | keyframe can reference multiple poses at different weights. --> |
---|
161 | <!ELEMENT poseref EMPTY> |
---|
162 | <!ATTLIST poseref |
---|
163 | poseindex CDATA #REQUIRED |
---|
164 | influence CDATA "1.0"> |
---|
165 | <!-- Optional extremity points on submeshes for sub-object transparency sorting --> |
---|
166 | <!ELEMENT extremes (submesh+)> |
---|
167 | <!ELEMENT submesh_extremes (position+)> |
---|
168 | <!ATTLIST submesh_extremes |
---|
169 | index CDATA #REQUIRED> |
---|
170 | |
---|
171 | |
---|
172 | |
---|
173 | |
---|
174 | |
---|
175 | |
---|
176 | |
---|
177 | |
---|
178 | |
---|
179 | |
---|