Dalam proyek saya, saya membuat sistem untuk mendeformasi mesh yang sangat detail (pakaian) sehingga 'cocok' dengan mesh cembung. Untuk melakukan ini saya menggunakan peta kedalaman item dan 'lambung' untuk menentukan pada titik apa di ruang dunia deviasi terjadi dan sejauh mana.
Cukup mengubah semua simpul tersumbat ke kedalaman seperti yang didefinisikan oleh 'lambung' cukup efektif, dan memiliki kinerja yang baik, tetapi menderita masalah tidak melestarikan fitur mesh dan membutuhkan culling yang luas untuk menghindari positif palsu.
Sebagai gantinya saya ingin menghasilkan dari peta deviasi kedalaman satu set 'deformer' sederhana yang akan 'mendorong' * semua simpul dari mesh cacat ke luar (dalam ruang dunia). Dengan cara ini, semua fitur mesh dipertahankan dan tidak perlu memiliki heuristik yang kompleks untuk memilah simpul yang tidak pantas.
Saya tidak yakin bagaimana cara menghasilkan set deformer ini. Saya membayangkan sesuatu seperti algoritma yang mencoba untuk mencocokkan permukaan bola untuk setiap bidang penyimpangan yang berdekatan dalam rentang tertentu, tetapi tidak tahu harus mulai dari mana.
Adakah yang bisa menyarankan filter atau algoritma yang cocok untuk menghasilkan deformer? Atau dengan kata lain 'mengompresi' peta kedalaman?
(* Dorong karena pas dengan humanoid cembung 'bulgy' sehingga transformasi cenderung 'bulat' dari POV permukaan.)
Sunting: Berikut ini adalah gambar / diagram yang disarankan yang menggambarkan apa yang saya coba capai.
Juga, saya harus mengatakan karena pertanyaan ini diposting saya bekerja lebih banyak pada masalah ini, dan meskipun saya tidak pernah memecahkan cara mendapatkan deformer saya akhirnya memutuskan bahwa peta kedalaman untuk ini tidak cocok karena:
- Jika mesh yang cacat tidak lengkap, dimungkinkan untuk mendapatkan texels di peta yang dimaksudkan berada di sisi lain dari mesh yang cembung (karena mereka tidak dikaburkan oleh mereka yang lebih dekat dengan kamera di sisi yang benar).
- Efisiensi tidak setinggi yang saya harapkan karena dibutuhkan 6 peta per deformasi.
Bukannya ini tidak dapat dipecahkan, tetapi solusi lain, yang melibatkan pengujian tabrakan pada kernel yang berjalan pada GPU, menghasilkan hasil kualitas yang lebih tinggi dan jauh lebih sederhana, meskipun mungkin tidak secepat itu.
Saya masih berpikir masalah pertanyaan ini menarik meskipun dan akan tertarik pada jawaban karena saya yakin ada situasi di mana itu akan lebih disukai.