Mesin fisika soft-body 2D?


9

Hai, jadi saya baru-baru ini mempelajari perpustakaan grafik SFML dan ingin menggunakan atau membuat sistem fisika 2D non-kaku untuk digunakan dengannya. Saya punya tiga pertanyaan:

Definisi tubuh kaku di Box2d adalah

Sepotong materi yang sangat kuat sehingga jarak antara dua bit materi pada potongan sepenuhnya konstan.

Dan inilah yang sebenarnya tidak saya inginkan karena saya ingin membuat badan yang elastis, dapat berubah bentuk, mudah pecah, dan terhubung kembali. 1. Apakah ada mesin fisika 2D sederhana, tetapi dengan karakteristik seperti ini di luar sana? lebih disukai gratis atau opensource?

2. Jika tidak, bisakah saya menggunakan box2d dan mengerjakannya untuk membuatnya bahkan jika itu didasarkan pada tubuh yang kaku?

3. Akhirnya, jika ada mesin fisika sederhana seperti ini, haruskah saya melanjutkan dengan proses membuat yang baru, hanya untuk pengalaman dan untuk meningkatkan pengetahuan matematika fisika? Saya merasa akan membantu jika saya ingin memodifikasi kode mesin yang ada, atau membuat game dengan fisika yang sangat unik.

Terima kasih!


1
Ada mesin yang disebut JelloPhysics (C #), tetapi situs itu tampaknya mati. Ada video di sini: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Jawaban:


6

Anda dapat menggunakan sistem tubuh yang kaku untuk menciptakan dinamika tubuh dan cairan yang lembut. Alasan fisik di baliknya? Pada dasarnya, atom adalah benda-benda kecil yang kaku. Tentu saja ini tidak sepenuhnya benar, tetapi untuk kesederhanaan Anda dapat melihatnya seperti itu. Dan tubuh lunak jelas terbuat dari atom.

Jadi, bagaimana Anda membuat "tubuh lunak" menggunakan mesin tubuh kaku seperti Box2D?

Teknik penting adalah untuk mengikat titik-titik di tubuh Anda bersama menggunakan sendi Sebagai contoh, jika Anda menghubungkan ujung daftar garis bersama-sama menggunakan sambungan jarak (artinya jarak antara dua sambungan harus konstan), kira-kira akan berperilaku seperti selembar kain.

Tapi itu hanya deskripsi kasar. Banyak "pekerjaan lapangan dasar" dengan Box2D telah dilakukan oleh ewjordan, salah satu pengembang Java-port Box2D. Inilah titik awal yang baik: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978


Campuran pegas ketegangan / kompresi diperlukan untuk menjaga "bentuk" tubuh lunak, serta menghitung volume agar tetap utuh.
Jonathan Connell

Ya, tetapi semua itu sebenarnya dilakukan melalui sambungan, jika kita berbicara tentang Box2D. Tentu dia harus mengubah perilaku mereka secara manual, tetapi di situlah dia harus memulai. Untuk efek volume konstan dalam gumpalan mirip Gish misalnya, JBox2D memiliki ConstantVolumeJoint.
TravisG

Ya saya tidak begitu akrab dengan Box2D, saya hanya tahu bagaimana beberapa kolega menggunakan PhysX untuk mensimulasikan gelembung ^^
Jonathan Connell

1

Istilah yang Anda cari adalah fisika tubuh lunak.

Wikipedia memiliki daftar yang bagus. Semuanya 3D AFAICS, tetapi harus bagus.

Lihat juga pertanyaan SO ini .

Buku yang bagus (badannya kaku, tetapi semua matematika dan fisika ada di sana; ini juga 3D, tetapi mudah ditransfer ke 2D) adalah Game Physics Engine Development . Ini mengimplementasikan sistem berbasis partikel sebelum bergerak ke benda yang kaku dan tabrakan.


1

Salah satu cara sederhana untuk mensimulasikan benda lunak adalah dengan menyambungkan benda-benda kecil yang kaku dengan sambungan elastis. Maka bagian yang sulit adalah untuk menyempurnakan parameter model Anda dan memetakan tekstur ke model yang mendasarinya.

Posting blog berikut memberikan implementasi bola yang dapat dideformasi dengan mesin cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html


kredit untuk undian debug cocos2d ;-)
sdabet
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.