Z fighting

Opengl de bana ilginç bir anı ve şu anda kullandığım avatarımı vermiş olan konu.

Basit olarak anlatmak gerekirse 3d ile çizilen iki şeklin kameraya olan uzaklıklarının birbirine eşit (veya çok yakın) olması ile oluşan, opengl in hangi şekil üstte olmalı anlayamamasından oluşur.

En basit çözümü üstte görünülmesi istenilen şeklin bir birim daha öne kaydırılmasıdır, ama eğer bizim başta  “en fazla şu kadar uzaklıkta olan z lerin çizilmesine izin ver” diye verdiğimiz değer çok büyükse bu yeterli olmayabilir.

Diğer bir çözümde stencil buffer kullanmak. Önce altta kalmasını istediğimiz nesneyi hem ekrana hem de stencil bufferına çizeriz, daha sonrada üstte kalmasını istediğimiz nesneyi eğer stencil buffer 1 ise kesin çiz, 0 ise depth test yap öyle çiz deriz. Şu an da tam hangi değerleri vereceğiz aklımda olmadığı için böyle yarım yamalak bir tanım yaptım =)

Neyse asıl anlatmak istediğim bu z buffer ın bana bıraktığı hoş anı =) 3 boyutlu engebeli bir gezegen yapmak istiyordum, ve onunla uğraşırken şu şekli ortaya çıkardım.

interesting1

Ne olduğunu başta çözemedim, sonradan farkedebildim niye böyle bir şey çıktığını. İşte z fighting sonucu ortaya çıkan bir şekil, doğrusu gözüme çok hoş geldi ve avatar olarak kullanma kararı aldım =D İlerde birileri sorunca avatarın ne diye “Kendisi bir bugtır” diyeceğim.

Malesef programın o halini kaydetmemişim =( ama bir gün tekrar aynı “hata”yı ortaya çıkarmaya çalışacağım.

gezegen

Bu da şeklin olması gerek şey idi, malesef sadece çok küçük bir resmini tutmuşum. Soldaki şey engebeli bir gezegen aslında, döndürünce falan hoş duruyordu. İleride tekrar uğraşabilirim, yapmak istediğim proje küre şeklinde bir dünya yaratmak ve uçarak bu dünya üzerinde gezine bilmek idi (Spore oynayanlar demek istediğimi anlayabilmiştir) hatta binalar falan eklerim diyordum ama sonunda (diğer bir çok projeye olan şey gibi =D) yarım kaldı. Şu an dosyalarını bile bulamıyorum.