Görülemeyen Yüzeylerin Elenmesi

Son güncelleme: 14.12.2009 11:30
  • 3d Max Görülemeyen Yüzeylerin Elenmesi - 3d Max Dersleri - örülemeyen Yüzeylerin Elenmesi

    Bu dökümanı culling işlemlerine en basit seviyede giriş olarak görebilirsiniz.

    Konular
    -Giriş-
    -BackFace Culling(Arka Yüzeylerin Elenmesi)
    -Frustum Culling
    -Sonuç
    A-Giriş
    Temel olarak yapmak istediğimiz şey ekranda gözükmeyek olan üçgenleri renderlememek ve collision detection and response tabii tutmamak. Bildiğiniz gibi renderlemek icin ücgenleri, transformation,lighting,reflection,shodowing vb birçok işlemden geçirmemiz gerekiyor, aynı işlemleri collision detection and response içinde geçerli.. Buda bize boşu boşuna işlem va zaman kaybına neden olmakta . Motorumuzu daha da hızlandırmak için motorumuza backface culling ve frustum culling kodlarını eklememiz gerecek

    A-BackFace Culling
    Arka yüzeylerin elenmesi işlemi oldukça basit.. Program ilk olarak çalışmaya başladığında sisteminizde göstereceginiz mesh ve geometrileri oluşturan üçgenlerin normalleri hesaplanmış olur ve sistemde saklanır.

    Simdi elinizde yüzey normalleri olduğunu düşünürsek arka yüzey görünüp görünmediğini

    P: Yuzey üzerindeki bir nokta
    Eye: Kamera Pozisyonu
    N: Yuzey Normali


    If (face is backface) [( P-Eye) .N>0]



    Harware olarak yapmak istiyorsanız Ben OpenGL kullandığım için OpenGL için

    glCullFace(GL_BACK_FACE);
    glEnable(GL_CULL_FACE);




    B-Frustum Culling
    Frustum Culling sizin görünmeyen üçgenleri/objeleri elemenizi sağlar. Bu konuyu ileride dahada ayrıntılı olarak anlatacagım. Çünkü Frustum Culling başarılı bir şekilde çalışabilmesi için Scene Graph sizin görüntü ağacınız ve nesnleri hiyarşik(BSP, Quatree, Octree) tutmanız ile yakından ilgili. Ben burada en basit şekliyle olayı size anlatmaya çalışacağim.Ayrıca bu konu alındır..


    Kamera matrisiniz elinizde FOV 90 derece olan bir kamera için frustum culling'i gerçekleştireceğiz.
    noimage


    Göz orijini (0,0,0) frustum düzlemleri arasındaki açı 90 derece ( sol ve sag, üst ve alt düzlemler ) Sonra kontrol etmemiz gereken noktanın bu düzlemler içinde olup olmadığı.

    (Burada dikey kısmın z ekseni, yatay ekseninde x ekseni oldugunu varsayın)


    IF( Xpos-Zpos <0) return OUTSIDE_LEFT;
    IF( Xpos+Zpos >0) return OUTSIDE_RIGHT;
    IF( Ypos-Zpos <0) return OUTSIDE_DOWN;
    IF( Ypos+Zpos >0) return OUTSIDE_UP;




    Kameranın her hareketinde devamlı olarak bu kontrolleri yapmanız gerek. Objelerinizi ve Kameranı hareket ettirip yine aynı hesaplamaları yapmanız gerekecek.
#12.12.2009 12:34 0 0 0
  • tesekkürler
#13.12.2009 17:27 0 0 0
  • rica ederim ...
#14.12.2009 11:30 0 0 0
  • Görülemeyen Yüzeylerin Elenmesi Konusuna Benzer Konular
  • Böyle bir şey olamaz.! Hiç alakalı konu bulamadık.