問題タブ [physx]
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++ - Physx 3 に関するいくつかの初心者向けの質問
今日、私は Physx と Physx ビジュアル デバッガーをいじってみましたが、いつものように、初心者には問題と質問があります。苦手な英語力でできる限り自分の問題を説明しようと思います。
1) なんとか physx シーンを作成できました。動的アクターを追加して操作しました。Visual Debugger で動きが見えます。これは標準の PxSphereGeometry ボールです。しかし、シーンに 2 番目のボールを追加すると、2 番目のボールは表示されませんが、衝突が発生することがわかります。これがコードです。誰かが私に何が問題なのかを指摘できれば、私は非常に感謝しています:
このシーンでは、aSphereActor が aTrActor と衝突しますが、Visual Debugger で aTrActor を確認することはできませんが、衝突は完全に表示されます。
2) Nvidia のドキュメントは非常に貧弱です。私のような初心者がそれを通り抜けるのは拷問です。そこで、3D モデルをインポートしてシーンに追加する方法を知りたいと思いました。3ds max、maya などの Physx プラグインがあることは知っています。このプラグインでモデルをエクスポートしたとします。それをアプリにインポートしてシーンに追加するにはどうすればよいですか?
3) シーンの作成中
、私たちが地球上に持っている真の重力を得るには、どのような値を提供すればよいですか
4) アクターに質量を割り当てることはできますが、質量の測定単位がわかりません。たとえば、aSphereActor->setMass(1); を設定するとします。aSphereActor は 1kg、グラム、または何になりますか?
皆様、本当にありがとうございました。私はあなたの助けに感謝します。
object - 実行時にPhysXでオブジェクトの位置を見つける
プレイヤー(ボックス)がその時どこにいるかに応じて、世界でボールをスポーンしようとしています。これを行うには、ボックスの位置を知る必要があります。ボタンを押すと、ボールがボックスの上面の中央に表示されます。
したがって、このためには、位置のY軸もできる必要があり、オンラインで検索した後、助けを求めるものが見つかりません。
誰かがこれで私を助ける方法を知っていますか?
ありがとうございました。
cuda - cudaコンテキストマネージャーの作成に失敗しました
PhysiXを使用して流体シミュレータを実装しています。残念ながら、sthはcuda context managerで間違っており、それが何であるかを認識するのに問題があります。私は次のようなinitメソッドを持っています:
アプリケーションを実行しようとすると、mCudaContextMangerが正しく作成されないことがあります。「cudaコンテキストマネージャーの作成に失敗しました」がコンソールに書き込まれ、次のようになります。
".... \ LowLevel \ software \ src \ PxsContext.cpp(1122):警告:GPU操作が失敗しました。px::CudaContextManagerが利用できません。....\ SimulationController \ src \particles \ ScParticleSystemSim.cpp(73):警告:GPUパーティクルシステムの作成に失敗しました。CPUの実装にフォールバックします。」
最新のドライバーを搭載したGeForce560Tiを使用しています(友人のラップトップのGeForce460にもエラーが表示されます)。Physixは、NVidiaコントロールパネルでGPUを使用するように設定されています。
私たちが何を間違えたのか、GPUを機能させる方法を知っている人はいますか?前もって感謝します!
c++ - MinGW を使用した PhysX3 - リンク エラー
MinGW を使用して PhysXサンプルをコンパイルしようとしていますが、次のエラーが発生します。
私のコンパイルコマンド:
ここで私の質問は次のとおりです。これらのメソッドはどの .lib ファイルに保存されていますか?
java - Java PhysX バインディング?
Java用のPhysXバインディングはありますか? 少し調べてみると、http://jphysx.com/が見えましたが、奇妙なロシア語のエラーが発生しました。Java をサポートする普通の古い強力な物理エンジンでも動作します。
gpu - CPU 上の物理エンジンと比較して、GPU 上の PhysX はどのくらい高速ですか?
Bullet物理エンジンを使用するように作成されたアプリケーションがあります。8 コアの Intel i7 2600K CPU で実行しています。アプリケーションは、何百万もの物理演算のチャンクを処理する必要があり、それぞれを個別に実行できます。現在、8 つのプロセスで実行されており、各プロセスは合計のクォータを個別に処理しています。要約すると、この作品には簡単な並列処理がたくさんあります。
最高の NVIDIA 消費者向けグラフィックス カード(Titan など)を入手できると仮定すると、 CPU の Bullet から GPU のPhysxに切り替えることによって、物理エンジンのパフォーマンスが大幅に向上しますか? つまり、このアプリケーションを Physx 用に書き直した場合、実行速度はおよそどれくらいになるでしょうか?
Bullet と Physx の結果の品質を比較するいくつかの論文を見つけましたが、パフォーマンスの比較については何も見つかりませんでした。
c++ - ライブラリを適切にリンクして含める方法は?
C++ (Visual Studio 2010) で非常に複雑なアプリケーションを準備するのはこれが初めてで、深刻なリンクの問題があり、頭痛の種になりました (おそらく、それが何であるかを理解していないためです)。
以下を使用して流体フローシミュレーターを実装しています: - NVidia PhysX (SDK 3.2.3) - glew (1.9) - freeglut (2.8.1) - gltools ライブラリ (OpenGL Superbible 5th へのアドオン)
Release/Debug および MD/MDd/MT/MTd オプションを適切に設定してすべてを機能させる方法がわかりません。
- MD/MDd/MT/MTd で freeglut をコンパイルでき、Relese/Release-Static/Debug/Debug-Static ソリューション構成でもコンパイルできます
- MD/MDd/MT/MTd および Relese/Debug を使用して gltools をコンパイルできます
- PhysX はプリコンパイルされた lib および dll ファイルです (コンパイル プロセスでどのオプションが使用されたかはわかりません)。
- グリューについても同じです
多くの構成を試しましたが、常に次のようなコンパイルエラーが発生します
また
上記の構成を正しい方法で設定することがすべてであると読みましたが、実際にはできません。
正しい構成とは何ですか (そしてその理由は?)、どのライブラリを lib ファイルとリンクし、どれを dll とリンクする必要がありますか? 私はC++の初心者なので、明確に説明してください。
それは私のアプリケーションの「インクルード部分」です (かなり似ていて、誤って壊してしまう前に動作しました):
すべてが適切に設定されている場合、最後のレーンが必要かどうかはわかりません(Googleのどこかにあり、機能しました)。
より多くの情報が必要な場合や、何らかの構成を含む詳細なエラー ログが必要な場合は、お知らせください。提供します。
前もって感謝します!
編集:
デバッグ /MDd
リリース /MDd
リリース /MTd
d を除くすべて (/MD /MT):
これは、lib ファイルの 1 つの構成にすぎません。gltools と freeglut を別の方法でコンパイルしたり、別の方法で #define GLEW_STATIC または #define FREEGLUT_STATIC を設定したりできます... 初心者にはオプションが多すぎます。:)
もう1つ:
これらすべての PhysX プラグマがコメントされています。
c++ - ラムダを使用した std::function 割り当てでのアクセス違反
みなさん、またね。前の質問からのコードの続き: Is this a bad hack? 提案されているようにクローンアプローチを使用して修正しましたが、 memcpy を試す前にもエラーが発生しました (上記の質問を読んでください)。
私がやろうとしているのは、現在のスクリプトをキャプチャして実行するラムダを作成し、そのラムダをオブジェクト (Trigger*) のメンバー InternalCallback に渡して格納することです。
ラムダ割り当てでアクセス違反エラーが発生します: http://imgur.com/OKLMJpa
エラーは、このコードの 4 回目の繰り返しでのみ発生します:
これはトリガーのコードです
反復とは、それが for ループの一部であることを意味します。私のシステムは Win 7 64 ビット、Intel i3、NVIDIA GTX 480、コンパイラ Visual Studio 2012 Express で、C++11 ツールセットを使用しています。私は本当にアイデアがありません。ヒープの破損をテストしましたが、問題ないようです。ラムダのキャプチャを変更しましたが、何も変更しませんでした。4 番目のオブジェクトをスキップしたところ、動作しました。どんな助けでも本当に感謝しています。
編集: 必要に応じて、ここにコールスタックがあります: http://imgur.com/P7P3t4k