2008年10月26日日曜日

FColladaの基本的な流れ

なんとか、スキンメッシュアニメーションを実装できた。
Colladaが比較的分かりやすいフォーマットだからだろうが、前作ろうとした時は断念したから、できて少しうれしい。

FColladaの使い方の基本的な流れをメモ。

// FCDDocumentに読み込む
FCollada::LoadDocumentFromFile(FCDDocument* document, const wchar_t* ファイル名);


//各要素のライブラリーを読み込む(例としてGeometryとする)
//Colladaのファイルの要素にもlibrary_geometriesとかあるので、それと同じと思えばよい
FCDGeometryLibrary* geolib = document->GetGeometryLibrary();


//エンティティを取る
FCDGeometry* geo = geolib->GetEntity();


必要な情報を抜き出し、保存する。

////////////////////////////////////
//ここまでで部品を読み込んだだけ
////////////////////////////////////

実際にシーン情報が保存されているのはColladaファイル内のlibrary_visual_scenesにある。
// sceneのルートノードを取る
FCDSceneNode* root=document->GetVisualSceneRoot();


各ノードを再帰的に呼び出す。
ルート以下のノードは、先ほど保存した各部品が指定されている。
FCDEntity* entity = node->GetInstance(i)->GetEntity(); //iはインスタンスのIndex
entity->GetDaeId()でIdを調べて、先ほどの読み込んだ部品と結びつける

と、頑張ってFCollada使って読み込んでみたけど、FColladaってもう更新行われないっぽい。
フォーラムにもう更新しませんっぽい事書かれてたし。Collada DOMを使えって事かなぁ。

0 件のコメント: