[930] | 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 | |
---|