18
12

More than 5 years have passed since last update.

3Dモデル表現形式Colladaについて

Last updated at Posted at 2018-04-17

はじめに

3Dモデルの表現形式は非常に種類が多く、
使用できるアプリ、できること、できないことをはっきりさせておかないと大変です。
この記事では比較的多くのアプリケーションで使用でき、
表現能力もそこそこあるColladaについて紹介します。

Colladaとは

  • 3Dモデルを配布するためのフォーマットで、xmlで記述される.拡張子dae。
  • 元々はPS3用に作られたものである。
  • 対応ソフトが多く、Blenderでも生成できる。
  • ロボット系だとROSのロボットモデルであるURDFのメッシュにも使われている。
  • v1.5とv1.4で多少違いがあり、どちらか一方にしか対応してないケースもあるので注意。
  • ちなみにテクスチャやボーンにも対応しています。

Khronosからファイルフォーマットの詳細についてダウンロードできます。
日本語版もあり。(ソニー製だから?)

最小セットの例は?

ドキュメントの最後にキューブの例が載っています。

のと、一度blenderで簡単なモデル(デフォルトキューブも可)を
エクスポートして、エディタで開くのが楽でしょう。

どうやって読むの?

人間が読む場合を考えると、最低限xmlの知識が求められます。

公式のリファレンスカードにスキーマがわかりやすくまとめられています。

これと最小セットの例を照らし合わせると大体読めると思います。

最小セットから紐解いてみる

最小セットでは以下のような構造でデータを記述しています。

  • COLLADA
    • asset
      • ファイルの属性など
    • library_effects
      • material用のeffect
    • library_materials
      • ここでmaterialにeffectを指定
    • library_geometries
      • geometry
        • この中で頂点、法線、面を指定する
    • library_visual_scenes
      • visual_scene
        • nodeごとに座標系設定
          • instance_geometrygeometryをシーンに生成
    • scene
      • instance_visual_sceneでシーンを生成

参照が複雑だったり設定の重複が多い印象です。

プログラムで解釈する方法は?

ロボット系でよく使われるのはcollada-domでしょうか。

githubは軽量版で、フルサイズはsourceforgeにあります。

一方、pycolladaというpythonのライブラリもあります。

hogehogeで作ったdaeがfugafugaで読めないんだけど?

はいきた。

ここがColladaにおいて問題になる点で、
BlenderですらColladaで許容される表現を完全にインポートできていません。

問題になりそうな例をいくつか挙げると、

materialの指定がgeometryとbind_materialの双方で出来てしまう

最小セットの例でもわかりますが、
materialの指定できる箇所が二箇所あります。

  • library_geometry/geometry/polygons
  • library_visual_scenes/instance_geometry/bind_material

どちらかしか見てないソフトだと互換性が取れません。
blenderはそもそもmaterialの設定を上手く取れていない気がします。

geometryの中で複数の形状情報が許容されている

geometryが複数の形状情報(polygonsなど)を持つことが許容されていますが、
この場合blenderでは問答無用でgeometry単位で一つの部品になります。
またbind_materialがgeometryのidを指定しているため、
各形状情報でmaterialの色分けをした場合うまくいかないことが予想されます。

なんかこのdae壊れてない?

壊れてるかどうかをチェックしようと思うと、例えば次のようなことが考えられます。

  • arrayで指定しているcountが正しいか
  • urlを指定している場所でリンク切れがないか(bind_materialのtargetなど)

ちなみに、gazeboの場合bind_materialのtargetでリンク切れを起こすと静かに落ちます。

おわりに

Colladaは表現能力はそこそこ高いのですが、
以下のような問題点が挙げられると思います。

  • 表現の自由度は高いが、対応を謳うソフトがそれに対応できるとは限らない。
  • 各言語で取り扱える標準のパーサがない。
18
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
12