Xファイルのフォーマット(1)
Posted on Sat 24 March 2007 in DirectX
Xファイルの一番上には、
xof 0302txt 0064 というような可変長ヘッダーがある。
\"xof\"は、マジック番号と呼ばれる。
\"03\"は、メジャーバージョン3をあらわす。
\"02\"は、マイナーバージョン2をあらわす。
\"txt\"は、そのXファイルが、テキスト形式であることをあらわす。
\"txt\"の代わりに、バイナリファイルの\"bin\"、MSZip圧縮テキストの\"tzip\"、MSZip圧縮バイナリの\"bzip\"、が選べる。
\"0064\"は64ビット浮動小数点をあらわす。
代わりに、\"0032\"を選ぶとができる。
Xファイルはテンプレート形式で書かれている。
template {
メンバー1;
メンバー2;
.
.
.
}
template Vector {
<3D82AB5E-62DA-11cf-AB39-0020AF71E433>
FLOAT x;
FLOAT y;
FLOAT z;
}
Vectorは、ベクトルを定義する。
template MeshFace {
<3D82AB5F-62DA-11cf-AB39-0020AF71E433>
DWORD nFaceVertexIndices;
array DWORD faceVertexIndices[nFaceVertexIndices\];
}
Mesh テンプレートで、メッシュの面を定義するために使われる。
nFaceVertexIndicesは、インデックスの数。
array faceVertexIndicesは。インデックスの配列。
インデックスは、頂点を設定する順番を決める。
Meshは、単純なメッシュの情報を記述する。
template Mesh {
<3D82AB44-62DA-11cf-AB39-0020AF71E433>
DWORD nVertices;
array Vector
vertices[nVertices];
DWORD nFaces;
array MeshFace faces[nFaces];
[...]
}
nVerticesは、頂点の数。
array
verticesは、Vectorの要素数nVerticesの配列。
nFacesは、面の数。
array
facesは、MeshFaceの要素数nFacesの配列。
[...]があるので、他にマテリアル情報などを記述できる。