1 | <!ELEMENT mesh (sharedgeometry?, submeshes, |
---|
2 | skeletonlink?, boneassignments?, levelofdetail?, submeshnames?, poses?, animations?)> |
---|
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 #REQUIRED> |
---|
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 #REQUIRED > |
---|
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 | <!ELEMENT vertex (position, normal?, colour_diffuse?, colour_specular?, |
---|
73 | texcoord*)> |
---|
74 | <!ELEMENT position EMPTY> |
---|
75 | <!ATTLIST position |
---|
76 | x CDATA #REQUIRED |
---|
77 | y CDATA #REQUIRED |
---|
78 | z CDATA #REQUIRED > |
---|
79 | <!ELEMENT normal EMPTY> |
---|
80 | <!ATTLIST normal |
---|
81 | x CDATA #REQUIRED |
---|
82 | y CDATA #REQUIRED |
---|
83 | z CDATA #REQUIRED > |
---|
84 | <!ELEMENT colour_diffuse EMPTY> |
---|
85 | <!-- 'value' is a space-separated string containing r,g,b and optionally alpha |
---|
86 | for example value="1.0 0.0 0.0 0.5" or value="0.7 0.5 0.2" --> |
---|
87 | <!ATTLIST colour_diffuse |
---|
88 | value CDATA #REQUIRED> |
---|
89 | <!ELEMENT colour_specular EMPTY> |
---|
90 | <!-- 'value' is a space-separated string containing r,g,b and optionally alpha |
---|
91 | for example value="1.0 0.0 0.0 0.5" or value="0.7 0.5 0.2" --> |
---|
92 | <!ATTLIST colour_specular |
---|
93 | value CDATA #REQUIRED> |
---|
94 | <!ELEMENT texcoord EMPTY> |
---|
95 | <!ATTLIST texcoord |
---|
96 | u CDATA #REQUIRED |
---|
97 | v CDATA "0" |
---|
98 | w CDATA "0" > |
---|
99 | <!ELEMENT submeshnames (submeshname+)> |
---|
100 | <!ELEMENT submeshname EMPTY> |
---|
101 | <!ATTLIST submeshname |
---|
102 | name CDATA #REQUIRED |
---|
103 | index CDATA #REQUIRED > |
---|
104 | <!ELEMENT poses (pose+)> |
---|
105 | <!-- A single pose references a single set of geometry data with a set of offsets. |
---|
106 | If target is 'mesh', targets the shared geometry, if target is submesh, targets |
---|
107 | the submesh identified by 'index'. |
---|
108 | --> |
---|
109 | <!ELEMENT pose (poseoffset+) > |
---|
110 | <!ATTLIST pose |
---|
111 | target (mesh|submesh) #REQUIRED |
---|
112 | index CDATA "0" |
---|
113 | name CDATA ""> |
---|
114 | <!-- poseoffset lists the vertices that change position, and by how much --> |
---|
115 | <!ELEMENT poseoffset EMPTY> |
---|
116 | <!ATTLIST poseoffset |
---|
117 | index CDATA #REQUIRED |
---|
118 | x CDATA #REQUIRED |
---|
119 | y CDATA #REQUIRED |
---|
120 | z CDATA #REQUIRED > |
---|
121 | <!ELEMENT animations (animation+)> |
---|
122 | <!ELEMENT animation (tracks)> |
---|
123 | <!ATTLIST animation |
---|
124 | name CDATA #REQUIRED |
---|
125 | length CDATA #REQUIRED > |
---|
126 | <!ELEMENT tracks (track+)> |
---|
127 | <!ELEMENT track (keyframes)> |
---|
128 | <!-- Morph animation is a keyframed set of absolute vertex positions. Cannot |
---|
129 | be blended with other morph animations or pose animation. |
---|
130 | Pose animation is a set of keyframes referencing poses and a weight, |
---|
131 | with one track per set of vertex data. |
---|
132 | Can be blended with other poses but not with morph animation. |
---|
133 | If target is 'mesh', targets the shared geometry, if target is submesh, targets |
---|
134 | the submesh identified by 'index'. |
---|
135 | --> |
---|
136 | <!ATTLIST track |
---|
137 | target (mesh|submesh) #REQUIRED |
---|
138 | index CDATA "0" |
---|
139 | type (morph|pose) #REQUIRED> |
---|
140 | <!-- keyframes are applicable for all tracks, but for morph tracks |
---|
141 | they contain positions, and for pose tracks they contain pose references --> |
---|
142 | <!ELEMENT keyframes (keyframe*)> |
---|
143 | <!ELEMENT keyframe (position*, poseref*)> |
---|
144 | <!ATTLIST keyframe |
---|
145 | time CDATA #REQUIRED > |
---|
146 | <!-- Pose reference, links to pose via numeric index. target of parent track |
---|
147 | must agree with target of referenced pose. For a single track, each |
---|
148 | keyframe can reference multiple poses at different weights. --> |
---|
149 | <!ELEMENT poseref EMPTY> |
---|
150 | <!ATTLIST poseref |
---|
151 | poseindex CDATA #REQUIRED |
---|
152 | influence CDATA "1.0"> |
---|
153 | |
---|
154 | |
---|
155 | |
---|
156 | |
---|
157 | |
---|
158 | |
---|
159 | |
---|
160 | |
---|
161 | |
---|