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

Posted on Thu 05 February 2009 in DirectX

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

今回は、アニメーションのまとめ。
アニメーションは以下のように表されます。

AnimationSet AnimationSet_name {
    Animation Animation0 {
        { frame1 } //フレーム名frame1のアニメーション
        AnimationKey {
            キータイプ;
            キー数;
            キー値;データ個数;データ;, //繰り返し
        }
    }
}

AnimationSetは、一つのアニメーションを表し、1\~N個のAnimationを持ちます。
Animationは、一つのフレームについての、キーアニメーションデータを格納するAnimationKeyを持ちます。
AnimationKey内のキータイプが0の場合は回転、1の場合はスケーリング、2の場合は平行移動、4の場合は変換行列を表します。

  • 回転の場合は、w,x,y,zの順でクォータニオンデータが格納されています
  • スケーリングの場合は、x,y,zの順で拡大縮小データが格納されています
  • 平行移動の場合は、x,y,zの順で平行移動値データが格納されています
  • 変換行列の場合は、4x4の回転、スケーリング、平行移動行列が掛け合わされた状態の行列が格納されています
Frame  frame1{
    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;//繰り返し
        }
    }
}
AnimationSet AnimationSet_name {
    Animation Animation0 {
        { frame1 } //フレーム名frame1のアニメーション
        AnimationKey {
            キータイプ;
            キー数;
            キー値;データ個数;データ;, //繰り返し
        }
    }
}