PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル

log

2011.03.03 Collada:分かり易いかもしれないフォーマットまとめ

ちょっとColladaファイルもぼちぼち覗いていたこともあって、ルート直下の
情報についてはある程度把握できたので、突然ではありますがColladaの
フォーマットについて少しだけまとめてみようかなと思います。

ColladaのフォーマットはXML準拠のテキストフォーマットで構成されています。
XMLについて実はあまり知らないのですが…;HTMLの拡張版という浅い認識で
とりあえず話を進めていきたいと思います。つまり、HTMLと同じように
全ての情報はタグと閉じタグによって括られます(HTMLにはインライン属性
という閉じタグがつかないものもありますが、それは置いておきます)。

注意:この日誌ではタグ文字は書き込めないようになっているみたいなので
タグ文字は[]に変換して書き込んでます。

Colladaのルートは[Collada]タグで構成されており、
[Collada]タグ内は以下のタグで構成されています。
・[asset]:ファイルに関するプロパティ
・[library_animations]:アニメーション情報
・[library_cameras]:カメラ情報
・[library_lights]:ライト情報
・[library_images]:イメージ情報
・[library_materials]:マテリアル情報
・[library_effects]:エフェクト情報
・[library_geometries]:ジオメトリ情報
・[library_controllers]:キーフレーム情報
・[library_visual_scenes]:仮想シーン情報
・[scene]:シーン情報

仮想シーンとシーンの違いは、仮想シーンは実際の1つ1つのシーン(例えば
走るモーションのシーンや歩くモーションのシーン)で、シーン情報は仮想
シーン情報全体を管理した情報となっているようです。
仮想シーン情報にそのシーン内で使用するジオメトリIDとそのジオメトリに
適応するマテリアルID等が格納されていて、マテリアル情報にはエフェクトIDが
登録されていて、エフェクト情報からシェーディング情報や使用するイメージ
IDを参照するといったようになっています。アニメーション関係のタグに
ついてはまだほとんど調べていないため、説明しても間違いだらけに
なりそうなのでここでは控えたいと思います。

ちなみに使用しないタグについては記述しなくてもよくて、記述の順番も
任意でよいといった感じですが、Colladaのルート直下のタグについては
同じタグは2回以上記述されないような仕様になっているように思いました。
というより、2つ読み込まれるとどう読み込んでいいか分かりませんし;
例えば実際にジオメトリを2つ格納したい場合は[library_geometries]直下に
[geometry]というタグを2つ格納しそのタグでジオメトリを分けるといった
感じです。また、HTMLと同じように
[geometry id="ModelID1" name="JohnSmith" ]
といった感じで、各ジオメトリにIDと名前を設定します。
IDを参照して情報を得るので名前というのは別に必要ないのですが、これは
3Dソフトで各情報の名前を表示する用のものなのかなと思いました。

てっきり、ものすごく複雑な構造になっているのかと思っていましたが、
一つ一つに分けてみればHTMLと同じような設計になっていて、なんだか
分かりやすくていいなと思いました。

2011.03.03 LW:LWO読み込みその3

ファイル 334-1.jpg

LWOのスケルゴンとウェイトマップを読み込めるようになりました。
スケルゴンはLWSでボーンを読み込めば別に必要ないのですが、、まあこちらの
方が色々と便利かなと思ったのでこちらでボーンをプログラムに読み込んで
いきたいと思います。とりあえずこれでLWOの読み込みは完成ですが、
LWOフォーマットはスキップ処理の実装はすんなりと出来ましたが頂点マップの
情報が至る所に分岐していたので、エラー処理にすごく苦戦してしまいました。
頂点マップ名だけを格納するチャンクとか、他のチャンクにまとめた方がいいと
思ったものですが、既に完成しているフォーマットに云っても仕方がありません。

次はLWS読み込み!一番実装が不明瞭なのはスケルゴンからどうやって
LWSと同じ初期姿勢を得るのかということですが、ただいまちょっと考え中です。