Beberapa waktu yang lalu saya bertanya bagaimana menentukan kapan wajah saling tumpang tindih. Sarannya adalah menggunakan Z-buffer.
Namun, saya tidak dapat menggunakan Z-buffer dalam proyek saya saat ini dan karenanya saya ingin menggunakan algoritma Painter. Saya tidak memiliki petunjuk yang baik tentang kapan permukaan berada di belakang atau di depan yang lain. Saya sudah mencoba banyak metode tetapi mereka semua gagal dalam kasus tepi, atau mereka gagal bahkan dalam kasus umum.
Ini adalah daftar metode penyortiran yang saya coba sejauh ini:
- Jarak ke titik tengah setiap wajah
- Jarak rata-rata ke setiap titik di setiap wajah
- Nilai z rata-rata dari setiap simpul
- Nilai z paling tinggi dari simpul setiap wajah dan gambarlah terlebih dahulu
- Nilai z terendah simpul setiap wajah dan gambar yang terakhir
Masalahnya adalah bahwa wajah mungkin memiliki jarak yang lebih dekat tetapi masih jauh. Semua metode ini tampaknya tidak dapat diandalkan.
Sunting: Misalnya, pada gambar berikut permukaan dengan titik biru sebagai titik tengah dicat di atas permukaan dengan titik merah sebagai titik tengah, karena titik biru lebih dekat. Namun, ini karena permukaan titik merah lebih besar dan titik tengah lebih jauh. Permukaan dengan titik merah harus dicat di atas yang biru, karena lebih dekat , sementara jarak titik tengah mengatakan sebaliknya.
Apa sebenarnya yang digunakan dalam algoritma Painter untuk menentukan urutan objek yang harus diambil?