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.
終了行:
[[シーングラフファイルの書き方]]
*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.
ページ名:
サイト内検索
and
or
メニュー
Springhead
トップページ
スクリーンショットと紹介
ダウンロード
ドキュメント
開発者向け情報
SprBlender
SprBlender
SprBlenderの特徴
SprBlender使用例
ダウンロード
ドキュメント
Choreonoid Springhead Plugin
CnoidSprPlugin
Counter: 0, today: 0, yesterday: 0