他のロボットモデル読み込み
初稿: 2013/10/8, 最終更新: 2013/10/10
12.COLLADAモデルの取り扱い
AssimpでColladaを読み込もうとすると、読み込めるファイルと読み込めないファイルがあり、読み込みに失敗するとAssimpのエラーメッセージを出してプログラムが終了します。
[verbose] ofxAssimpModelLoader: loadModel(): loading "kawada-hironx.dae" from "C
:\workspace\of_v0.8.0_vs_release\examples\addons\assimpExample\bin\data\"
[ error ] ofxAssimpModelLoader: loadModel(): Collada: $$$___magic___$$$.dae - Un
supported vertex referencing scheme. I fucking hate Collada.
[verbose] ofxAssimpModelLoader: clear(): deleting GL resources
口が悪くてちょっとびっくりしますが、Colladaフォーマットは確かに良し悪しあるような気がします。 上手く読み込めるようにモデル変換する方法を調べておきましょう。
12.1 OpenHRP3のモデル変換
産総研のOpenHRPとChoreonoidのモデルは共通していて、多くのロボットのモデルが公開されています。3Dモデルフォーマットの規格としてはもうだいぶ古いVRMLが使われています。すでに産総研でVRMLモデルをCOLLADAモデルに変換するOpenHRP3モデル変換プログラムが開発されていますので、これを使いOpenHRP3用モデルとChoreonoid用モデルをここのプログラムで使えるようにしてみます。
OpehHRP3のWindows版はvs2008,vs2010だけの配布なので、今の環境だと少し扱いづらいです。そこで、Oracle VirtualBoxにUbuntuを入れて使うと便利です。UbuntuやOpenHRPのインストールの方法の説明は省略しますので、本家のページを見てください。
Linuxのターミナルで次のようにして変換します。-iオプションで入力VRMLファイル、-oオプションで出力ファイル名を指定します。
export-collada -i main.wrl -o main.dae
ところが、そのままではAssimpで読み込むことができません。ロボット用の情報タグが追加されていることが原因のようです。フリーの3DCAD Blenderなどを使って、ロボット用に拡張されたタグを次の手順で消します。
- blenderで新規プロジェクトを開き、Box, Camera, Lightを消す
- colladaモデルをインポート
- colladaモデルをエクスポート、オプションに注意
GR001やPA10のモデルを変換してみます。
fig.GRobot GR001のモデル
fig.PA10のモデル
12.2 OpenRaveのモデル変換
OpenRaveのColladaモデルは上手い変換の方法が見つかりませんでした。COLLADAのバージョンの問題でしょうか?
プログラムを書き換えないと動かせないのはともかく、ソースコードが煩雑になりつつあって簡単にロボットのモデルの入れ替えが出来ないのは問題ですね。ロボットをクラス化して、簡単に入れ替えできるようにしておきましょう。