Menggunakan PhysX, bagaimana saya bisa memprediksi di mana saya perlu menghasilkan bentuk tumbukan medan prosedural?

8

Dalam situasi ini, saya memiliki nilai ketinggian medan yang saya hasilkan secara prosedural. Untuk rendering, saya menggunakan posisi kamera untuk menghasilkan peta tinggi ukuran yang sesuai. Untuk tabrakan, bagaimanapun, saya perlu memiliki bidang ketinggian yang dihasilkan di daerah di mana objek dapat berpotongan.

Solusi potensial saya saat ini, yang mungkin naif, adalah untuk mengulangi semua aktor fisika "bangun", menggunakan batas / luasan dan kecepatan mereka untuk menghasilkan bola di mana mereka dapat berada setelah pembaruan fisika, kemudian menghasilkan nilai ketinggian untuk rentang yang mencakup kelompok berkerumun aktor. Namun, sebagian besar dari data itu kemungkinan sudah dihitung oleh PhysX.

Apakah ada beberapa API, mungkin seperangkat pertanyaan, bahkan panggilan balik dari sistem spasial, yang dapat saya gunakan untuk memprediksi di mana nilai ketinggian medan akan dibutuhkan?

Sion Sheevok
sumber
Sepertinya saya sudah memberi kode solusi terbaik. Tidak yakin bagaimana PhysX bekerja, mungkin Anda malah bisa memiliki pemicu berbentuk kotak terikat pada bukaan medan Anda dan menghasilkan bentuk tabrakan jika sesuatu masuk (memicu) kotak ini. Pada dasarnya apa yang Anda lakukan tetapi sebaliknya dan dengan PhysX collision math.
aeroson

Jawaban:

0

Jika Anda menghasilkan jerat dari data Anda untuk rendering, Anda bisa meneruskan mesh ke PhysX sebagai collider Mesh. Artinya, PhysX dan renderer Anda merujuk objek yang sama memotong overhead.

Si Tunawisma itu
sumber
1
Tidak tepat untuk menganggap bahwa medan yang terlihat adalah satu - satunya objek medan yang dapat bertabrakan. Masalah ini dengan cepat mengidentifikasi rentang medan yang dapat bertabrakan sehingga bentuk tumbukan dapat dihasilkan untuk mereka sesuai permintaan.
Sion Sheevok
1
en.wikipedia.org/wiki/Octree membagi data dunia menjadi kubus dan "memotongnya" di mana pun Anda memiliki entitas collidable gratis, Anda kemudian dapat melakukan panggilan ke data medan dalam area yang sangat kecil dengan overhead yang sangat sedikit. Berikut adalah contoh menggunakan quadtrees untuk tabrakan partikel 2D tetapi konsepnya sama untuk Oktrees tetapi dengan dimensi ekstra. Ini juga akan memungkinkan benda-benda collidable gratis individu untuk saling bertabrakan. youtube.com/watch?v=fuexOsLOfl0 Anda kemudian dapat menghasilkan colliders yang sangat kecil dari data medan di dekat objek collidable gratis
That Homeless Guy
1
Saya kenal dengan oktri dan partisi spasial - PhysX sudah melakukan itu secara internal. Saya memerlukan informasi dari PhysX mengenai sistem partisi spasialnya sehingga saya dapat menghasilkan bentuk benturan medan di mana diperlukan karena medan bersifat prosedural.
Sion Sheevok
1
Anda tidak mengerti intinya. Saya menghasilkan data untuk medan. Saya mengambil sampel data itu untuk membangun bidang ketinggian. Saya perlu memperkirakan di mana data medan diperlukan. Jika ada objek di (-100.0, -100.0), saya perlu membuat medan dekat (-100.0, -100.0) sebelum saya mensimulasikan fisika. Saya juga perlu membuat suatu daerah medan yang cukup besar atau suatu objek dapat bergerak melampaui suatu daerah dan berakhir di bawah di mana medan akan berada jika telah dihasilkan di wilayah itu. PhysX harus sudah melacak informasi tersebut untuk memprediksi potensi tabrakan - Saya memerlukan informasi itu. Saya tidak tahu bagaimana melakukannya.
Sion Sheevok
1
Itulah cara mengatasi metode yang saya uraikan dalam pertanyaan saya, ya. Saya bertanya apakah saya bisa mendapatkan pekerjaan yang sudah dilakukan PhysX, sehingga saya tidak secara berlebihan menghitung hasil yang sama. Saya belum menemukan cara, tapi saya belum terbiasa dengan PhysX API tanpa lisensi.
Sion Sheevok