Saya telah melihat box2d dan bulling porting ke JavaScript, tetapi tidak satu pun dari mereka yang menarik saya, kecuali untuk kode sumber. Semuanya tampak sederhana, begitu saya melihat ke dalam.
Apa yang mereka lakukan di masing-masing perpustakaan untuk mendapatkan simulasi fisika yang bagus? Saya tidak dapat menemukan penjelasan apa pun.
Jawaban:
Fisika tubuh kaku sebenarnya cukup sederhana dalam konsep - yaitu, perilaku yang coba dibuat oleh mesin tidak terlalu rumit. Mungkin itulah sebabnya perpustakaan yang Anda lihat tampak sederhana bagi Anda.
Kuncinya adalah membuat sim yang kuat , stabil , dan cepat , bahkan di hadapan hal-hal seperti floating-point error dan rendah, framerates variabel, cukup sulit dan biasanya melibatkan banyak tweaker dan mengutak-atik. Yang semakin memperumit masalah ini adalah kenyataan bahwa banyak orang yang sangat pintar telah melakukan upaya heroik untuk menemukan solusi yang lebih baik, dan telah datang dengan algoritma yang indah dan kuat tetapi sulit dipahami yang telah memberikan lapangan reputasi untuk ilmu hitam.
Secara umum, mesin fisika akan memusatkan perhatian pada tiga hal (urutan di mana mereka melakukannya dalam loop internal bervariasi):
Untuk sebagian besar dari ini, ada algoritma sederhana tetapi tidak begitu akurat dan algoritma kompleks tetapi lebih akurat. Untuk membantu Anda memulai:
Ada pengantar yang sangat baik untuk metode sederhana dan apa yang bisa salah dalam bab-bab awal dari buku yang baru saja diterbitkan Game Physics Pearls.
sumber
Baca seri fisika permainan Glenn Fiedler: http://gafferongames.com/game-physics/
Juga, Erin Catto (penulis Box2D) memiliki makalah tentang dinamika terbatas .
Untuk deteksi tabrakan, baca Deteksi Tabrakan Real-Time oleh Christer Ericson
sumber
http://en.wikipedia.org/wiki/Rigid_body_dynamics mungkin merupakan tempat yang baik untuk memulai. Gim-gim yang berbeda akan membagi berbagai benda menjadi berbagai badan, tetapi secara umum Anda memiliki sejumlah benda tegar terpisah yang dihubungkan oleh sambungan dengan properti tertentu. Setiap putaran melalui permainan Anda menghitung kekuatan pada setiap tubuh dan menghitung parameter baru (posisi, kecepatan, dll). Anda juga harus mentransmisikan kekuatan dari masing-masing tubuh ke tubuh lain yang berbagi dengan dan faktor kekuatan global (gravitasi).
Ini tidak mencakup hal-hal seperti fisika cair atau kain, itu semua omong kosong bagiku. Ada persamaan diferensial yang terlibat dan itu tentang titik di mana mata saya berkaca-kaca.
sumber
OpenCloth merinci semua teknik integrasi dengan cara sesederhana mungkin. Banyak yang ada di dalam pipa.
Detail: http://code.google.com/p/opencloth/
sumber
Satu hal penting selain persamaan fisika adalah melacak semua objek, sehingga memeriksa deteksi tabrakan dan interaksi secepat mungkin. Hashing Spasial adalah teknik yang digunakan mesin fisika Chipmunk .
sumber
Hanya untuk menambah daftar tautan, saya menemukan catatan SIGGRAPH Baraff sangat membantu.
sumber