Radiosity ve GI

Radiosity ve Radiosity İle global aydınlatma (GI) hakkında açıklamalar ve örnekler

Radiosity Ve Radiosity İle Global Aydınlatma

Başlangıçta radiosity ile bir uygulama yapmadan önce radiosity ile ilgili araçları ve kaplamaları anlatmak sanırım daha yaralı olacaktır.

Radiosity 3ds max’te gelen yeni bir global illumination (GI) yöntemini kullanan plug-in dir. Radiosity genellikle kapalı mekanlarda kullanılır. Fakat dışarıda bulunan güneş gibi ışıklarınla kapalı mekanı aydınlatırken daha gerçekçi görünmesini sağlayabilir. Radiosity realistik ve doğru fiziksel aydınlanma çözümleriyle 3dsmax’e tam olarak entegre olmayı başarmıştır.

Radiosity bir 3ds max5 plug-in’indir ve indirect (dolaylı) aydınlatma hesaplama teknolojisi olarak da tanımlanabilir.

Radiosityde anlaşılması gereken bazı detaylar vardır.

Örneğin renderdan farklı olarak bir hesaplamaya (calculation) ihtiyaç duyulur. Tabi kalite ve çözünürlük arttıkça hesaplama zamanı da artacaktır. Aynı zamanda bu hesaplama animasyonda bir frame içindir ve eğer “nesneler” veya “ışık kaynakları” hareketli iseler her karenin tekrar radiosity tarafından hesaplanması gerekir. Tabi kendi ayarlar da değiştirildi ise render etmeden önce tekrar hesaplanması gerekmektedir. Fakat sahnede sadece kamera hareket ediyorsa render menüsünde bulunan "Compute Advanced Lighting When Required" seçeneğinin işaretli olması gerekmektedir.

Photometric ışıklarla çok uyumlu çalışmasına rağmen standart 3ds max ışıkları da kullanılabilir. (light tracer standart ışıklarla kullanılmaz)

Tüm birimler fiziksel özellik taşır ve örneğin ışık birimleri candela´ya uzunluk birimleride gerçek dünyadaki fiziksel büyüklüklere göre hesaplanır. Yani rasgele büyüklükteki iç mekanlar aydınlatılırken parametreleri önceden kestirilemeyebilir.

İlerde yeri geldikçe radiosity hakkında bilinmesi gereken diğer detaylara da elimden geldiğince değinmeye çalışacağım. 

Radiosity’ de işlem akışı:

-Radiosity objelerin bir kopyasını çıkartarak hesap motoruna yükler.

-Nesnelerin alt-bölümlemelerini Global Subdivision Settings’deki Radiosity Meshing Parameters kısmında hesaplayarak böler.

-Ortalama sahne yansımasına ve poligon sayısına göre 3ds max ışınlar yayar. Tabi daha güçlü ışık daha fazla ışın yayar.

-Bu ışınlar etrafa rasgele saçılırlar ve çarptıkları yüzeylerde bir enerji depolar.

-Viewport’u bu sonuca göre tekrar yeniler.

Radiosity parametreleri

Bu bölümde parametrelerin tanımları ve öğrendiğim kadarıyla ipuçları ve önemli noktaları karşılaştırarak pratik olarak vermeye çalışacağım. Fakat örneklere girmeyeceğim zaten user reference´de yeteri kadar örnek var.

     
 

[Radiosity Processing Parameters] paneli radiositiy işlemini gerçekleştiren bölümdür.

[Reset] ile [Reset All] farkı [Reset] Radiosity motorundaki ışıkları, [Reset All] ise motordaki tüm geometri ve ışıkları resetler.

     

[Process] paneli:

[Initial Quality] enerji dağılımının doğruluğunu ifade eder, kasıt görsel açıdan kalite değildir. Tavsiyem 80-95 arasında test(80) veya son(95) hesaplamanızı yapın.

[Refine iterations] faceler arasındaki aşırı farkları (aydınlanma bakımından) birbirlerine yaklaştırır. Regather işlemini kullandığımızda (ilerde anlatacağım) kalite yeterli olduğundan ve aynı zamanda doğruluğu azalttığından pek kullanılmaz.

[Interactive Tools] paneli interaktif olarak değiştirebileceğimiz ışık ve filtre ayarlarını kapsar. Değerlerini değiştirmemiz radiosity için tekrar bir hesap gerektirmez.

[Filtering] yüzeylerde bulunan noise gibi ışık bozukluklarını filtre ederek pürüzsüzlük sağlar. Genellikle 3-4 değerinden sonrası detayları bozabilir.

[Exposure Control] sahnenin genel aydınlık seviyesini ayarlamanızı sağlar.

     
 

[Radiosity Meshing Parameters] sahnedeki tüm geometrik nesnelerin facelerini böler. Bu işlem radiosity motorunda kopyalanmış sahne üzerinde gerçekleşir ve resellendiğinde subdivisionlar (alt bölümler) silinir. Bu işlem bir nevi sahnenin çözünürlüğünü arttırmak gibidir ve iyi bir sonuç için mutlaka kullanılmalıdır. (sahnedeki cisimlerin segment ve yüzleri yeterli ise gerek kalmayabilir) çok fazla ram kullanılmasına neden olur. Bu yüzden sahnenin büyüklüğüne bağlı olarak çok küçük değerlerde kullanılması sakıncalı olabilir. (sahnenin büyüklüğüne göre değerler arasında çok büyük farklar oluşmaktadır)

 
 

[Light Painting] manuel olarak gölge ve aydınlanma ayarlamayı (boyamayı) sağlayan bir paneldir. Yoğunluk ve baskı gibi parametrelere sahiptir. (Ben pratik bir yöntem olarak bulmadım)

 

[Re-use Direct Illumination from Radiosity Solution] bu seçenekte ışıklar ve gölgeleri tekrar scanline´da render edilmez. Bunun yerine ışıkların nesnelere etkileri; onların yüzey biçim ve sayısına göre hesaplanır. Yani face sayısı çok fazla değilse, keskin gölge ve ışık kenarları göremezsiniz. Fakat çok hızlı bir render sağlar (renderda ışıklar ve gölgeleri hesaplanmıyor). [Global Subdivision Settings] çok küçük değilse doğru ve kaliteli bir sonuç almak çok zordur.

[Render Direct Illumination] scanline render biraz vakit alır ama gölgeleri render sırasında hesaplar. Sonuç biraz daha iyidir.

[Regather Indirect Illumination] scanline renderda ışıklar ve gölgeleri pixel pixel hesaplanır. Keskin gölgeler ve çok doğru bir sonuç almak mümkündür. Tabi render süresi biraz daha uzayacaktır. (bence sonuç için buna değer)

Regather, bounce ve sampling son zamanlarda indirect aydınlatmada çok kullanılan terimlerdir. Bu terimlerden kasıt birim bölgeye (pixel) düşen ışın sayısı ve bunların etrafa yayılarak sahip oldukları enerjileri (photon) face üzerinde bırakarak zayıflamaları ve bu yayılımın dağılma, kalite ve örneklenme parametrelerinin ayarlanabilmesidir.

[Rays per Sample] örneklenen ışık başına ışın sayısını belirtir. Değer küçüldükçe tanecikli (grain) gibi bozulmalar olur. Sahnenin büyüklüğüne göre (150-200) arası değerler yeterli sonucu verebilir.

[Filter radius] ışık ışınlarının yüzeyde aydınlattığı pixel cinsinden çapı verir. Değer büyüdükçe grain´li yapı büyür ve silikleşir. Pürüzsüz bir yüzey oluşur ama tabi doğruluk azalır. Optimum bir değer aralığı veremiyorum çünkü image´ın büyüklüğüyle doğru arantılı olarak değiştirmek gerekir.

[Adaptive Sampling] bu bölümdeki seçenekler render zamanını azaltmak için kullanılır. Doğru ve kaliteli render için kapatılmalıdır. Değerler sahneden sahneye değişiklik gösterir (fiziksel büyüklük).

Bu bölümdeki değerler sahneyi ızgaralayarak (pixel cinsinden) kaliteyi azaltıp render zamanını arttırmaya yönelik olduğu için anlatmaya gereksinim duymuyorum. Birde sahneden sahneye değerler farklılık gösterdiğinden çeşitli varyasyonların sahne üzerindeki en iyi sonuçları denenebilir.

Bu parametrelerin uygulamaları Radiosity Ve Radiosity İle Global Aydınlatma - Bölüm 2´ de bir sahne içerisinde bulunmaktadır.

 Değerler arasındaki sonuç farklılıkları 3dsmax helplerinde yeteri kadar anlatıldığından anlatmayacağım)

Radiosity Ve Radiosity İle Global Aydınlatma (orta düzey)

(Bu uygulama orta ve ileri seviye kullanıcılara yönelik olarak hazırlanmıştır.)
Bu tutorial´da radiosity programıyla bir odanın nasıl aydınlatılacağını ele alacağız.
Radiosity ve radiosity parametreleri hakkında detaylı bilgiye bölüm-1 de yer vermiştim. O yüzden burada sadece aşamalarla farkları görerek ve test ederek sahnemizi tamamlayacağız.
Odamızı IES Sun photometric tek bir ışıkla aydınlatacağız. IES Sun gerçek gün ışığına yakın bir sonuç verdiği için dışarıdan kapalı bir odayı tek başına aydınlatabilmektedir.

Öncelikle içinde hazır modellenmiş odamız bulunan radiosity2.max dosyasını açmakla tutoriala başlıyoruz.

Işık kaynağını ayarlayalım:


Şekil 1.1
IES Sun ışığımızın parametreleri ayarlayalım. Sahnemizdeki IES Sun´ı seçin. Şekil1.1 de gösterildiği gibi Shadows´u [on] yapın. Bu güneşimizin bir gölgesinin olmasını sağlayacaktır ve [color sellector]´e tıklayarak R=255, G=250, B=250 olarak değiştiriyoruz. Bu da daha canlı bir gün ışığı için gereklidir.



Şekil 1.2

Şimdide daha kaliteli ve keskin bir gölge yaratalım. Değerleri sırasıyla Şekil1.2 deki gibi [Density]=0.9, [Bias]=0.1, [Size]=1024, [Sample Range]=8 olarak değiştirelim. Evet şimdi ışık kaynağımız tamam.


Test-1:
Şimdi render ettiğimizde sahnemiz Şekil1.4 teki gibi görünecektir. (lineer exposure control yapılarak render edildi)

Odanın çok karanlık olmasının nedeni; duvarların ışık kaynağından aldığı enerjiyi odanın içine yayamaması ve bu enerjinin yüzeylerde depolanamamasıdır.


Radiosity´nin uygulanması:


Şekil 1.5

Rendering -> Advanced Lighting -> Radiosity seçerek Şekil1.5 de gösterildiği gibi [Initial Quality]´yi %90 yapıyoruz. Bu parametre görsel açıdan kalite değil, enerji dağılımının doğruluğunu ifade eder. Daha sonra [Refine Iterations (All Objects)]´i 1 yapalım. Biraz doğruluk azalsa da köşelerde oluşabilecek pürüz ve karaltıları azaltacaktır.[Filtering] = 2 veya 3 olarak giriyoruz. Daha sonrada interaktif olarak hesaplamaya gerek duymadan bu değeri girebiliriz. Filtreleme sahnemizin daha pürüzsüz görünmesini sağlar.

Şimdi [Start] butonuna basarak hesaplattıralım.

Test-2:
Evet bir test render daha alalım. Şekil1.6´te de görüldüğü gibi çok parlak oldu. (bunu viewport´ta da görmek mümkün.


Şekil 1.6

Genel aydınlatmanın ayarlanması:


Şekil 1.7

Bu parlaklığı düzeltmek için [Exposure Control Sellected] - [Setup]´a tıklıyoruz. Açılan Environment menüsünden exposure control´ü [Lineer Exposure Control] olarak değiştiriyoruz. (daha doğru bir hesaplama yapabiliyor) Ama istediğimiz sonucu vermesi için biraz parametreleri ile oynamamız gerekecek. Şekil1.7 da görüldüğü gibi [Brightness] = 55, [Contrast] = 65, [Exposure Value] = 0,65 olarak giriyoruz.

Test-3:
Tekrar render ettiğimizde sahne Şekil1.8 de gördüğünüz gibi olacaktır. (exposure control interaktif olduğundan tekrar hesaplattırmaya gerek yoktur) Odanın içi aydınlanmış olmasına rağmen oda duvarlarında aşırı aydınlık farkları vardır. Bunun kaynağı sahnedeki nesnelerin altbölümlere (subdivision) ayrılmamış olmasıdır. Şimdi face´lerini küçük parçacıklara böleceğiz.


Şekil 1.8

Subdivision ayarları:


Şekil 1.9

[Global Subdivision Settings]´i Enabled yaptıktan sonra [Meshing size]´yi 3 yapıyoruz. Bu 1. bölümdede ayrıntılarıyla anlattığım gibi nesneyi kendi motorunda küçük face´lere bölerek daha iyi hesaplanmasını sağlar.

Sahnenin ve nesnelerin büyüklüğüyle doğru orantılı olarak büyür. Bizim odamız için 3 değeri yeterli sonucu vermektedir.

Şimdi [Reset All] butonuna tıklayarak tüm sahneyi resetleyelim. Daha sonra tekrar hesaplattıralım. Bu işlem bilgisayar işlemcisi ve RAM boyutuna bağlı olarak biraz zaman alabilir.

Test-4:
İşlem bittikten sonra yeni bir render yapalım. Sahne aşağıdaki gibi görünecektir.

Şekil 1.10

Gölge ve ışıklar çok yumuşak ve hatalı, duvarlar pürüzlü bir görünümdedir. Bunun sebebi render sırasında gölge ve ışıkların tekrar hesaplanarak render edilmemiş olmasından kaynaklanmaktadır.

Regather işlemi ve ışık ile gölgelerin scanline renderda hesaplatılması:


Şekil 1.11

Yandaki şekil1.11 de görüldüğü gibi [Render Direct Illumination] ve [Regather Indirect Illumination] seçeneklerini işaretliyoruz. Daha sonra sahnemizin noise biçiminde kirli görünmemesi için [Rays per Sample] değerini 128 yapıyoruz. Ardından bu örneklediğimiz ışınların yüzeyde oluşturacakları çapı arttırmak için [Filter Radius (pixels)] = 3 olarak giriyoruz. (adaptive sampling kaliteyi azaltarak render süresini kısaltmak içindir. Bkz. Bölüm-1)

Son render:
Tekrar resetleyip hesaplamaya gerek yoktur. Şimdi sahnemizin son halini render yapalım. Sahne aşağıdaki gibi görünecektir. Bu işlem uzun zaman alabilir. [6 dk]


Şekil 1.12


HAZIRLAYAN

Hüseyin ÖZTÜRK ~ (huseyinoz)

http://www.huseyinoz.com.tr.tc/

Ekleyen: kalimba

öncelikle emeğinize sağlık ki
bykalenderGüven BarışAvatar

öncelikle emeğinize sağlık ki böyle güzel bi ders hazırlamışsınız.
size bi sorum olcak ;
Bu GL uygulamasını ayrı olarak mı 3d max e kuruyoruz ?




2011-08-15 14:42:07
  • Offline
  • Erkek

Kapalı

Topic closed automatically because it`s been more than a year!