[ iç mekan aydınlatması ] foton mapping

[ iç mekan aydınlatması ] foton mapping

chrome_nickel

şu linkten
[url]http://www.tr3d.com/paylasim/U076IQf2F.zip[/url]
üzerinde çalışacağımız sahneyi 3ds formatında indirebilirsiniz. sahneyi atelye için kendi elimlen çizdim :). sistem ölçü birimi cm iken, zeminden-tavan ölçüsü 585 cm olması lazım. bu ölçü tutacak şekilde sistem ölçeğini değiştirin. çünkü foton map ile çalışırken unutmamamız gereken en önemli şeylerden birisi, ölçülü çalışmanın önemli olduğudur.


foton mapping, gerçek dünyada ışığın oluşumunu mümkün olduğunca birebir taklit etmeye çalışan, ama bunu günümüz bilgisayarları için hesaplanabilir yapmak amacıyla formülize eden bir sistemdir.

foton mapping ile gerçekçi ışık elde etmenin avantajları ve dezavantajları :

bahsedilebilecek dezavantajları
-----------------------------
1 - fotonlarla aydınlatmak, diğer birçok yönteme göre daha fazla hesaplama gerekir. bu da foton mapping´in biraz yavaş çalışması demektir.

2 - bir çok ayara hakim olmak gerekir. doğru bir aydınlatma için sahneye bağlı olarak render sürecinde ele alınan her değeri, her ayarı bilmemiz ve sahneye uygun şekilde ayarlamamız gerekir.

bahsedilebilecek avantajları
-----------------------------
1 - fotonlarla aydınlatmak, doğru ayarlardan sonra birebir gerçekçiliğin garantisidir. bu yüzden film sektörünün gözdesidir.

2 - yeterince uzman birisi gereken her ayarı optimize edip görüntü kalitesini koruyarak render süresini epeyce kısaltabilir.

3 - sonuca giden bütün ipler bizim elimizde olduğu için, sadece çok güzel fotogerçekçilik değil ; değişik atmosferler, fantastik sahneler oluşturabilirsiniz.

2007-01-22 20:49:56

Cvp

chrome_nickel

brazil poligonları otomatik olarak çift taraflı görmeyen bir render sistemi. yani poligonun görünmeyen yüzüne ışık takılmıyor, global ışımada da bu ışınlar aynı yönde ilerlemeye devam ediyor. ancak poligonun dolu yüzüyle kesiştiklerinde hesaplanıyorlar. bunu göz önünde bulundurarak sahnemizdeki camlar isimli kütleyi 2-sided olmayan bir standart material ile, diğer nesneleri de 2-sided özelliği aktif olan başka bir standart material ile kaplayalım. böylece camlardan içeri ışınlar girebilecek ama uzaya geri kaçamayacak. tek yönlü bir ışın kafesi yapmış olacağız.

birinci adım : ışıkları yerleştirelim. aşağıdaki şekil1´de gördüğümüz gibi sahnemize spot tipinde bir brazil light çizelim. ve şekil2´yi takip ederek directional tipine çevirelim.
[img]http://www.tr3d.com/dosyalar/opc9d5l0H.gif[/img]

bLight direct tipine dönüşen ışığın general parameters bölümünden shadows seçeneğini işaretleyerek gölge üretmesini sağlıyoruz. aktif hale geldiğindeki gölge aslında yeterli. ama biz çalışmamızın ilerleyen aşamalarında çok daha başarılı gölgelendirme tarzlarını kullanarak daha güzel güneş etkileri yakalamaya çalışıcaz.

ardından ışığın hotspot / fallof / focus bölümünden hotspot´unu genişleterek sahnemdek bütün pencerelerden içeri girmesini sağlıyorum. ve sahneme bir kamera yerleştiriyorum. işte bu adıma kadar görmüş olmamız gereken render çıktısı.
[img]http://www.tr3d.com/dosyalar/H3O5sabYv.gif[/img]

bu ışığımız bize güneş yönünden gelen keskin ışıma etkisini sağlayacak.

şimdi sıra güneşin atmosfer içinde ve cevredeki diğer nesnelerde kırılıp yansıyarak gelen ışınlarını taklit etmemizi sağlayacak olan rectangle area tipindeki alan ışıklarımıza geldi

şekil4´deki gibi, sahnemize ışık giren her açıklığa brazilLight rectanglearea çizelim. ben sağda görünen iki küçük pencerenin rectangle area ışıklarını instance yaptım. böylece bir tanesiyle oynadığımda koridorun ışımasını kontrol etmek yarı yarıya kolay olacak.
[img]http://www.tr3d.com/dosyalar/A52mGIrvB.gif[/img]

şekil5´de bu adımdaki render sonucu görülüyor.
[img]http://www.tr3d.com/dosyalar/0y837H0UM.jpg[/img]

standart materiallerimin diffuse renklerini r:250 g:250 b:250 olacak şekilde ayarladım. böylece ışıma ayarlarını yaptıktan sonra sahnemizin materiallerini tamamlayıp fırına vericez
---------------------------------------------------
buraya kadar yaptığımız şey, ışığın doğru şekilde ve doğru yönlerden gelmesini sağlamaktı. şimdi ışıkların genel ayarlarıyla oynayalım.

giriş kapısındaki ışığın ayarları
hotspot:0
fallof:60 çünkü daha çok eğimli açılardan ışık ulaşacağından, çok fazla yöne doğru dağılan ışıma olmayacak. bu yüzden fallof´u dar tutuyorum.

çatıdaki eğimli pencerenin ışığının ayarları
hotspot:0
fallof:90 çok dikey açılardan, dolayısıyla atmosferin hemen her yerinden ışık gelebileceği için fallof´u açıyorum.

küçük pencerelerin hotspot:0 fallof:90 dikine ince uzun olduğundan, atmosferden daha fazla ışık alabilir.
bu aşamanın render´i olan şekil6´da ışık odaklanmasının değiştiğini rahatça gözlemleyebiliriz.
[img]http://www.tr3d.com/dosyalar/R8u7LJxOM.jpg[/img]
ancak kamera açısının soluna doğru baktığımızda bir ışık patlamasının olduğunu görebiliriz. bu 3d ortamda ışığın hızı kavramı olmadığından ışığın uzayın sonuna kadar gitmesinden kaynaklanıyor. dolayısıyla gerçekçi bir ışıma değil. o halde gerçekçi yapalım. Decay.. ışığın mesafe ve zamana bağlı zayıflaması.
güneş ışığımız dışındaki ışıkların attenuation / decay bölümünden, varsayılan olarak auto seçili olan decay seçeneğini ON olarak değiştirin. açılır kutudan inverse square´ı seçip start dist değerini 0 yapın. scale ise şimdilik hepsinde 100 olsun.

bu ayarlarla ışığımızın mesafeye bağlı zayıflamasını ayarlamış olduk. buradaki scale değeri, ışığın sayıflatma nesafesi. ışığın o anki şiddette ne kadar mesafeyi aydınlatabileceğini anlamak için scale değerinin 100 olması yeterli. daha sonradan ışık patlamaları ve ışık dengesi için biz bu ayarı değiştirmek isteyebiliriz.
bu haliyle sahnemiz epey karanlık olacak. çünkü ışığımız giderek zayıfladığı için gücü çok yetersiz kalacak. bu yüzden bütün ışıkların güçlerini artırmalıyım. mantıken, çapraz duran çatı penceresinden çok daha fazla ışık geleceği için, o ışığın multiplier değerini 3,5, diğerlerini 2 yapıyorum.
yalnız bu ayarları yaparken güneş´in ayarlarına dokunmadık. güneşte decay hala auto seçeneğinde. ve multiplier değeri de 1,0.
aşağıdaki render bu aşamanın sonucu. ışığın dağılımını incelersek, ışığın kolay ulaşıp aydınlattığı ve zor ulaştığı yerlerin tonlamasının doğal olduğunu görebiliriz.
[img]http://www.tr3d.com/dosyalar/fqVt25NNM.jpg[/img]
------------------------------------------------------
buraya kadar, ışıklarımızın genel ayarlarını tamamlamış olduk. burdan sonra yapacağımız ayarlar, ışığın direkt olarak çarpmadığı yüzeyleri de aygınlatmasını sağlayacak olan global ışıma ayarları yani foton mapping ayarları olacak. şimdi bunlara geçelim.

foton mapping´e ışık kaynaklarından foton göndererek başlıyoruz. sahnemizi fotonlar aydınlatacağına göre, ne kadar fotonla sahnemiz aydınlanacak? onu bilmemiz ve belirlememiz lazım. bilmiyoruz. o zaman deneyelim.

çatı penceresi ve girişin ışık kaynaklarının ayarlarından photon maps bölümündeki global seçili iken, generate photons seçeneğini aktif yapalım. böylece ışık kaynağını global ışımaya dahil etmiş olduk. güneş dışındaki ışıklarımızın hepsinin generate photons seçeneğini aktif yapalım. böylece hepsi de global ışımaya girecek. şimdilik güneşi global ışımaya dahil etmiyoruz. o dursun. sora bakarız. bu haliyle bir render yapın. !?!?!?! sonuç değişmedi. foton gönderdiniz sahneye ama hiç bişey olmadı. bu fotonlar bi işe yaramıyo biliyoduk demi. vray falan vardı onda foton yoktu ki.. :) değil tabi... render panelinden gerekli ayarları yapmadığımız sürece, global ışıma hesaplanmaz. bi ışıkların photon maps bölümünden generate photons seçeneğini seçerek, foton haritaları hesaplanacak olursa bu ışıkları da global ışımaya dahil et demiş olduk. ve global ışıma hesapları sırasında her ışıktan kendi # photons değeri kadar foton hesapla! demiş olduk. çatı ve giriş ışıklarının #photons değerini 25000, diğer koridor ışıklarının #photons değerini 10000 olarak ayarlayalım.

şimdi render panelimizden renderer paneline gelelim. burada, brazil´in bir çok grup ayardan oluştuğunu gözlemliyoruz.

merakımızı hemen gidermek için,
brazil : luma server bölümünden indirect illumination seçeneğini aktif hale getirelim.
ardından brazil:photon map server bölümünden global seçili iken, active seçeneğini işaretleyelim. işte budur. :) artık fotonlarımız hesaplanacak!
photon map server bölümünde max search radius değerini önce 10 yapalım. ve render yapıp sonucu görelim.
sonra 15 ve 20 yaparak renderlar arasındaki farkı görelim. büyüyen foton kümelerinin sahnemizi nasıl kaplayarak aydınlattığını görüceksiniz.
[img]http://www.tr3d.com/dosyalar/L5LD39uY7.jpg[/img]

başlangıçta ışık patlamaları, dengesizlikleri anlatarak doğru sonuçlara nasıl gideceğimizi göstermek istemiştim ama böyle çok uzun ve yorucu olacak benim için. madem bu bi atelye, o zaman, paylaşalım iş yükünü :) ben bu çalışmayı bitirim. sora belirli ayarları kurcalayarak daha güzelleştirmeye çalışalım. böylece her ayarın ne işe yaradığını daha iyi anlarız.

şimdi sahnemdeki ayarları şöyle değiştirdim :

çatı ışığı,
multiplier 1.5
#photons 500.000
hemen altındaki power 2,5

giriş ışığı,
multiplier 0.5
#photons 250.000
power 1,0

koridor ışıkları,
multiplier 0.5
#photons 50.000
power 0.5

photon map server ayarları,

diffuse depth 10
multiplier 2,0
max search radius 20

sonuç >>>
[img]http://www.tr3d.com/dosyalar/poTsypW6A.jpg[/img]

ciddi bir noise sorunumuz var. bunun sebebi şu. global ışımada, ışık kaynağından foton değil foton kümesi gönderiliyor. max search radius ise, en büyük foton kümesinin çapı. ve photons in estimate değeri, foton kümesinin içinde kaç tane foton bulunduğunu tanımlayan değerimiz.

mantıken düşünürsek, foton kümemiz biraz büyürse, ve içindeki fotonlar da artarsa, her tarafa daha fazla foton ulaşır mı? evet. bu da noise´u azaltır mı evet. peki noise´u ortadan kaldırır mı ? bilmiyorz. bakalımm.. deneyelim :)
yukardaki ayarlardan sonra, photon map server bölümünden photons in estimate değerini 2500 yapalım. ve yeniden render yapalım. sonuça noise´un zayıflayıp eridiğini ancak poligonların köşe oluşturduğu yerlerde aydınlatma sorunları olduğunu görebiliriz.
///////// buraya resim gelecek //////////

bu durumda anlamamız gereken temel fikir şu, foton haritası yönteminde temel sistem, bize fotogerçekçi ışıma için ekstra birşeyler gerekli. brazil´de bu bounce diye geçiyor. mental ray´de final gathering diye geçiyor. ama işlev aynı. global ışımada ışınların daha fazla zıplamasını sağlayarak daha gerçekçi bir aydınlatma hedefleniyor. bu işlevi brazilde kullanmak için ayarları şöyle değiştirelim

çatı ışığı,
multiplier 1.5
#photons 250.000
hemen altındaki power 2,5

giriş ışığı,
multiplier 0.5
#photons 150.000
power 1,0

koridor ışıkları,
multiplier 0.5
#photons 25.000
power 0.5

photon map server ayarları,

diffuse depth 10
multiplier 1,5
max search radius 20
photons in estimate 100

illumination server ayarları
view rate 20
sec rate 10
bounces 2

bu ayarlardan sonra render yaptığımızda, noise sorununu da ortadan kaldırarak fotonlar ile aydınlatma konusunda iyi bir sonuç elde etmiş olacağız.

elbetteki benim bu ayarlar, kesinlikle bu sahne için uygun olan ve optimize edilmiş ayarlar değil. çıkan sonuca bakıp da neden bu kadar yavaş!? sorusunu sormayın :) atelye ne işe yarayacak ki sonra. birlikte deneyip görücez. adım adım ayarları değiştirerek, değişik sahnelerimizi nasıl optimize edebileceğimizi görücez, ve denemelerimiz arttıkça, bir sonraki render´i nasıl optimize edebileceğimiz hakkında render denemesi yapmadan fikrimiz olacak. bu da bizim zaman içerisinde uzmanlaştığımızı göstericek. bir de not düşeyim, brazil ile photon mapping´i öğrenmek, mental ray ile gi yapmayı da öğrenmek demek, yada benzer bir kaç renderer ile.

şimdi, bu noktaya kadar uygulayan arkadaşlardan ricam, en son render´inin kaç dakika ( eski makinası olan arkadaşlar saat yazmakta çekinmesinler ) sürdüğünü ve render sonucunu paylaşalım.

2006-07-16 11:38:59

Cvp

design5D

[img]http://img153.imageshack.us/img153/1416/1hd6hg0.jpg[/img]
max search radius değeri 100, arttıkça ortamda daha aydınlanıyo.sanırım aldığı yolla ilgili bi değer.

2006-07-16 15:40:47

Cvp

chrome_nickel

Engin, şimdi senin sahnende, girişten giren ışık çatıdan giren ışıktan daha yoğun. aslında bunun tersi olması gerekmez mi?. bence giriş ışığı ve çatı ışığının multiplier değerlerini ters yapmak gerek gibi geliyor sende. bir de ilerdeki koridor çok aşırı aydınlık gibi geliyor gözüme. eğer oraya dikkat çekmek istemiyorsak sahnede, bence oranın yarı yarıya zayıflaması gerek.

max search radius´u 10, 15 ve 20 yaptığında, sahnendeki beneklenmeyi ve beneklerin değer arttıkça büyüdüğünü görmüş olman gerek. burdan şunu diyebiliriz. ( aslında tam olarak öyle değil. ama benzer bir mantık ) bu değer, fotonların çapı olabilir mi?.. ne kadar büyük olursa bir foton sahneyi kaplaması o kadar kolaylaşır mı?... daha az fotona daha çok iş yaptırmış olur muyuz?. ama bunun dezavantajları var. bahsi geçicek yukardaki çalışmayı ben ilerlettikçe.

2006-07-17 10:40:11

brazil

troy481@

teşekkürler tr3.com,teşekkürler chrome nickel brazil derslerini
atelyede uygulayıp paylaştığın için.bu inanılmaz özveri için
beynine ve klavyene sağlık diyorum.

2006-07-18 10:21:51

noise

troy481@

noise sorununu azaltmak için photons in esimate 1000 çıkardım
noislerde biraz azalma oldu,ama tamamiyle ortadan kaldırmak için,herhalde bounce değerlerini yükseltmek gerekiyor diye düşünüyorum ve sabırsızlıkla derslerin devamını bekliyorum.

2006-07-18 10:28:50

Cvp

troy481@

son aldığım render verdiğin ayarları aynen uyguladım


[img]http://www.tr3d.com/dosyalar/Ls0kx55mB.jpg[/img]

2006-07-21 18:56:25

Cvp

chrome_nickel

Troy, çift mesaj yerine mesajındaki "değiş" butonunu kullanarak resmi aynı mesaj içine eklersen eminim siteyi daha az yormuş oluruz.

render gayet güzel olmuş eline sağlık. şimdi senin çalışmanda ilk gözüme görünen şey, render sonucunun karelere bölünmüş gibi tonlaşması.

bunun sebebi de, brazil´in indirect illumination bölümünde bulunan sampling ayarları olsa gerek :)

bunu düzeltmek için illumination server bölümündeki global illumination bölümündeki shade rate seçenekleriyle oynamalıyız.

default olarak min : -3 ve max : 0 olarak gelen bu ayarlar gölge tonu oluşturulurken brazil´in kullanacağı örnekleme katsayısı. brazil, gölge oluşturmak için kullandığı yöntemden dolayı böyle bir ayar gerektiriyor. dolaylı olarak aydınlanan yüzeylerde oluşturacağı aydınlatma / gölgelendirme etkilerini daha yumuşak ve düzgün tonlanmış görmek için bu değerleri artırmalıyız. min, en az örnek gereken yerlerde kullanacağı minimum katsayı, max ise en çok örnek gereken yerlerde kullanacağı katsayı. genel olarak min:-1 max:0 yapmamız yeterli bir verim almamızı sağlayacaktır. ancak render süresine birazcık yük getirecektir.

2006-07-21 19:06:17

Cvp

troy481@

shade rate değerlerini aynen senin dediğin gibi yaptım,tabi render bu arada 0h 14m 45s oldu[img]http://www.tr3d.com/dosyalar/4MGw6721J.jpg[/img]

2006-07-21 20:57:49

Cvp

chrome_nickel

fotonlarla fotorealizm´in diğer yöntemlere göre yavaş olduğunu söylemiştim.

ama ayarları daha optimize etmemiz gerek. bu ayarlar bu sahne için optimize değil.

şimdi, max search radius ve photons in estimate değerlerini değiştirerek render´i tekrarlıyalım. mesela
photons in estimate:1000
max search radius 20

ve sonra

photons in estimate değeri 100
max search radius 100 olucak şekilde iki render daha alalım. ve sonuç / süre ilişkisine yorum yapalım


bu arada senin son render´ında hala noise sorunu olduğu gözleniyor. ama ben belirteyim. bu noise´un sebebi fotonlar değil artık. rectangleArea ışıkların ışıma çemberlerinin arasındaki mesafeden kaynaklanan örnekleme zayıflığı. area tipi ışık kaynakları çemberleri genişledikçe flu sonuçlar verebilmek için örneklemeleri büyütür. bu da büyüdükçe gölgelerin düzenli bir noise´a dönüşmesine sebep olur. bunu azaltmak için örnekleme ve flulaştırma seçenekleri vardır. bunlar. rectangleArea seçili iken modify panelder area light options bölümünde bulunur

çatı ve giriş ışığı için :
max samples : 1000
max error : 4

koridor ışıkları için :
max samples : 750
max error : 4

olsun. bu geri kalan son noise´dan bizi kurtarıcaktır.

2006-07-21 21:57:39