Gölge Eşlemede Projektif Takma Adın Kullanılması


15

3D baskı için ufacık binalar yapmak için basit prosedürel 3D modelleme ile uğraşıyorum. Bir örnek:

Bina


Modelleri ekranda daha okunabilir hale getirmek için, tek yönlü bir ışık için temel gölge eşleme uyguladım. Sahnem değişmediğinden, gölge haritasının sınırlarının ne olması gerektiğini anlamak için sadece bir kez sahnenin ekseni ile uyumlu bir kutu kullanarak gölge haritasını oluşturuyorum. Gölgeler ve sınırlar, tüm matrisleri doğru gibi görüyorum, ancak biraz daha yaklaşmak korkunç görünüyor:

Kule closeup

Yaptığım okumadan, peter panning'i ve bununla ilgili ne yapabileceğimi anlıyorum, ancak bir tür yansıtmalı örtüşme biçimi olduğuna inandığım yırtık kenarlar o kadar kötü görünüyor ki temel uygulamamda bir şeylerin yanlış olduğunu düşünüyorum.

Gölge gölgesini göstermek için piksel gölgelendiricisini hackledim:

Texel Sınırlarını Gösterme

Dokuda bilinear filtreleme var (onsuz, ciddi gölge aknesi alıyorum). Ne yazık ki, PCF'deki girişimim de başarısız oldu - aynı düzensiz görünüyor:

resim açıklamasını buraya girin

İşte bilinmeyen filtreleme devre dışı bırakılmış tek örnek durum:

resim açıklamasını buraya girin

Bu "tipik" projektif örtüşmeye benziyor mu? Gölge haritanın dinamik olarak oluşturulması, sahneye kırpılmış görünüm frustumunu, muhtemelen basamaklı olarak kullanarak sorunu çözebilir mi?

Düzenleme: Sadece ne aldığımı göstermek için bilinear filtreleme, gölge sonrası karşılaştırma, bir closeup ekleme. Kötü kenarlı sivilce iç kenarlar nedeniyle ortaya çıkıyor; Yığılmış sanal bloklarla modelleme yapıyorum ve uygun bir sendika işlemi yapmıyorum. Okuduğumdan, polyhedra üzerinde boolean operasyonları uygulamak önemsiz değil, aynı zamanda bazı 3D baskı yazılımları için statik gölge hacimlerini uygulamamın yanı sıra temizlememe de izin verecek.

Bilineer Filtreleme

Yanıtlar:


10

Kabul edilebilir kalitede gölge haritalama oldukça büyük bir yolculuktur. Böylece, tüm sahneyi statik olarak kapsayan ilk adım - temel gölge haritasını uyguladınız. Bu, ışık görüntüleme alanındaki gölge haritası texel boyutunun, kamera görüntüleme alanı oranında oluşturulan sahnenin texel boyutuna göre oldukça büyük olması ve diğer adların örtüşme ile sonuçlanması anlamına gelir. Bu oranı 1: 1'e yakınlaştırmak için bahsettiğiniz teknikler vardır:

  • en kolay yol, hala optimum performansla değeri bulmak için gölge haritanızın boyutunu büyütmektir,
  • gölge haritasını kamera görüntüsü frustum ile hizalayın. Daha sonra gölge haritası sahnenin daha küçük bir bölümünü kaplar, böylece takma adı azaltır,
  • bu aynı şeyi yapan CSM'ye geliştirilebilir, ancak her bir frustum diliminin merkez noktasına dayalı olarak farklı orta ışık pozisyonu matris merkezi ile çağlayanların her biri için sahne oluşturmanız gerekir.

Gölgenin kenarını yumuşatmanın temel tekniklerinden bazıları:

  • Açıkçası PCF'dir, ancak PCF uygulamanızı yerleşik donanım PCF (Opengl - kullanımda sampler2DShadow) ile birleştirmeniz önerilir . Bu, yanınızdan daha az döngü yinelemesine ve daha ucuz PCF'ye neden olur,
  • döndürülmüş Poisson Disk kullanılarak kenarların tıkanması gürültü ile değiştirilebilir. Gölge haritasından numune almak için kullanılan örnekler, her PCF döngüsü yinelemesinde rastgele döndürülür.

Ayrıca kenar düzeltme tekniklerini de araştırabilirsiniz:

PCF temel tekniği, gölge testinde bir miktar ofset uygulanarak düzeltilebilen gölge aknesi çekmektedir. Bu ofsetin büyüklüğünü hesaplamak da araştırma alanıdır .

Diğer daha gelişmiş gölge haritası yöntemleri şunları içerir:

  • Üstel Gölge Haritaları ve Varyans Gölge Haritaları - çoğu durumda gölge akneden muzdarip değildir ve tıkanıklık olmadan pürüzsüz kenarlar sunar, ancak bazı hafif sızıntı durumlarının maliyeti vardır,
  • Üstel Varyans Gölge Haritaları - muhtemelen en gelişmiş 2D derinlik haritası gölge haritalama tekniği, VSM'nin mükemmel pürüzsüzlüğünü birleştirir ve bellek sızıntılarını gidererek maliyet sızıntılarını giderir,
  • Yüzde Yakın Yumuşak Gölgeler - geleneksel gölge haritalarını değişen penumbra boyutlarıyla zenginleştirmenin temel tekniği,
  • Multiview Gölge Haritaları - değişen penumbra boyutuna sahip gerçekçi yumuşak gölgeleri hesaplamak için alan ışığında düzenlenmiş bazı tekniklerin çoklu gölge haritaları,
  • Derin Gölge Haritaları - gölgelerle hacimsel saçılmayı artırmak için,
  • Gerçek zamanlı ışın gölgeleri izledi - muhtemelen gelecek.

PCF ile başarısız olmadınız, öyle görünüyor :)

Keşke kamera görüş alanında gölge haritasında gauss bulanıklığı uygulamanın bir yolu olsa da, beklendiği gibi çalışmaz.


Bölüm Bu yoruma Sadece oradan bir bildirim almazsınız beri bildireyim dedim nedenle, Cevabınız için teşekkür ediyor.
trichoplax

Evet, gördüm ama teşekkürler.
narthex

1

"... dokuda bilinear filtreleme ..." dedin. Görünüşe göre gölge haritasının derinlik değerlerini enterpolasyonluyorsunuz. Gölge haritası ile enterpolasyonu kullanmanın doğru yolu, haritayı gölge testlerinin sonuçlarına uygulamaktır (hatırladığım kadarıyla OpenGL bunu desteklemektedir). Gölge testlerinin sonuçlarının enterpolasyonunu PCF ile birleştirebilirsiniz, bu da çok daha iyi sonuçlar verecektir. Ancak, fark etmiş olabileceğiniz gibi, takma ad her zaman gölge eşlemesini takip eden bir vebadır :)

Her ne kadar gölge haritalama ile ilgili çözümler aradığınızı anlasam da (uygulanması oldukça basit olsa da), hiç gölge ciltlerinin kullanımını düşündünüz mü? Uygulanması çok daha karmaşıktır, ancak hiçbir şekilde takma addan muzdarip değildir ve bence amaçlarınıza çok yakışır.


Cevaplar için çok teşekkürler! Aradığım sonuçları almak için gölge hacimlerine geçmek uygun olabilir. "İnterpolasyon" altında sağlanan kod akışı bağlantısı çok yararlı - teşekkürler!
Daniel M Gessel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.