Ogre と Bullet で都市環境をセットアップしようとしていますが、Bullet にメッシュをロードする方法がわかりません。Google は Collada インポーターへの参照を示していますが、それは SVN から削除されたようです。
Ogre メッシュをインポートするのが最適ですが、.dae ファイルと .blend ファイルも持っているので、可能であればそれらを使用できます。
Ogre と Bullet で都市環境をセットアップしようとしていますが、Bullet にメッシュをロードする方法がわかりません。Google は Collada インポーターへの参照を示していますが、それは SVN から削除されたようです。
Ogre メッシュをインポートするのが最適ですが、.dae ファイルと .blend ファイルも持っているので、可能であればそれらを使用できます。
Irrlicht で Bullet を使用する場合も同じ要件がありました。物理ロード コードを自分で書く以外に解決策は見つかりませんでした。3D エディターでオブジェクトの命名規則を使用し、モデルをロードするときに、サブオブジェクトを反復処理して、タグ付けされた各オブジェクトに適した btRigidBody を構築しました。
例えば
if (needsBody) {
if (prefix == "ball") {
body = createSphereBody(mesh, density);
}
else if (...
ジョイントについても同様です:
if (parent && parent->body) {
// add constraint
...
if (prefix == "ball") {
// ball/socket joint
constraint = new btGeneric6DofConstraint(
*parent->body, *body, frameInA, frameInB, true);
}
else if (...
createSphereBody() 関数は、メッシュ頂点から半径を計算しました。
それが役立つことを願っています。
モデリングに 3DS Max を使用している場合、OgreMax プラグインを使用して OGRE からシーンをエクスポートし、3DS Max の Bullet プラグインを使用して物理オブジェクトをエクスポートできます。これら 2 つのセットを OGRE ノードと弾丸オブジェクトとして別々にロードし、名前に基づいて物理/グラフィック モデルを組み合わせることができます。
これは私が自分のゲームでそれをした方法です:
ソース: https://github.com/SabinT/Wings-Of-Chaos
デモ: http://www.youtube.com/watch?v=eryWgIuqC7I
私はずっと前にこれに取り組むのをやめましたが、このコードが Ogre/Bullet に取り組んでいる誰かにとって役立つことを願っています. おそらく、誰かがこれから役に立つコードを収集するでしょう。
CsGameLevel.cpp ファイルに興味があるでしょう。Load() メソッドは、最初に Ogre シーンをロードし、次に LoadStaticGeometry() メソッドを介して弾丸の剛体をロードします。