問題タブ [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 投票する
1 に答える
1625 参照

visual-studio-2010 - Bullet physics と Boost を一緒に静的ライブラリとしてコンパイルする

Orbiter と呼ばれる宇宙飛行シミュレータのアドオンを開発しています: http://orbit.medphys.ucl.ac.uk/

プラグインを dll ファイルとして受け入れます。最近、Bullet 物理ライブラリも使用するプラグインを作成しました。dll に静的にリンクされているため、弾丸ライブラリ自体は dll ではなく、プラグインにコンパイルされています。Bullet は、リリース用のマルチスレッド (/MT) オプションとデバッグ用のマルチスレッド デバッグ (/MTd) オプションでコンパイルされています。

次に、Boost のスレッドを使用したいと思います。そこで、Boost Pro インストーラーから 2 つの静的オプションを選択して、静的な Boost ライブラリをインストールしました。これらの静的ライブラリを使用して、Win 32 アプリケーションを正常に作成できました。アプリケーションはマルチスレッド (/MT) も使用しました。したがって、フラグに不一致がないことはわかっています。

それでも、Bullet を含む Orbiter dll プラグイン プロジェクトに Boost を追加すると、リンク エラーが発生します。

1>------ ビルド開始: プロジェクト: バンプ、構成: Win32 をリリース ------

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): 警告 MSB8012: TargetPath(F:\Orbiter\Orbitersdk\samples\BumpThreaded\Release\ Bump.dll) は、リンカーの OutputFile プロパティ値 (F:\Orbiter\Modules\Plugin\Bump.dll) と一致しません。これにより、プロジェクトが正しくビルドされない可能性があります。これを修正するには、$(OutDir)、$(TargetName)、および $(TargetExt) プロパティ値が %(Link.OutputFile) で指定された値と一致していることを確認してください。

1>MSVCRT.lib(ti_inst.obj): エラー LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は LIBCMT.lib(typinfo で既に定義されています) .obj)

1>MSVCRT.lib(ti_inst.obj): エラー LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は LIBCMT で既に定義されています.lib(typinfo.obj) 1> ライブラリ F:\Orbiter\Orbitersdk\samples\BumpThreaded\Release\Bump.lib とオブジェクト F:\Orbiter\Orbitersdk\samples\BumpThreaded\Release\Bump.exp の作成

1>LINK: 警告 LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合します。/NODEFAULTLIB:library 1>......\Modules\Plugin\Bump.dll を使用: 致命的なエラー LNK1169: 1 つ以上の複数定義されたシンボルが見つかりました

========== ビルド: 0 成功、1 失敗、3 最新、0 スキップ ==========

他の質問で読んだことから、これは、アプリケーション内で使用されている 2 つのライブラリのフラグが一致していないことが原因である可能性があります。しかし、ここではそうではありません。Bullet と Boost はどちらも /MT でコンパイルされます。

また、ブーストは通常​​の win 32 アプリケーションで問題なく動作しますが、それを静的にリンクして dll を出力するときに問題が発生するのはなぜですか?

Visual Studio 2010 Express を使用しており、Windows 7 64 ビット システムを使用しています。

事前に助けてくれてありがとう:)

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

c++ - Bullet物理学でインパルスを適用して衝突を防ぐ

BulletとOgreを使ったサードパーソンシューティングゲームを開発しています。キャラクターモデルがパワーアップなどの世界のオブジェクトと衝突すると、衝突によってキャラクターに力が加えられ、キャラクターがスピンします。キャラクターに力を加える衝突を防ぐにはどうすればよいですか?

btDynamicsWorld :: setInternalTickCallbackのメソッドを設定したので、衝突しているボディとbtManifoldPointがわかります。

体をスムーズに回転させるためにTorqueを体に当てているので、単純に回転を防ぐことはできません。

ご協力いただきありがとうございます。

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

c# - どうすれば物理オブジェクトを落ち着かせることができますか?

BulletライブラリのC#ディストリビューションであるBulletSharpを使用しています。復元力が0.0fと思われるオブジェクトでバウンドが発生しています。

1つの動的な円柱(まもなくメッシュになります)が2つの静的な円柱に落ちます。そのようです:

開始オブジェクトの位置

上部のシリンダーはしばしば激しく跳ね返り、通常は横に跳ね返ります。

シーンの設定に使用しているコードは次のとおりです。

world.StepSimulation(0.05f, 100, 0.0005f);そして、物理シミュレーションを更新するために使用するすべてのフレーム。

明らかな設定がありませんか?なぜ私のシミュレーションはこれをしているのですか?

小さな更新:私はBlenderのBulletのもので同様のシミュレーションを成功裏に行いました。そこには跳ね返りはありませんでした...それとこれの間にどのような違いがあるのか​​わかりません。

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

bulletphysics - [-90, 90] から [0, 360] の範囲のヨー オイラー角の変換

を使用して、Bullet 物理エンジンから取得したヨー オイラー角を変換することは可能ですか?

範囲 [0 , 360] に。それ以外の場合、360 度回転の場合、オイラー角は 0->90->0-> -90 -> 0 の範囲で変化します。

しかし、私は0->90->180->270->0から欲しい

私のグラフィックス API は、0 から 360 の範囲の回転角度のみを受け入れます


ええと、0->90->0-> -90 はピッチ値でした。これが私が今使っているコードです:

ピッチの負の値に 180 を加算しようとしましたが、うまくいきません。オイラー角を使用してメッシュをスムーズに回転させる別の方法を見つける必要があるようです。


更新: 弾丸関数を直接使用するべきではないようです。より良いオプションは、基底行列を直接扱うことです:

これで、y 軸を中心とした回転が得られました。残りの 2 については....ふぅ!

0 投票する
3 に答える
29174 参照

c++ - Bullet Physics の最も単純な衝突の例

衝突検出のみに Bullet Physics を使用しようとしています。オブジェクトを移動したり、コールバックでレンダリングを処理したりする必要はありません。フレームごとにオブジェクトの位置を更新し、それを使用して衝突が発生したときに通知したいだけです。最も単純な例として、btBoxShape を形状とするオブジェクト間の衝突を見つけようとしています。クラッシュや明らかなメモリ リークが発生することなく、すべて正常に実行されますが、衝突は発生しないため、どこかで間違いを犯しているに違いありません。重要なことを省かずに、これをできるだけ簡潔に保つようにします。

これが私の世界設定機能です:

現在、btCollisionObject* タイプのプレイヤー オブジェクトと敵オブジェクトがあります。私はそれらを次のように設定しています:

私は敵のオブジェクトに対して本質的に同じことをします。

次に、フレームごとに、すべてのオブジェクトを次のように更新します。

最後に、結果のコールバックを定義する構造を次に示します。

たくさんのデモを見てきましたが、ほとんどの場合、動きは Bullet に任せているようです。また、衝突時に特別な物理を使用せずに設定された速度でキャラクターを動かしているため、例を次のように適応させるのに苦労しました。私のアプリケーション。結果のコールバックは、実際にはフォーラムの次の投稿からのものでした: http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=6816 これは三角形メッシュの使用に関するものですが、私が実装しようとしていたものに最も近いように思えました。

とにかく、ここまで読んでくれてありがとう!!アドバイスやリンクをいただければ幸いです。

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

c++ - Bullet Physics でムービーを作成する

バレットデモからムービーを作ろうとしています。そのために、タイムステップごとに画像を保存し、ffmpeg を使用してムービーを作成したいと考えています。

一度に 1 ステップだけ進めるシミュレーションが必要です。そのために、私はやっています

その後、シナリオを保存します (後でシナリオのイメージを作成します)。アニメーションの最後に、タイムステップ 200 fps (1/0.005) を使用してムービーを作成しています。これでリアルタイムのアニメーションが得られるはずですが、アニメーションが少し遅くなります。

何か案は?

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

c++ - Bullet Physics で剛体シミュレーションを代用しますか?

Bullet Physics エンジン内に独自の剛体シミュレーション アルゴリズムを作成したいと考えています。btrigidbody 統合を私のものに置き換える方法はありますが、シミュレーションの残りの部分 (衝突検出、接触応答など) は維持されますか?

異なる統合アルゴリズム (明示的オイラー、暗黙的、ルンゲクッタなど) を比較したいだけです。

私は btRigidBody から継承することを考えていましたが、問題は btRigidBody のメソッドが仮想ではないため、メソッドが呼び出されていないことです。

助言がありますか?

ありがとう!

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

java - JBulletでカスタムメッシュを定義するにはどうすればよいですか?

ゲームを作成していて、JBullet物理エンジンを使用したいと思いました。Javadocを検索しましたが、何も見つかりませんでした。JBulletで使用するカスタム形状を定義するにはどうすればよいですか?頂点とインデックスの配列を渡すものを探していましたか、それとも他の解決策がありますか?ありがとう:D

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

game-physics - 地形のような(無限の)スクロール トラックのための Bullet Physics Strategy

スクロールしてビューから外れた地形セグメント (またはタイル) が再利用される地形のようなスクロール トラックを実現するために、Bullet にどのようなオプションがあるかを見つけようとしています。

Box2D や Chipmunk などの 2D エンジンでは、静的な衝突ボディをセグメント シェイプまたはポリゴン シェイプでレイアウトし、ビューから外れたら再配置します。これが Box2D の ActionScript バージョンで行われていることを説明するリンクは次のとおりです。 flash-and-box2d-%E2%80%93-adding-more-bumps/

いくつかのドキュメントを見ると、Bullet には、btHeightfieldTerrainShapes、btStaticPlaneShapes、btBoxShapes など、形状に複数のオプションがあるようです。さらに、BulletPhysics に付属のデモで AppConcaveDemo も調べたところ、btBvhTriangleMeshShape が使用されており、頂点が再計算されていることがわかりました。多分これはより良い選択肢でしょうか?

これらのさまざまなオプションを見て、TinyWings のゲームと同様に地形が水平にスクロールし、HotWheels の車のトラックのように狭くなければならないことを念頭に置いて、このようなことを達成する最善の方法について何か考えがあるかどうか疑問に思っています.

私は詳細な技術的実装を探しているわけではありませんが、パフォーマンスが主な考慮事項であるため、ある手法が他の手法より優れていることについての議論を求めています。

注: 言及する価値があるかどうかはわかりませんが、この地形はリジッド ボディとソフト ボディの両方と相互作用します。

ありがとうございました、

クラウディア

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

android - Bullet Physics 衝突体/形状を描画/レンダリングする方法は?

Bullet Physics エンジンを NDK を使用して Android プログラムに実装しました ( Vuforia のAndroid 用の imagetarget の例を使用しています)。セットアップされ、正しく動作していますが、コリジョン ボックス/プレーンをレンダリング/描画して、剛体 (btRigidBody)/衝突形状 (btCollisionShape)、私はこれが可能であると確信していますが、それを行う方法に関するチュートリアルが見つかりません!

Wiki ページで hello world Bullet 物理学チュートリアルを取得し、それを変更して、衝突体を表示するために opengl es 2.0 にある落下物理体から 3D オブジェクトに変換を適用しました。レンダリングに使用しているコードを次に示します。物申す:

編集: btBoxShape のコードを見て、ボックスの頂点と法線を取得できることに気付きました:

しかし、特定の順序で頂点を描画するためにインデックスのリストを取得することはできません!