Xファイルのフォーマット(3)

Posted on Wed 04 February 2009 in DirectX

Xファイルのフォーマット(1) Xファイルのフォーマット(2)

学校の課題でXファイルのアニメーションをOpenGLで再生することになりそうなので、Xファイルのフォーマットの続きをまとめてみる。

今回はフレームについて、
フレームは、メッシュの階層構造をあらわしたり、スキンメッシュにおけるボーンをあらわしたりします。
フレームの形式はは、このようになっている。

Frame Aframe { // 名前を持つ場合もある、この場合はAframeがこのフレームの名前である。
    FrameTransformMatrix {
        4x4行列
    }
    [ Meshes ] and/or [ More frames]
}

[フレームは、4x4行列1つを必ず持ち、メッシュを0\~N個、子フレームを0\~N個持ちます。
行列は、自分の空間から親の空間へ、座標変換を行うときに使用します。

最小のフレームを持つXファイルの形式は以下のようになります。

Frame {
    FrameTransformMatrix { //単位行列なので変換は行わない
        1.0, 0.0, 0.0, 0.0,
        0.0, 1.0, 0.0, 0.0,
        0.0, 0.0, 1.0, 0.0,
        0.0, 0.0, 0.0, 1.0,
    }
    Mesh {
        頂点の数;
        頂点の座標達;
        面の数;
        面のを表す頂点のインデックス;
        MeshMaterialList {
            使用するマテリアルの数;
            面の数;
            それぞれの面の使用する引数;//繰り返し
            使用するマテリアルへの参照;//繰り返し
            TextureFilename{
                "ファイルへのパス";
            }
        }
        MeshNormals {
            法線の数;
            法線の座標達;
            面法線インデックスの数;
            インデックス達;
        }
        MeshTextureCoords {
            頂点の数;
            テクスチャ座標u;テクスチャ座標v;//繰り返し
        }
    }
}