PhysXを使用して、手続き型地形衝突形状を生成する必要がある場所を予測するにはどうすればよいですか?


8

この状況では、手順で生成した地形の高さの値があります。レンダリングでは、カメラの位置を使用して適切なサイズの高さマップを生成します。ただし、衝突の場合は、オブジェクトが交差する可能性のある領域に高さフィールドを生成する必要があります。

私の現在の潜在的な解決策は、素朴かもしれませんが、すべての「覚醒」物理アクターを反復処理し、それらの境界/範囲と速度を使用して、物理更新後にそれらが存在する球を生成し、クラスター化されたグループを含む範囲の高さ値を生成することです俳優の。ただし、そのデータの多くは、すでにPhysXによってすでに計算されている可能性があります。

地形の高さの値が必要になる場所を予測するために使用できるAPI、おそらくクエリのセット、または空間システムからのコールバックはありますか?


あなたはすでに最高のソリューションをコーディングしているように思えます。PhysXの動作がわからない場合は、地形チャンクに境界ボックス型のトリガーを設定し、何かがこのボックスに入った(トリガーされた)場合に衝突形状を生成することができます。基本的にあなたがやっていることですが、その逆とPhysX衝突計算を使用しています。
エアロソン2017

回答:


0

データからメッシュを生成してレンダリングする場合は、メッシュをコライダーメッシュとしてPhysXに渡すことができます。つまり、physXとレンダラーがオーバーヘッドを削減する同じオブジェクトを参照するということです。


1
オブジェクトが衝突する可能性があるのは、可視の地形だけであると想定するのは適切ではありません。問題は、衝突する可能性のある地形の範囲をすばやく特定して、オンデマンドで衝突の形状を生成できるようにすることです。
Sion Sheevok 2014年

1
en.wikipedia.org/wiki/Octreeワールドデータをキューブに分割し、フリーコリジョン可能なエンティティが存在する場所に「スライス」して、非常に小さなオーバーヘッドで非常に小さな領域内のテレインデータを呼び出すことができます。2Dパーティクルの衝突に四分木を使用した例を次に示しますが、コンセプトはOctreesと同じですが、追加の次元があります。これにより、個々の自由な衝突可能なオブジェクトが互いに衝突することも可能になります。 youtube.com/watch?v=fuexOsLOfl0次に、無料の衝突可能なオブジェクトの近くの地形データから非常に小さなコライダーを生成できます
そのホームレスの男

1
私はoctreesと空間分割に精通しています-PhysXはすでに内部でそれを行っています。地形が手続き型であるため、必要な場所で地形衝突形状を生成できるように、空間分割システムに関するPhysXからの情報が必要です。
Sion Sheevok 2014年

1
あなたは要点を逃しています。地形のデータを生成しています。そのデータをサンプリングしてハイトフィールドを作成しています。地形データが必要な場所を予測する必要があります。(-100.0、-100.0)にオブジェクトがある場合、物理をシミュレートする前に(-100.0、-100.0)の近くに地形を生成する必要があります。また、十分な大きさの地形の領域を生成する必要があります。そうしないと、オブジェクトが領域を超えて移動し、その領域で生成された場合に地形が存在する場所より下になる可能性があります。潜在的な衝突を予測するには、PhysXがそのような情報をすでに追跡している必要があります。その情報が必要です。それを行うかどうか、または行う方法がわかりません。
Sion Sheevok 2014年

1
それが私の質問で説明した回避策です。同じ結果を重複して計算しないように、PhysXがすでに実行した作業を取得できるかどうかを尋ねています。私はまだ方法を見つけていませんが、ライセンスなしではPhysX APIに慣れていません。
Sion Sheevok
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.