• 追加された行はこの色です。
  • 削除された行はこの色です。
  • Xファイル へ行く。

[[シーングラフファイルの書き方]]

*Xファイル
**Xファイルとは
「Xファイル」とは,ファイル名に .x 拡張子が付いたファイルを指し, Direct3Dにおけるモデルデータの標準フォーマットです.
3Dの形状データ,マテリアル,テクスチャなどがテンプレートとして定義され, さらにユーザによって自由にテンプレートの定義の拡張を行うことができます.
**編集方法
:3Dの形状データ,マテリアルなど|3ds max や Metasequoia などのXファイルを出力できる市販のソフトを使って編集します.
:物理,力覚|Xファイルをメモ帳などのテキストエディタで開いて, データを直接入力して編集します.
**各データ型の記述テンプレート
-Xファイル標準のテンプレートについてはMicrosoft DirectX 8.0 Xファイル テンプレートに書いてあります.
-Springheadで拡張定義したテンプレートについては, SGD3D.cppの中のD3FileDoc::RegisterTemplates()に,
 "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}             # フレームへの参照
                           # (複数のフレームをツリーとして持つ場合は
                           # トップフレームを指す)
 }
のように記述されます.~
サンプルファイルとしてコマ([[TopRotYwithComment.x:http://springhead.info/src/Samples/data/TopRotYwithComment.x]])にコメントを付けましたのでご参照ください.

**ノードの説明
Springheadで拡張したノード(の一部)について説明します.
***MeshForVisual
フォーマットはMeshと同じ.グラフィックスで表示されるが,衝突判定の対象にならないMesh.ポリゴン数が多くても,物理シミュレータは重くならない.
***MeshForShape
フォーマットはMeshと同じだが,MeshNormalsやMaterialListなどの子ノードは持てない.衝突判定の対象になるがグラフィックスでは表示されないMesh.