DirectXの .X形式のファイルを読み込んで表示できると便利です。
現在の3Dアプリでは .X と .FBX が主に広く使われているようです。
では、例によってメタセコイアで .X を出力して中を見てみます。
三角ポリゴンを一枚だけ作って保存したものをメモ帳で開いてみます。
xof 0302txt 0064 template Vector { template Coords2d { template Matrix4x4 { template ColorRGBA { template ColorRGB { template IndexedColor { template Boolean { template Boolean2d { template MaterialWrap { template TextureFilename { template Material { template MeshFace { template MeshFaceWraps { template MeshTextureCoords { template MeshMaterialList { template MeshNormals { template MeshVertexColors { template Mesh { Header{ Mesh { |
なにやら冗長なフォーマットですね。
これは、データの解釈方法などがテンプレートで定義されているからです。
一般的なデータしか使わないのであればテンプレート無しの方が見やすいです。
では早速テンプレートを除去してみます。
xof 0302txt 0064 Header{ Mesh { |
随分、短くなって見やすくなりました。
ためしに DirectX SDK に付属のビューワーで開いてみると問題なく
表示されています。
つまり、これもシンプルですがれっきとした .X のファイルです。
まず、最初にある xof 0302txt 0064 は X ファイルのテキスト形式ですという
事を示しています。
xof はマジック番号で固定です。
その後にバージョン番号(メジャーとマイナー)の 03 と 02 が続いて
形式タイプの txt が記されています。
形式タイプは txt テキストファイル 、bin バイナリファイル
tzip MSZip 圧縮テキストファイル 、bzip MSZip 圧縮バイナリファイル の4種類があります。
最後の 0064 は浮動小数点サイズです。
0064 は64ビット浮動小数点で 0032 は32ビット浮動小数点です。
マジックコードの後には
Header チャンクがあって、次に Mesh チャンクがあります。
Mesh チャンクの中に MeshMaterialList チャンクがあって、
その中に Material チャンクがあります。
次回の解析編2ではテクスチャ付きの Xファイルを見てみます。