問題タブ [bullet]
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++ - btCollisionShape の現在の変換を取得します
複合形状を作りましたcompound = new btCompoundShape();
次に、コンパウンドにコリジョン シェイプを追加します。
コンパウンド シェイプはリジッド ボディに変換され、シャーシとしてビークル レイキャスターに追加されます。
車両は車輪、シャーシ、砲塔と一緒に移動していますが、更新された砲塔の変換を把握できないようです。私がこのようなことを試みるたびに:
最初に作成されたタレットの初期位置を常に取得します。
今、車輪のために私はこれを行うことができます:
シャーシについては、次のようにできます。
しかし、どうすれば砲塔の衝突形状が更新された変換を取得できるのかわかりません。
この情報が必要な場合は、コンパウンドと turretShape (実際の btCollisionShape) の両方にアクセスできることに注意してください。
c++ - btScalar 行列から方向ベクトルを取得
コンパウンドをシャシーとした弾丸車両を作成しましたが、コンパウンドはシャシーと砲塔の2体で構成されています。
次のようにタレット変換と opengl マトリックスを取得できます。
この行列から砲塔の前方/方向ベクトルを取得しようとしています。これは、カメラを砲塔の位置と方向に固定するために必要です。
私が試したのはこれです:
しかし、これでは正しいベクトルが得られません。
この行列のベクトルを正確にどこで探す必要がありますか?
c++ - btCollisionShape を回転させる方法
コンパウンドをシャシーとした弾丸車両を作成しましたが、コンパウンドはシャシーと砲塔の2体で構成されています。
次のようにタレット変換と opengl マトリックスを取得できます。
turretTransform は、btCollisionShape オブジェクト (turretShape) の変換です。
このタレットを Y 軸を中心に回転させようとしています。
私はこれを試しました:
angle はフロートですが、何も起こりません。
私は間違いなく何かが欠けていますが、これらのローテーションがどのように機能するかを完全には理解していません。
c++ - 2 つのボディ間の弾丸衝突コールバック
球体とボックスの 2 つのオブジェクトがあり、一方が他方と衝突すると何らかのアクションを実行します (つまり、ボックスを破壊します)。
私はいくつかの方法を試しました:
- checkCollideWith は常に true を返します。
- contactPairTest - これは使い方がわかりません。2 つのオブジェクトとコールバックの 3 つの引数を取ります。コールバックはコード内の任意の関数にすることができると思っていましたが、そのようには機能しません。
2 つの btRigidBodies (つまり bodyA と bodyB) が衝突したときに、CollissionResult() などのメソッドを呼び出す方法の例を教えてください。
c++ - 衝突後にボディを削除 (弾丸の物理学)
衝突検出には次のような設定があります。
衝突が検出された後にボディを削除したい。
この構造体は、colObj0Wrap と colObj1Wrap (const btCollisionObjectWrapper* 型) にアクセスできます。これらは、衝突する 2 つのボディであると思います。私はこれを試しました:
ただし、これによりエラーが発生します: タイプ const btCollisionObject* の引数は、タイプ btCollisionObject* のパラメーターと互換性がありません
これらの 2 つのボディを世界から削除するにはどうすればよいですか?
macos - ビルド エラー: Mac OsX 上の Emscripten による Ammo.js
Mac でammo.jsをビルドする際に問題があります。(OSはMaverickです)。C++ コードをコンパイルせず、/build フォルダーの bindings.cpp コードには何もコンパイルしません。
このリンクの手順に従いました。これが私が得た最初のログです。
MacOSXにはclangコンパイラが含まれていることは知っていますが、emscripten guidはllvmリポジトリからllvmコンパイラをインストールすることを余儀なくされています。どうすれば修正できるのだろうか。MacOsX には emscripten の実行に問題があると誰かが言っていました。しかし、それが正しいかどうかは疑問です。
======更新=====
make.py ファイルに自分でビルドした LLVM ではなく、Apple の LLVM と呼ばれる 'cpp' を見つけました。make.py ファイルで、
古いコード
変更されたコード
しかし、make.py を変更しても問題は発生します。エラーメッセージは以下です。
どうすれば修正できるのだろうか。
java - 開発の後半で JBullet の物理演算を実装できますか
私は半初心者の OpenGL プログラマーで、VBO とシェーダーがどのように相互作用するかを学んでいます。基本的なデモのセットアップがあり、モデルをインポートしてシーンにライトを配置します。さて、将来は物理を学びたいと思っていますが、JBullet の知識は最低限です。エンジンのフレームワークが新しい API に対してある程度柔軟であると仮定して、レンダリングについてさらに学習しながら、物理学をゼロから実装する必要がありますか、それとも後で追加できるものですか?
注: 私は LWJGL を使用しており、GLSL と共に JBullet を使用する予定です。