Yol izleyici - çok katmanlı malzemeler ve önem örneklemesi


12

Şu anda Monte Carlo yol izleyicisini uygulamaya çalışıyorum. Biraz araştırma yaptım ve malzemelere ortak bir yaklaşım katmanlı bir model kullanmak gibi görünüyor. Bunun gibi bir şey:

resim açıklamasını buraya girin

Işık yüzeye çarptığında, Fresnel bize bu ışığın ne kadarının birinci tabaka tarafından yansıtıldığını ve ikincisine ne kadar gittiğini söyler.

Bu yüzden benzer ama daha basit bir şey yaptım: sadece bir speküler katman ve bir difüz katman. Henüz geçirgenlik yok. Şimdiye kadar iyi, diffüzüm için basit bir kosinüs ağırlıklı brdf ve spekülerim için Cook-Torrance mikrofaceted modelini kullanıyorum.

Şimdi zor kısım geliyor: Bir ışın yüzeye çarptığında ne yapmalıyım? Normalde, yüzey malzemesine karşılık gelen brdf'yi seçer, bir ışık yönünü örnekler, brdf'yi değerlendirir ve doğru olasılık dağılım işlevine bölerdim.

Ancak burada, bir yüzey vuruşu etkili bir şekilde birden fazla malzemeye karşılık gelir. Bunu idare etmenin naif yolu, isabet alan her katman için bir kez numune almak olacaktır. Ama bu açıkça, yolumun etkili bir şekilde ağaç haline gelmesine neden olan büyük bir performans vuruşunun kaynağı.

Daha iyi bir çözüm var mı?


1
Malzeme katmanlarını 'monte-carlo' yapamaz mısınız? Örneğin, her katmanı yansıtıcılıklarına göre ağırlıklandırın ve buna göre rastgele bir tane seçin. Daha derin katmanlar, üstlerindeki tüm katmanların emiliminin toplamına bağlı olarak biraz zayıflamaya ihtiyaç duyacaktır.
PaulHK

PaulHK Tam olarak yol izleyicimde yapıyorum, katmanlar arasındaki her arayüz için rus ruleti, bu yüzden hiç dallanma yok. Ne yazık ki, benim uygulama henüz bitmedi, bu yüzden gerçek performans hakkında bilgi yok. Uygulamamı, Andrea Weidlich ve Alexander Wilkie'nin Wenzel Jakob'un (Stefan'ın cevabında işaret ettiği) çerçevesinden daha sınırlı görünen, ancak yetenekli olan "Keyfi Katmanlı Mikro Yüzlü Yüzeyler" adlı kağıda dayandım. oldukça iyi sonuçlar elde etmek ve uygulamak çok daha kolaydır.
Christian Pagot

Yanıtlar:


7

Wenzel Jakob ve arkadaşları SIGGRAPH 2014'te katmanlı Malzemeler için bir çerçeve sundular . Bölüm 6.2 örneklemenin önemini açıklamaktadır. Kodları denklemlere tercih ederseniz, yöntem Mitsuba oluşturucuda uygulanır .


2
Jakob ve ark. bazı özel Fourier temsili gösteriminde tablolanmış BSDF verilerinin oluşturulmasına dayanır. Ayrıntılar için ilgili teknik rapora da bakın . Açık kaynak kodlu bir uygulama da PBRT'nin en yeni 3. baskısında mevcuttur . BSDF dosyaları Python'da layerlab ile oluşturulabilir .
tizian
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.