Bir yüzeyin diğerinin üstüne binmesine neyin sebep olduğunu gerçekten anlayamıyorum. Oluşturduğum bir 3D motorda tekniğim uç durumlarda başarısız oluyor.
Benim yöntemim boyanacak yüzeyleri en uzaktan en yakına doğru sıralamak. Yakınlığı belirlemek için ortalama z değerlerini karşılaştırıyorum. Bununla birlikte, bazen, örtüşen bir yüzey, örtüştüğünden daha yüksek bir ortalama z değerine sahiptir. Böylece, daha uzaktaki yüzey daha yakın olana boyanır - bunun gibi tuhaf bir renderleme ile sonuçlanır:
Birinin görmesi gereken, sadece küpün mor ön yüzeyi iken, kırmızı yan yüzey mor olanın üzerine boyanmıştır. Mor yüzeyin ortalama z değeri daha yüksektir ve bu nedenle 'daha uzağa'. Bu tekniğin doğru olup olmadığı konusunda biraz şüphem var.
Ayrıca denediğim şey kameradan yüzeye (yani orijinden) olan mesafeyi almak, ama sonra bir noktaya ihtiyacım vardı. Her yüzeyin ortasını seçtim ama aynı zamanda her zaman işe yaramıyor çünkü tüm yüzeyler birbirinden büyük değil.
Bu nedenle, yüzeylerin kökene yakınlık sırasını belirlemenin güvenilir bir yolu nedir?