Bir süre önce bir yüzün ne zaman bir başkasının üst üste geleceğini nasıl belirleyeceğimi sordum. Tavsiye, bir Z tamponu kullanmaktı.
Ancak, şu anki projemde bir Z-buffer kullanamıyorum ve bu yüzden Ressamın algoritmasını kullanmak istiyorum. Yine de, bir yüzeyin bir başkasının arkasında veya önünde olduğu konusunda iyi bir fikrim yok. Çok sayıda yöntem denedim ama hepsi kenar durumlarda başarısız ya da genel durumlarda bile başarısız.
Bu şimdiye kadar denedim sıralama yöntemlerinin bir listesidir:
- Her yüzün orta noktasına olan mesafe
- Her yüzün her bir tepe noktasına ortalama mesafe
- Her tepe noktasının ortalama z değeri
- Her yüzün köşelerinin en yüksek z değeri ve önce bunları çizin
- Her yüzün köşe değerlerinin en düşük z değeri ve sonuncusunu çiz
Sorun şu ki, bir yüz daha yakın bir mesafeye sahip olabilir, ancak yine de daha uzaktadır. Tüm bu yöntemler güvenilir görünmüyor.
Düzenleme: Örneğin, aşağıdaki görüntüde mavi nokta daha yakın olduğu için orta nokta olarak mavi nokta ile yüzey orta nokta olarak kırmızı nokta ile yüzey üzerine boyanır. Ancak bunun nedeni, kırmızı noktanın yüzeyinin daha büyük olması ve orta noktanın daha uzakta olmasıdır. Kırmızı noktalı yüzey mavi olanın üzerine boyanmalıdır, çünkü daha yakındır , orta nokta mesafesi ise tam tersini söyler.
Ressamın algoritmasında nesnelerin hangi sırayla çizilmesi gerektiğini belirlemek için tam olarak ne kullanılır?