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.
Jawaban:
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.
sumber
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 .
sumber
Seperti yang disebutkan di atas, Anda berpikir tentang Metaballs.
Ini adalah artikel yang bagus tentang masalah ini dengan beberapa diskusi dan contoh teori dasar.
Menjelajahi Metaballs dan Isosurfaces dalam 2D
sumber