COLLADA-DOM 2.2, Bullet 2.73がリリースされてた

runicalp2008-12-09

Bullet 2.73
COLLADA DOM 2.2
自分はBullet2.72とCOLLADA DOM 2.1をつかってて、それの記事書こうと思ってたらアップデートされてました。でも書くぜー。


まだ使い込んでなくて概要すら見えてないし特に古いバージョンを使い続ける理由もないので、アップデートはします。
それぞれのライブラリにはVCのプロジェクトも同梱されているんですが、1発でうまくいかなかったんでそれだけはちょっと書いておきます。


両方にたぶん共通して言えるんですが、たとえばdebugの構成では
プロジェクトのプロパティの[C/C++]->[コード生成]->[ランタイムライブラリ]がマルチスレッド デバッグ DLL (/MDd)
だったりマルチスレッド デバッグ (/MTd)のどちらかだと思いますが、ライブラリの方もそろえないとリンクできないです。
Bulletのビルドの構成にはDebug,DebugDll,DebugDoublePrecision,Release,ReleaseDll,ReleaseDoublePrecisionとありますが、自分のプロジェクトの構成がマルチスレッド デバッグ DLLだったらDebugDll、マルチスレッド デバッグ だったらDebugを使えばいいということになります。
ちなみに2.71ではビルドの構成はDebugとDllとに分かれていなかったので、Dllをマルチスレッド デバッグ DLLにすれば、
サンプルもそれに合わせる必要がありました。


こっちは確認できてないんですが、COLLADA DOMではstaticライブラリをマルチスレッド デバッグ DLLでビルドしてリンクするとDllがないと怒られてしまいます。なので、マルチスレッド デバッグでビルドして自分のプロジェクトもマルチスレッド デバッグにしないといけないのかなぁと思ってます。
DLLの方はちゃんとリンクできて動作できてるのでまぁよいのですが。ビルドしたDllを自分のアプリケーション下まで持って来るのを忘れてはいけません。


COLLADA DOMに関してはそれよりもビルドが通ってくれなくて四苦八苦しました。
Dllの方ではプロパティの[リンカ]->[全般]->[ライブラリの追加ディレクトリ]に色々追加して↓のような感じにしました。
"..\..\external-libs\libxml2\win32\lib";"..\..\external-libs\tinyxml\lib\vc9";"..\..\external-libs\pcre\lib\vc9"
プロパティの[リンカ]->[入力]->[追加の依存ファイル]はこんな具合です。
libxml2_a.lib zlib.lib wsock32.lib pcre-d.lib pcrecpp-d.lib
なんかpcre-d.lib pcrecpp-d.libこの辺が足りなくてビルドが通らなかった感じです。


staticライブラリの方は[ライブラリアン]->[全般]->[追加の依存関係],同じく->[追加のライブラリディレクトリ]にそれぞれ
pcre-d.lib pcrecpp-d.libと..\..\external-libs\pcre\lib\vc9を指定しました。
これで両方ビルドは通るようになりました。
staticライブラリはリンクして実行するとDllがないと言われますが(さっきの話へ戻る)


最新版だといろいろいい感じになってたりってことがあるんで、それに期待しつつ深追いはせずに行きます。



COLLADA DOM(とDirectX)を使ったコリジョンツールを作成中です。(COLLADAモデルはBlenderやXSIのCrossWalkで吐き出したバージョン1.4.1を表示できています。)

球とかAABBとかをグラフィカルに設定できるツール。そんなツールがほしかったので。
実際のモデルデータとオーバーラップさせて表示すれば操作性もいい感じになると思われます。
バイナリ出力されたコリジョン形状を読み込めるコリジョンシステムも同時に開発してます。
こいつらとエフェクト作成ツール(妄想段階)を絡めさせればすごいことができると思う。



参考
COLLADA DOM使ったとき参考にしたサイト
CodeZine - COLLADA DOMを使った3Dモデルデータの読み込み
Shader.jp Articles-COLLADA DOM: 第1回「COLLADA DOMをDirect3Dで使う」

東方3DSTGにBulletを導入したときに参考にしたサイト
もんしょの巣穴Bullet Physics Engineを使ってみよう 第01回
Bullet: Bullet 第1回「Direct3Dと一緒にBulletを使ってみる」