Bullet 2.76 Physics SDK マニュアル
13. オーサリングツール
衝突形状、剛体、拘束条件は、3Dオーサリングツールで作成したり、Bulletで読み込むことができるフォーマットにExportすることができます。
Dynamica Mayaプラグイン
ウォルトディズニーアニメーションスタジオは、Bulletの衝突形状や剛体のオーサリングを行う社内使用のMayaプラグインを、オープンソースとして提供してくれました。DynamicaはMaya内で剛体シミュレーションを可能とし、またBullet plysicsファイルやCOLLADA Physicsファイルをエクスポートできます。
詳細はBullet wikiをご覧ください。DynamicaプラグインのWindows/Mac OSXのプリコンパイルバージョンが http://bullet.googlecode.comにてダウンロード可能です。
Dynamicaのソースコードリポジトリはhttp://dynamica.googlecode.comにあります。
Blender
オープンソースのBlenderは、Bullet physicsをアニメーションおよび内部ゲームエンジンで使用しています。http://blender.orgをご覧ください。
BlendereはCOLLADA Physicsファイルへエクスポート可能です。また衝突形状や剛体、拘束条件も含めて、Blender .blendファイルから直接情報を読み込むプロジェクトもあります。これについてはhttp://gamekit.googlecode.comをご覧ください。
Cinema 4D、Lightwave CORE、Houdini
Cinema 4D 11.5は剛体シミュレーションにBulletを使用しており、またLightwave COREもBulletを使うことを計画していると聞いています。
HoudiniのDOP/pluginについてはhttp://code.google.com/p/bullet-physics-solver/をご覧ください。
シリアル化とBullet .bulletバイナリフォーマット
Bullet 2.76 はワールドのバイナリダンプを保存する機能が強化されました。組み込み機能でオブジェクトや形状をバッファに保存可能となったため、その他追加のライブラリは必要ありません。以下にワールドをバイナリファイル(.bullet)に保存する例を示します。
//create a large enough buffer. There is no method to pre-calculate the buffer size yet.
int maxSerializeBufferSize = 1024*1024*5;
btDefaultSerializer* serializer = new btDefaultSerializer(maxSerializeBufferSize);
dynamicsWorld->serialize(serializer);
FILE* file = fopen("testFile.bullet","wb");
fwrite(serializer->getBufferPointer(),serializer->getCurrentBufferSize(),1, file);
fclose(file);
Bullet/Demos/SerializationDemo と Bullet/Demos/ConvexDecompositionDemo のデモでは、この.bulletファイルを読み込んだり保存したりする方法を示しています。
.bulletのシリアル化に関するより詳細な情報については、Bullet wikiにある下記エントリをご覧ください。
http://bulletphysics.org/mediawiki-1.5.8/index.php/Bullet_binary_serialization
COLLADA Physicsフォーマットとビューワー
COLLADAは機能豊富な3D仕様であり、衝突や物理情報を含む、XMLを使ったファイルフォーマットです。Dynamica Mayaプラグイン、Blender、その他ソフトウェアは、この標準物理ファイルフォーマットをエクスポート/インポートすることができます。
Dynamicaソースリポジトリ(http://dynamica.googlecode.com)では、COLLADA-DOM、libxmlをベースとしたCOLLADA Physicsファイルの読み込み/保存のコード例を提供しています。Dynamica/Demos/ColladaDemoをご覧ください。
Dynamica/Extras/BulletColladaConvertarクラスは、COLLADA physicsへの統合例として使うことができます。