「Xファイル」とは,ファイル名に .x 拡張子が付いたファイルを指し, Direct3Dにおけるモデルデータの標準フォーマットです. 3Dの形状データ,マテリアル,テクスチャなどがテンプレートとして定義され, さらにユーザによって自由にテンプレートの定義の拡張を行うことができます.
"template 型名 {\n"
"キー\n"
"型 データの名前;\n"
" : "
" : "
"[参照]\n"
"}\n"
のような形で定義されているか,typedef float FLOAT;
DEF_RECORD(XSphere, {
/// この型のGUID.TypeDescがGUIDを持つようになる.
GUID Guid(){ return WBGuid("4B4F22CC-9DD9-4f04-9373-9E0A03E36C35"); }
FLOAT Radius;
DWORD Slices;
DWORD Stacks;
});
のように構造体の定義と同時に定義されている例として,剛体オブジェクトのデータを持つテンプレート Solid では, 以下のような定義に対し,
//剛体データの定義部分
"template Solid {\n"
" <A9C20358-EDEB-4c0b-97AB-37D330B6BFA4>\n"
" FLOAT mass;\n"
" Matrix3x3 inertia;\n"
" Vector velocity;\n"
" Vector angularVelocity;\n"
" Vector center;\n"
" [Frame]\n"
"}\n"
Xファイルでは,
//ファイルでの剛体データの記述
Solid soSpinTop{
2.5; # 質量
3.0, 0.0, 0.0,
0.0, 1.0, 0.0, # 慣性テンソル
0.0, 0.0, 3.0;;
0.0; 0.0; 0.0;; # 初期速度
0.01; 16.0; 0.0;; # 初期角速度
0.0; 0.1; 0.0;; # 重心(メッシュの原点からの相対位置)
{frSpinTop} # フレームへの参照
# (複数のフレームをツリーとして持つ場合は
# トップフレームを指す)
}
のように記述されます.Springheadで拡張したノード(の一部)について説明します.
フォーマットはMeshと同じ.グラフィックスで表示されるが,衝突判定の対象にならないMesh.ポリゴン数が多くても,物理シミュレータは重くならない.
フォーマットはMeshと同じだが,MeshNormalsやMaterialListなどの子ノードは持てない.衝突判定の対象になるがグラフィックスでは表示されないMesh.