Gambar partikel sebagai gumpalan halus

12

Saya baru dalam pengembangan game / grafis dan saya bermain-main dengan partikel (dalam 2D). Saya ingin menarik partikel berdekatan satu sama lain sebagai gumpalan, seperti cairan / air. Saya tidak ingin menggambar lingkaran besar yang tumpang tindih karena gumpalan tidak akan mulus (dan terlalu besar). Saya tidak benar-benar tahu fisika tetapi saya menganggap apa yang saya inginkan adalah sesuatu yang mirip dengan tegangan permukaan.

Saya belum dapat menemukan apa pun di stackexchange atau di Google (mungkin saya tidak tahu kata kunci yang benar?). Sejauh ini saya telah menemukan dua solusi yang mungkin, tetapi saya tidak dapat menemukan informasi konkret tentang algoritma.

Salah satunya adalah menghitung lambung partikel cekung yang saya anggap sebagai gumpalan. Saya bisa menghitung gumpalan dengan membuat kelas ekivalensi (pada relasi "dekat satu sama lain"). Anehnya saya belum dapat menemukan setiap algoritma yang menjelaskan bagaimana menghitung lambung cekung. Banyak posting (dan di antara stackexchange) tautan ke perpustakaan atau produk komersial yang melakukan ini (saya perlu perpustakaan untuk bekerja di C #), tetapi tidak pernah ada algoritma. Juga solusi ini mungkin memiliki masalah dengan lingkaran partikel, yang tidak akan mendeteksi ruang kosong di tengah.

Saat meneliti lambung cekung, saya menemukan sesuatu yang disebut bentuk alfa. Yang tampaknya persis apa yang ingin saya lakukan, namun sama halnya dengan lambung cekung saya belum menemukan sumber yang menjelaskan bagaimana mereka sebenarnya bekerja. Saya telah menemukan beberapa materi presentasi tetapi tidak cukup untuk melanjutkan. Ini seperti rahasia besar yang diketahui semua orang kecuali saya: - /

Setelah menghitung bentuk lambung cekung atau bentuk alfa, saya ingin menjadikannya kurva Bézier untuk membuatnya halus dan bagus.

Meskipun saya menemukan pendekatan saya agak terlalu rumit, mungkin saya mencoba menyelesaikan ini dengan cara yang salah? Jika Anda bisa menyarankan solusi lain untuk masalah saya, atau menjelaskan bagian yang saya lewatkan, saya akan sangat senang dan berterima kasih :-)

Terima kasih.

Nömmik
sumber
stackoverflow.com/questions/83593/…
BlueRaja - Danny Pflughoeft
@BlueRaja Terima kasih atas komentar Anda. Meskipun saya sudah menemukan posting itu tetapi menolaknya karena jawaban itu baik tautan ke makalah yang tidak secara langsung menyelesaikan masalah saya, tetapi referensi mereka mungkin atau paten yang tidak dapat saya gunakan secara terbuka (saya pikir, saya tidak pandai birokrasi) (Saya bahkan tidak menemukan tautan unduhan).
Nömmik
1
Paten "marching cubes" kedaluwarsa pada tahun 2005, sebagian besar contoh 2D jauh lebih tua dan itulah sebabnya Anda mungkin telah melihatnya memperingatkan Anda tentang penggunaannya pada halaman web lama.
Patrick Hughes
1
Berikut adalah artikel gamedev yang membahas metaballs dan isosurfaces, dengan beberapa contoh untuk memperjelas gagasan: tautan
Patrick Hughes
Terima kasih telah memberi tahu saya tentang metaballs, mereka tampaknya melakukan apa yang saya inginkan :-)
Nömmik

Jawaban:

8

Kata kunci yang mungkin Anda butuhkan adalah "Metaballs," dan berkisar dari sampel GPU NVIDIA nVidia yang kompleks hingga ke versi demo adegan yang dirancang hanya untuk terlihat bagus dan berjalan cepat.

Patrick Hughes
sumber
Memang, saya tidak tahu kata kunci :-) Saya akan melihat lebih dekat dan jika sepertinya itu yang saya butuhkan, maka saya akan menerima jawaban Anda. Terima kasih!
Nömmik
1
1 bagi saya berpikir itu adalah "bakso" sebelum saya membacanya untuk kedua kalinya.
James
2
Bisakah Anda menambahkan sedikit lebih detail pada jawaban ini? +1 jika Anda melakukannya.
AttackingHobo
@ James, saya pikir semua orang membuat kesalahan itu saat pertama kali mereka melihat kata itu!
Jeff
1

Untuk mengonversi sekelompok partikel menjadi sebuah jaring untuk dirender, dengan gaya metaballs, Anda dapat melihat pada algoritma Marching Cubes , yang menghasilkan mesh poligon dari data voxel. Ada demo demoscene yang memiliki contoh yang bagus tentang ini, dengan semua yang dihasilkan pada GPU: numb res .

pencuri
sumber