ちょっと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と同じような設計になっていて、なんだか
分かりやすくていいなと思いました。