The picture below is a .X file opened by DirectX Mesh View. Today, we look at the X file's detail information. I strongly recommand readers search "X File Format Reference" topic in DirectX SDK documentation.
The variable-length header is compulsory and must be at the beginning of the data stream. The header contains the following data.
Type Required Size (in bytes) Value Description
Magic Number x 4 "xof "
Version Number x 2 "03" Major version 3
"03" Minor version 3
Format Type x 4 "txt " Text File
"bin " Binary file
"tzip" MSZip compressed text file
"bzip" MSZip compressed binary file
Float Size x "0064" 64-bit floats
x "0032" 32-bit floats
[cpp]
xof 0302txt 0032 //Header
Material PDX01_-_Default {
1.000000;1.000000;1.000000;1.000000;; //Face color
0.000000; //Power - the power is the specular exponent of the material
0.900000;0.900000;0.900000;; //Material specular color
0.000000;0.000000;0.000000;; //Material emissive color
TextureFilename {
"wood.boards.bmp";
}
}
Frame Box01 {
FrameTransformMatrix { // Defines a local transform for a frame(Optional)
1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,-4.720104,0.000000,3.721657,1.000000;;
}
Mesh {
8; //Number of vertices.
-19.277889;-15.037872;0.000000;, //Array of vertices, each of type Vector
9.837681;-15.037872;0.000000;,
-19.277889;22.481186;0.000000;,
9.837681;22.481186;0.000000;,
-19.277889;-15.037872;13.356144;,
9.837681;-15.037872;13.356144;,
-19.277889;22.481186;13.356144;,
9.837681;22.481186;13.356144;;
12; //Number of faces(triangle)
3;0,2,3;, //Array of indices
3;3,1,0;,
3;4,5,7;,
3;7,6,4;,
3;0,1,5;,
3;5,4,0;,
3;1,3,7;,
3;7,5,1;,
3;3,2,6;,
3;6,7,3;,
3;2,0,4;,
3;4,6,2;;
MeshNormals { //Optional
6; //Number of normals.
0.000000;0.000000;-1.000000;, //Array of normals
0.000000;0.000000;1.000000;,
0.000000;-1.000000;0.000000;,
1.000000;0.000000;0.000000;,
0.000000;1.000000;0.000000;,
-1.000000;0.000000;0.000000;;
12; //Number of face normals, equal face's number!
3;0,0,0;, //Array of mesh face normals
3;0,0,0;,
3;1,1,1;,
3;1,1,1;,
3;2,2,2;,
3;2,2,2;,
3;3,3,3;,
3;3,3,3;,
3;4,4,4;,
3;4,4,4;,
3;5,5,5;,
3;5,5,5;;
}
MeshMaterialList { //Optional
1; //The number of materials.
12; //The number of indices. equal face's number
0, //An arrray of DWORDs containing the face indices
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0;
{ PDX01_-_Default } //Reference to the material we define
}
MeshTextureCoords { //Optional
8; //Number of texture coordinates
0.000000;0.000000;, //Array of 2D texture coordinates.
1.000000;0.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
0.000000;0.000000;,
1.000000;0.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;;
}
}
}
xof 0302txt 0032 //Header
Material PDX01_-_Default {
1.000000;1.000000;1.000000;1.000000;; //Face color
0.000000; //Power - the power is the specular exponent of the material
0.900000;0.900000;0.900000;; //Material specular color
0.000000;0.000000;0.000000;; //Material emissive color
TextureFilename {
"wood.boards.bmp";
}
}
Frame Box01 {
FrameTransformMatrix { // Defines a local transform for a frame(Optional)
1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,-4.720104,0.000000,3.721657,1.000000;;
}
Mesh {
8; //Number of vertices.
-19.277889;-15.037872;0.000000;, //Array of vertices, each of type Vector
9.837681;-15.037872;0.000000;,
-19.277889;22.481186;0.000000;,
9.837681;22.481186;0.000000;,
-19.277889;-15.037872;13.356144;,
9.837681;-15.037872;13.356144;,
-19.277889;22.481186;13.356144;,
9.837681;22.481186;13.356144;;
12; //Number of faces(triangle)
3;0,2,3;, //Array of indices
3;3,1,0;,
3;4,5,7;,
3;7,6,4;,
3;0,1,5;,
3;5,4,0;,
3;1,3,7;,
3;7,5,1;,
3;3,2,6;,
3;6,7,3;,
3;2,0,4;,
3;4,6,2;;
MeshNormals { //Optional
6; //Number of normals.
0.000000;0.000000;-1.000000;, //Array of normals
0.000000;0.000000;1.000000;,
0.000000;-1.000000;0.000000;,
1.000000;0.000000;0.000000;,
0.000000;1.000000;0.000000;,
-1.000000;0.000000;0.000000;;
12; //Number of face normals, equal face's number!
3;0,0,0;, //Array of mesh face normals
3;0,0,0;,
3;1,1,1;,
3;1,1,1;,
3;2,2,2;,
3;2,2,2;,
3;3,3,3;,
3;3,3,3;,
3;4,4,4;,
3;4,4,4;,
3;5,5,5;,
3;5,5,5;;
}
MeshMaterialList { //Optional
1; //The number of materials.
12; //The number of indices. equal face's number
0, //An arrray of DWORDs containing the face indices
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0;
{ PDX01_-_Default } //Reference to the material we define
}
MeshTextureCoords { //Optional
8; //Number of texture coordinates
0.000000;0.000000;, //Array of 2D texture coordinates.
1.000000;0.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;,
0.000000;0.000000;,
1.000000;0.000000;,
0.000000;-1.000000;,
1.000000;-1.000000;;
}
}
}