問題タブ [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.
c++ - lib Bulletで衝突をX軸とZ軸の回転にのみ影響させる方法は?
地形といくつかのメッシュ オブジェクトを STATIC として配置して、カプセルのようなオブジェクトを自分の世界に投げます (たとえば、エンジンがナビゲートしたいエージェント)。
通常の衝突可能なオブジェクトとして動作する必要がありますが、1 つの軸でまったく回転しないようにする必要があります (私にとってはそうですY
)。そのため、エージェントは常に次のように「立っている」垂直位置にいます。
ジャンプしたり移動したりできるようになります...では、Bullet で衝突を X 軸と Z 軸の回転にのみ影響させるにはどうすればよいのでしょうか?
game-physics - 物体間の距離を一定に保つための拘束はどれですか?
常に互いに一定の距離にある2つの球があります。それらは、距離が一定である限り、あらゆる自由度で動き回ることができます。それらが目に見えない棒によって魔法のように接続されていると想像してください。これらの球体を動かすために、物理シミュレーション中にさまざまな力がこれらの球体に適用されます。
球体には 2 つの Bullet SphereShapesを使用しています。一定の距離と接続をシミュレートするために、これら 2 つの球の間でどのような制約(ジョイント) を使用できますか?
これらの 2 つの球を接続するには、仮想形状 (円柱? カプセル?) を導入し、球に接続するには、その 2 つの端のそれぞれに球状の拘束 (ボールソケットジョイント) を導入する必要があるように思えます。
この設定を実現するためのより良い方法はありますか? どのような制約を使用しますか?
bulletphysics - Panda3D:BulletGenericConstraintの方向を決める方法は?
デフォルトでは、Panda3DのBulletGenericConstraintは正のX軸に沿って配置されています。setAngularLimitメソッドは、X、Y、またはZ軸に沿ってのみ設定するために使用できます。BulletGenericConstraintによってどの軸にも直交していない2つのボディを結合するにはどうすればよいですか?
つまり、BulletGenericConstraintを、X、Y、またはZ軸に沿っていない任意のベクトルに沿った方向に向けるにはどうすればよいですか?
c++ - Code::Blocks で SSE/SSE2 を有効にする方法は?
そこで、いくつかのコードをコンパイルしようとしました (具体的には Bullet Physics のデモ)、SSE と SSE2 が有効になっていないというエラーが表示されました。Code::Blocks でコンパイラ フラグを確認しましたが、SSE/SSE2 はありませんでした。代わりに「その他のオプション」(-msse、-msse2)にフラグを入れようとしましたが、うまくいきませんでした。
それから、「-march = native」を試すように言ったstackoverflowの投稿をここで見ました。それもうまくいきませんでした。
コンパイルに G++ (MinGW) を使用しており、Windows 7 x64 を使用しています。
何か意味があるとすれば、プロジェクトはカスタム makefile を使用しています。
ogre - 弾丸物理エンジン: 重力が加速しないのはなぜですか?
質量が 30、反発が 0.6、摩擦が 0 の剛体がいくつかあります。
重力は-15に設定されています(-1000までのより高い値も試しました)。
剛体は非常にゆっくりと落下し、加速もしません。
そのような動作を引き起こしている可能性のあるものは何ですか?
visual-studio-2010 - コマンドライン引数を使用した VS2010 のデバッグ
project properties -> debugging -> command arguments
セクションでアプリのコマンド ライン引数を設定しました。
コマンドラインからプログラムを直接実行すると、次のようになります。
progname arg1 arg2
だから私はVSのコマンドライン引数をに設定しました
arg1 arg2,
ここで説明したように。
ただし、プログラムはコマンドラインから実行する場合と同じようには実行されないようです。引数はテキスト ファイルであり、コマンド ラインではこれらのテキスト ファイルを正しくロードできますが、VS2010 では何とかロードできません。理由はありますか?
編集:投稿の更新/明確化:
例外はありません。
説明で問題を単純化しすぎた可能性があります。実際にはテキスト ファイルをロードするのではなく、実行時に決定する必要がある物理エンジンをロードしているので、コマンド ライン引数が必要です。
物理エンジンのロードに使用されるコードの概要は次のとおりです。
次のように実行される Bullet を使用しています。
arg1
は物理エンジン名で、arg2
ロードする物理ファイルですが、ハングアップしarg1
ます。
コマンドラインでこれを呼び出す具体的な方法は次のとおりです。
コマンドラインでこれを行うと機能しますが、これらの引数をデバッガーに渡すと、could not load physics engine
.
これは、別のソースからの物理エンジン ローダーの内部の結果である可能性がありますが、コマンド ラインまたは VS のデバッガー設定でこれらの引数を渡すかどうかに関係なく、これは同じように機能するはずです。
UAC 設定を調べて、その内容を確認します。
quaternions - 試行錯誤して思いついたのですが、その理由を教えてください。
まず、この質問がここでいいのか分からず、よくある質問を確認したところ、「他の人に説明してほしい」という質問があることがわかりました。
主な問題は、アプリケーションですべてのオブジェクトの回転を 2 回保存する必要があることです。これは一方で、私がBullet Physicsを使用する物理シミュレーションがその表現を保存するためです。一方、光やクエスト ターゲットなど、物理シミュレーションに含まれているかどうかに関係なく、すべてのオブジェクトに共通する回転を独自に保存します。物理ライブラリに加えて、GLM数学ライブラリを利用しています。
両方の表現を同期する必要があります。ちなみに、位置とスケールは問題ありません。難しいのは、物理シミュレーションは自分の表現が異なるため、単に値をコピーすることはできません。これらの違いをすべて見つけたわけではありませんが、左手と右手の座標系、度とラジアン、および Y 座標のアップと Z アップに関連している可能性があります。
私自身の表現では、オイラー角をglm::vec3
ベクトルに格納するだけです。私は描画に OpenGL を使用しているので、スペースは右利きだと思います。オイラー角の場合、順序が重要です。回転行列を計算するために私がすることは、最初に各成分の行列を作成し、次にそれらをX * Y * Z
順番に乗算することです。さらに、私自身の表現では、正の Y 座標は上向きです。
物理シミュレーションでは、クォータニオンを使用して回転を保存します。いくつかの調査の後、このライブラリではスペースが左利きであるという仮定を読みました。どの座標が上であるか、どの順序でオイラー角が返されるかについての情報はありません。
回転を物理シミュレーションから独自の表現に、またはその逆に変換するコードがここにあります。
試行錯誤でこの汚いコードを見つけましたが、動作します。しかし、ご覧のとおり、否定、コンポーネントのスウィズリング、およびさまざまな四元数型による型変換が見られます。それらの多くは不要であり、タスクははるかに簡単に実行できると思います。
私の変換が機能する理由と、それらを単純化する方法を説明していただけますか? ところで、変換がうまくいかなかった場合にどのように表示されるかを確認したいので、スクリーンショットを示します...
sdk - オブジェクトが動いている間、Corona SDK Physics がオンとオフを繰り返す
以下は私のメインファイルです。基本的に何が起こっているかというと、「rect」オブジェクトが動いていないときに衝突が機能しているのですが、rect オブジェクトを動かすとすぐに衝突が影響しなくなります。衝突していることはわかっていると思いますが、何もしません(オブジェクトとの相互作用など)。なぜこれが起こっているのですか?そしてそれを修正する方法は?
c++ - 剛体のクランプ回転角度
最近、3D ゲームのカメラに剛体を取り付けて、環境と衝突できるようにしました。ここまでで、マウスの動きは剛体を直接回転させます。
-80°
カメラのピッチをからの範囲でクランプしたいと思い80°
ます。これは、プレイヤーが方向を維持するのに役立ちます。そうでなければ、彼はカメラを頭上で回転させて、自分の背後にある世界を上下逆さまに見ることができます. 対照的に、これを試みる実在の人物は首を折るでしょう。
Bullet Physicsにクォータニオンで回転を保存させたので、ピッチは直接保存されません。剛体のピッチを固定するにはどうすればよいですか?