Saran diperlukan untuk mesin fisika

12

Saya baru saja memulai sebuah proyek, membangun mesin fisika. Saya berharap Anda bisa memberi saya beberapa saran terkait dengan beberapa dokumentasi dan / atau teknologi terbaik untuk ini.

Pertama-tama, saya telah melihat bahwa Game-Physics-Engine-Development sangat direkomendasikan untuk tugas yang ada, dan saya bertanya-tanya apakah Anda bisa memberi saya pendapat kedua. Haruskah saya mendapatkannya? Juga, saat menjelajah Amazon, saya menemukan Arsitektur Mesin Game dan karena saya ingin membuat mesin fisika untuk game, saya pikir ini mungkin bisa dibaca juga.

Kedua, saya tahu bahwa simulasi fisika sangat intensif komputasi jadi saya ingin menggunakan CUDA atau OpenCL. Sekarang saya condong ke OpenCL, karena ia akan bekerja pada chipset NVIDIA dan ATI. Apa yang kalian sarankan?

PS: Saya akan mengimplementasikan ini di C ++ di Linux.

adivasile
sumber

Jawaban:

10

Inilah cara saya belajar menulis mesin fisika, semuanya gratis dan sangat direkomendasikan:

  1. Makalah David Baraff khususnya Pengantar Pemodelan Berbasis Fisik

  2. Simulasi Dinamis Tesis Impulse Berbasis Sistem Brian Rigid Mirtich

  3. Kacic / Bullock "Sistem dinamika praktis" SIGRAPH 2003, EDIT: Tautan ditambahkan .

Makalah-makalah itu disebutkan dalam artikel hebat lainnya dari Nick Porcino (LucasArts) di salah satu buku permata Permata 4 "Menulis Mesin Fisika Berbasis Verlet". Ini tidak gratis, tetapi nilainya setiap sen.

Juga lihat di mesin lain, di sini adalah sumber untuk Bullet Physics Engine .

Tentang implementasi CUDA / OpenCL: membuatnya berjalan di CPU terlebih dahulu, itu cukup rumit :)

Perlu diketahui bahwa kemungkinan besar Anda akan membuang mesin Anda setelah beberapa saat, karena terlalu sulit untuk membuat mesin fisika yang stabil dan terintegrasi dengan daftar fitur kompetitif Anda sendiri, namun itu pengalaman belajar yang hebat!

Segera setelah Anda menjalankan mesin sederhana, saran saya adalah: buat skenario uji di mana Anda membandingkan hasil dari mesin Anda dengan hasil dari mesin lain. Ini membantu saya menemukan banyak kesalahan dan itu akan meningkatkan antarmuka Anda; sesuatu seperti menerapkan gaya yang sama selama 1 detik pada tubuh yang sama di kedua mesin.

Last but not least: Abaikan tabrakan saat Anda memulai, fokuslah pada simulasi stabil terlebih dahulu.

Maik Semder
sumber
Sepertinya jawaban yang bagus, tetapi Anda mungkin ingin sedikit memformatnya.
Bebek Komunis
Terima kasih atas umpan baliknya. Saya setuju bahwa saya tidak akan dapat membuat mesin yang kompetitif, tetapi tujuan utama saya dengan ini adalah bagian pembelajaran.
adivasile
1
@ Bebek Komunis terima kasih atas petunjuknya, saya masih baru di samping dan saya akui saya terlalu malas untuk memeriksa opsi format, memperbaikinya :)
Maik Semder
1
Menambahkan tautan ke kertas Kacic, semoga ini yang benar :)
Ray Dey
5

Maik benar, makalah Baraff adalah awal yang sangat baik, tetapi jangan lupa Chris Heckers menulis tentang dinamika tubuh yang kaku: http://chrishecker.com/Rigid_Body_Dynamics !

Juga nasihatnya tentang "[..] Anda akan membuang mesin Anda" sepenuhnya benar. Tetapi Anda akan belajar banyak!

Mengenai bagian CUDA / OpenCL dari pertanyaan Anda: Jika Anda tahu CUDA maka beralih ke OpenCL menjadi sangat mudah. Saya akan merekomendasikan belajar CUDA terlebih dahulu, karena ada begitu banyak tutorial yang baik, contoh kode dan perpustakaan perhitungan di luar sana. Sebagai contoh:

Tapi waspadalah: Memulai CUDA itu mudah, memulai simulasi fisika agak sulit, tetapi menggabungkan keduanya cukup sulit!

Jonas Bötel
sumber
Anda memang benar, itu sumber hebat lain yang harus disebutkan, +1 untuk makalah Chris Hecker
Maik Semder
4

Saya mulai dengan Baraff juga, tapi sekarang sudah agak ketinggalan zaman. Yang Anda butuhkan adalah pemecah berulang dan kertas karya terbaik tentang itu adalah Dyanmics Iteratif Erin Catto . Anda memiliki semua yang Anda butuhkan di sana untuk mengimplementasikan mesin fisika Anda. Anda dapat menggali sedikit ke dalam tesis Erleben PhD jika Anda membutuhkan lebih banyak detail (seperti sendi dan lebih banyak hal matematika), tetapi cukup banyak. Saya berharap saya telah menemukannya dari awal - melalui forum Bullet sedikit, ada banyak informasi di sana (mungkin terlalu banyak).

Adapun buku-buku banyak buku di luar sana mengecewakan, tapi saya merekomendasikan Animasi Berbasis Fisika oleh Kenny Erleben atau Game Physics Pearls.

Tidak tahu banyak CUDA / OpenCL (walaupun saya selalu ingin melakukannya) tetapi Anda pasti harus memeriksa karya Takahiro Harada.

Mihai F
sumber