問題タブ [bulletphysics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
2185 参照

build - Bullet Physics、CMake-> CodeBlocks-MinGW:GL / glut.hが見つかりませんか?

統計学...

私のシステム:WindowsVista64ビット

ライブラリ:Bullet Physics v2.78

Makefileジェネレーター:CMake

ビルドシステム:MinGWコマンドライン、MinGW + CodeBlocks

Makefileは、コマンドラインとCMakeで生成されたCode::Blocksプロジェクトを介して実装されました

どちらの場合も、ビルドは30%近く失敗します。注:Code::Blocksプロジェクトのビルド実行可能ファイルをmake.exeからmingw32-make.exeに切り替える必要がありました

最初の失敗:Demos \ OpenGL \ GLDebugFont.cpp-> GL / glut.h:そのようなファイルまたはディレクトリはありません

2番目の失敗(最初の#includeをコメントアウトした後)-> Demos / OpenGL / GlutStuff.h:同じエラー

これらの失敗は、コマンドラインをビルドするとき、または生成されたC::Bプロジェクトを介して実行するときに発生します。

なぜGL/glut.hが見つからないのですか?「bullet-2.78\Glut \ GL\glut.h」が存在します。多分そこに過剰を見つけるように私がそれを言うことができる方法がありますか?

注:CMake makefileの生成中に、CMakeは「廃止されたGLUパッケージを使用しています。代わりにOpenGLを使用してください」と言っていました。Makefileの生成は通常どおり続行されました。たぶん私はいくつかの環境変数を定義する必要がありますか?たぶん、CMakeが探しているものをWindowsで構成する必要がありますか?

bullet-2.78 / Glutにコンパイラ検索パスを追加しますが、カスタムmakefile(CMakeで生成されたものなど)を使用している場合、Code::Blocksではそれが許可されません。

更新:Code :: Blocksプロジェクトで特定のターゲットを構築することにより、ライブラリ自体を構築することができました。ただし、デモやベンチマークテストはすべてOpenGL(および明らかにglut.h)を使用しているため、ビルドできませんでした。それでもそれらをコンパイルしたいと思います。

0 投票する
2 に答える
1439 参照

physics-engine - Bullet Physics MultiSphereShape の使用法

  1. Bullet Physics フォーラム、またはライブラリ [JBullet、BulletCS] を移植したか、独自の製品 [Blender、Panda3d] に組み込んだ関連フォーラムのいずれかで、役立つ回答を見つけることができなかったため、ここに投稿しています。 ]。ここで、少なくとも私が適切に質問できれば、有益な回答が得られる可能性が最も高いようです。

  2. サイコロの転がしをシミュレートしたい。私が見つけることができるすべての例は、ボックス形状を使用することに満足しているようです。私はラスベガスではなく、子供向けのゲームに興味があります。少なくとも私のアプリケーションでは、決定的な違いは、サイコロ [6 面かどうかに関係なく、ここでは 6 面に固執しましょう] は尖った角のない「より優しい」丸みを帯びたエッジを持っていることです。

  3. btMultiSphereShape は私にとって完璧なようです。私は、低レベルのプリミティブから複雑な形状を構築する知識を持っていない人であり、Bullet の衝突インテリジェンスに既に組み込まれているものを使用したいと考えている人です。エンジンであり、新しいエキゾチックな動作を設計しようとする人ではありません。

  4. その序文とともに、次の簡潔な例を示していただければ幸いです。

    a. 引数を btMultiSphhereShape コンストラクターに渡す方法。b. btDefaultMaotionState に渡す必要がある変換を構成する方法。c. localInertia の設定方法。

  5. これがほとんどすべてをサポートできるクラスを備えた汎用ライブラリであることは理解していますが、初心者のために、よく考えられたツールキットの非常に優れた属性について議論する代わりに、私にとって最も役立つものは何ですか[そして私は他の多くのユーザーに信じられている]は、これらの主要なプロパティを必要なクラスに提供し、メソッドをこれらの詳細に提供する明確な例です。

    a. 大きさが等しい六面体のサイコロで、丸みを帯びた立方体を一辺約2cmにしましょう。b. 「角」の半径を緩やかな 0.1.cm にしましょう。

  6. では、もう一つお願いを。単純な「落下」から始まるサイコロの動作を観察するために、重力による力のみを考慮して、通常の「床」の例に対する衝突からある種の興味深いタンブリング結果をもたらす変換を提案してください。 ; つまり、丸みを帯びた角で床に衝突する必要があります。

0 投票する
1 に答える
901 参照

box2d - さまざまなマテリアルのフィクスチャ プリセットはどこにありますか?

Box2Dなどの剛体物理エンジンでさまざまなマテリアルの動作をシミュレートするために使用できるフィクスチャ プリセットはどこにありますか?

次のような一般的な材料の密度、摩擦、反発の値を探しています。

  • 滑らかな/粗い金属
  • ゴム
  • プラスチック

現実的な結果を得るためにこれらの値を設定する試行錯誤のほかに方法はありますか?

0 投票する
2 に答える
8986 参照

c++ - 弾丸との衝突の検出

Ogre3Dを使用してアプリを作成しました。すでに弾丸のオブジェクトが生成されているので、今必要なのはオブジェクト間の衝突を検出することだけです。

CollisionInterfaceDemoデモを見ましたが、実際には私のニーズと一致していません。

衝突するかどうかを知るためだけに、3つの球の間の衝突を検出するために必要な手順は何ですか(衝突点は気にしません)?

CollisionObjectを移動できるのは、その変換を設定することだけです。

0 投票する
1 に答える
43 参照

c++ - GIM_TRIANGLE::is_point_inside が間違っています (弾丸の物理)

is_point_inside上記の値を渡すと true を返します。false を返すべきではありませんか?

0 投票する
1 に答える
953 参照

c++ - Bullet Physics でソフト ボディの位置を設定する方法

ソフト ボディの動きを x 軸に固定しようとしています。左右に移動できるようにしたいが、z 軸の同じ​​位置にロックしたい。

x 軸に沿って速度を適用している場合でも、空気抵抗とソフト ボディの動きが原因で、ボディが z 軸に戻ることがあります。

この問題に対処するために、ティック コールバックを使用して、ソフト ボディの z 位置が常に 0 になるようにします。

これが最善の方法ですか。そうであれば、どのように位置を設定しますか。

私は .transform() と .translate() を試しましたが、うまくいきませんでした。

ありがとう。

0 投票する
0 に答える
803 参照

memory-management - Bullet Physicsのメモリは、多くの三角形メッシュを持つ大きく変化する世界で使用されます

btDiscreteDynamicsWorldは、DynamicsWorld全体から独自のOctree / SpatialHashを再作成/拡張し、追加されたオブジェクトの距離を(0,0,0)から増やしながら、拡張し続けることができますか?たとえば、octreeに新しいトップレベルを追加して、より多くのメモリを使用し、それを再び縮小することはありませんか?

静的衝突には、btBvhTriangleMeshShapeの複数のオブジェクトを含むbtDiscreteDynamicsWorldを使用します。また、静的三角形メッシュと衝突する他のいくつかのプリミティブエンティティ(btBoxesおよびbtCylinders)。「アクションポイント」をDynamicsWorldの原点(0,0,0)から常に遠ざけ、古いTriangleMeshesと古いプリミティブエンティティを削除し、同じ方法で新しいエンティティを追加します。(手続き型生成の世界)x軸に沿って移動し続けると、メモリ使用量が絶えず増加します。しかし、ある時点で停止して元の状態に戻り、新しいシェイプを削除して再度追加すると、メモリの使用量は一定に保たれます。

衝突オブジェクトをヒープから適切に追加および削除(また削除)して(MotionStatesを手動で削除するなど)、メモリリークの可能性を排除した後も、この動作に直面します。

弾丸の技術文書はあまり詳細ではなく、弾丸のソースコードをざっと見ただけでも手がかりは得られませんでした。APIは、recalcOctree()関数のようなものを表示しません。

btDynamicsWorldオブジェクト全体を削除せずに、内部衝突構造の完全な再計算を強制できますか?それとも私はここで完全に間違った実行をしていますか?原点に近いオブジェクトと比較して、(0,0,0)から遠く離れたオブジェクトを追加するときに、弾丸でメモリ使用量が増加したことを他の誰かが経験しましたか?

Bullet2.79を使用しています

0 投票する
1 に答える
1784 参照

c++ - Bullet のシンプルなデモを Qt に統合する

Bullet デモを Qt アプリケーションに統合したいと考えています。Bullet に付属の App_BasicDemo という Bullet デモ例を使用しています。

Qt なしでこのアプリケーションを実行すると、ウィンドウが開き、非常にうまくレンダリングされます。だから私は、これをQGLWidgetとして置くだけで、Qtウィンドウで同じことをするはずだと思った。しかし、うまくいきません。

GLWidget のコンストラクターで、BasicDemo を作成します。initializeGL では、BasicDemo の myinit と initPhysics を呼び出します。最後に、paintGL で clientMoveAndDisplay を呼び出します。

私が抱えていた最初の問題は、swapBuffers を呼び出すときに clientMoveAndDisplay がクラッシュすることでした。

その行にコメントするだけで、プログラムはクラッシュしませんが、何も表示されません。

私は何が欠けていますか?

編集:

編集2:

わかりました、私は答えを得たと思います。Bullet はウィジェットの幅と高さを必要とするため、openGL を初期化するときは、Demo の形状を一度変更する必要があります。これは、前に glutmain が呼び出されたとき、いくつかの Bullet メソッド内で行われたと思います...

scene->reshape(this->width,this->height);

トリックをしました。Bullet Demo が表示されるようになりました。(独立したBulletアプリケーションのように更新されませんが、それは別の問題です)

とにかくありがとうマーティン・ベケット!

0 投票する
5 に答える
2348 参照

game-engine - スマートフォンの弾丸物理学?(Android / iPhone)

これはスマートフォン(Android / iPhone)で可能ですか?BulletPhysicと呼ばれていると思います。

私はアプリでリアルタイムを意味します。ユーザーがボールをセットしてから、爆発/破壊します。

そんなに完璧であってはなりません。シンプルなカラー。物理学だけが重要です。

爆発/破壊だけが私にとって重要です。

ビデオ1

ビデオ2

0 投票する
1 に答える
1071 参照

orientation - Bullet と Ogre3D を使用したスムーズな回転

Ogre3D と Bullet physics を使用して実装しているゲームでのキャラクターの向きの実装に関する問題に苦しんでいます。

私が持っているもの:現在の向きとともに、キャラクターが移動している方向ベクトル。

必要なもの:キャラクターの向きを、キャラクターが動いている方向に向くように設定します。

私は、私が望むことを行うコードのスニペットを持っています:

「body」は、向きを変えようとしている剛体です。

ただし、このスニペットにはいくつかの問題があります。

1) 方向を変えるとき、それは「ジッター」する傾向があります。つまり、ある方向に向きを修正する前に、1 秒ほど反対の方向に急速に向きを変えます。

2) コードが実行されるほとんどの場合、Bullet の btQuaternion からアサーション エラーが発生します。
assert(d != btScalar(0.0));

誰でも助けることができますか?

ありがとう!