1

Ogre と Bullet で都市環境をセットアップしようとしていますが、Bullet にメッシュをロードする方法がわかりません。Google は Collada インポーターへの参照を示していますが、それは SVN から削除されたようです。

Ogre メッシュをインポートするのが最適ですが、.dae ファイルと .blend ファイルも持っているので、可能であればそれらを使用できます。

4

2 に答える 2

3

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() 関数は、メッシュ頂点から半径を計算しました。

それが役立つことを願っています。

于 2011-02-16T16:07:22.993 に答える
1

モデリングに 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() メソッドを介して弾丸の剛体をロードします。

于 2013-11-27T19:12:34.650 に答える