Bagaimana saya bisa mensimulasikan kaca pecah?


10

Saya perlu membuat simulasi dengan batu yang dilemparkan melalui jendela kaca. Bagaimana saya bisa mencapai itu?

Maksud saya, saya sedang berpikir untuk membuat model 3D dari batu dan kaca di 3D Studio Max 2012, menghancurkan kaca dan mengekspor keduanya ke XNA 4.0 sebagai model .x. Kemudian di XNA buat animasi - menulis mesin fisika saya sendiri. Apakah mungkin demikian? Apakah mungkin untuk menghancurkan gelas di XNA setelah tumbukan atau haruskah saya melakukannya dalam 3DS Max? Dengan 'menghancurkan gelas' maksud saya melepaskan beberapa bit kaca yang sebelumnya hancur satu sama lain, karena tergantung pada kecepatan mulai dan berat batu dan ketahanan (kekerasan?) Dari kaca (semua ditentukan oleh pengguna) bit akan terlepas dari satu sama lain dengan cara yang berbeda.

Jawaban:


5

Penghancuran Voronoi adalah salah satu pendekatan yang menciptakan penghancuran yang cukup realistis untuk misalnya. kaca yang dikeraskan yang memiliki kemampuan luar biasa untuk pecah menjadi pecahan kecil, biasanya cembung karena perubahan struktural pada kaca selama pembuatan. Juga, mengingat Anda memiliki panel kaca, Anda hanya perlu implementasi Voronoi 2D, bukan 3D.


3

Secara otomatis menghasilkan potongan-potongan yang hancur dari jaring yang awalnya utuh cukup sulit, saya pikir. Jika Anda hanya tertarik untuk mensimulasikan dinamika pecahan saat mereka terbang di udara, bertabrakan dll. Saya akan mulai dengan jala yang telah dihancurkan, menggunakan batasan yang dapat dipecahkan atau sesuatu untuk menyatukan potongan-potongan sampai mereka ditarik. terpisah dengan kekuatan yang cukup.


Hai Nathan (lagi), sudahkah Anda mengerjakan tugas ini setelah 2011? Bisakah Anda memberikan petunjuk lagi? Thx
karlphillip

@karlphillip Saya mengerjakan demo menggunakan PhysX Destruction , meskipun saya secara pribadi hanya melakukan rendering barang, bukan benda fisika di proyek itu. Teknologi PhysX bekerja dengan menghasilkan potongan yang telah hancur di alat DCC, dan menukarnya dengan jaring yang tidak terputus saat terjadi kerusakan.
Nathan Reed

3

Buat panel yang tidak hancur dan panel yang hancur. Ketika Anda mendapatkan tabrakan matikan versi yang tidak hancur dan mulai menggunakan panel yang hancur.

Jika Anda melempar satu batu (dengan ukuran yang agak konsisten) pada sebuah jendela maka Anda bisa mendapatkan jalan panjang dengan model 3d dari panel yang rusak (memodelkan pecahan di tempat di panel dan kemudian menjalankan simulasi fisika sederhana pada setiap pecahan untuk mensimulasikan mereka jatuh / terbang). Kecuali jika kamera sangat dekat (atau dalam gerakan lambat) Anda tidak perlu melakukan tabrakan di antara potongan-potongan - hanya dengan geometri sekitarnya (bidang tanah?). Jangan lupa untuk menyemprotkan beberapa efek partikel pada awan partikel kaca kecil yang menyertai penghancur.

Jika Anda membuat pecahan kaca dengan asumsi bahwa batu tersebut mengenai bagian tengah maka Anda dapat menskala potongan berdasarkan posisi hit yang sebenarnya untuk mendapatkan istirahat yang terlihat cukup bagus untuk sebagian besar hit.


2

Jika Anda mengunduh Bullet Physics Library, ia memiliki sampel yang berisi pecahan kaca, dan Anda akan membutuhkan sesuatu seperti pecahan peluru di setiap permainan dengan pecahan kaca.

Sunting: Bullet akan menjadi demonstrasi yang bagus untuk memodelkan mesin Anda sendiri setelah.


1

Terima kasih banyak atas jawaban dan bantuan Anda yang tak ternilai. Saya akhirnya berhasil membangun proyek. Saya mencoba semua saran Anda dan pada akhirnya memilih sebagian cara saya sendiri untuk simulasi ini.

Saya menggunakan bulledsharp (pembungkus fisika peluru untuk c #) untuk mesin fisika, tetapi penting untuk menggunakan yang terbaru, dikompilasi sendiri dengan sumber bulletsharp dari sourceforge svn serta sumber fisika peluru segar itu sendiri. Bukan yang dikompilasi .dll's, tersedia untuk diunduh dari situs web. Versi yang dikompilasi terlalu lama untuk saya dan tidak menyertakan beberapa fitur berharga yang dikembangkan lebih lanjut. Apa yang saya juga pelajari adalah bahwa untuk simulasi sederhana di mana Anda tidak memerlukan grafik canggih, lebih baik menggunakan 3dsmax yang lebih lama, yaitu 2011 (bukan yang terbaru 2012), untuk mengembangkan model dll. Terutama karena ada lebih banyak plugin dan eksportir. Terlebih lagi sangat membantu untuk melihat tutorial di semua kerangka kerja yang tersedia (sharpdx, xna, xna4, slimdx, c ++ dan lainnya).

Akhirnya, pendekatan saya adalah membangun dinding kaca menggunakan potongan kubus yang sangat kecil. Tentu saja untuk menjalankan simulasi Anda harus memiliki mesin yang sangat kuat. Jika Anda memiliki sesuatu yang kurang kuat, Anda dapat menggunakan kubus yang lebih besar. Penting untuk membuat semua kubus dibuat dengan negara pulau tidur. Sekarang, setiap bagian memiliki perwakilannya dalam dua jajaran pelampung dimensi. Angka di sana menunjukkan apa kekuatan koneksi antara dua kubus. Ketika batu dilemparkan, dan tumbukan terdeteksi, gaya dihitung untuk setiap kubus di dinding (termasuk massa batu, dan kecepatan, massa dan ukuran kubus dan jarak dari pusat tumbukan) dan dikurangi dari larik dalam lingkaran -seperti pola. Kubus yang setelah dikurangi memiliki nol atau kurang kekuatan sambungan dibuat aktif. Ini menyebabkan anak-anaknya bergerak.

Ini dia. Terima kasih atas bantuan Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.