Optimalizace výpočtu pro Global illumination - Finalrender stage0 update 1.5 - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Poptávka práce
Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se narodil známý fotograf František Drtikol?

V dnešní soutěži hrajeme o:



3D grafika

Optimalizace výpočtu pro Global illumination - Finalrender stage0 update 1.5

3drender

9. ledna 2003, 00.00 | V dnešním tutoriálu se budeme zabývat renderovacím systémem Finalrender
stage0_1.5 a speciálně optimalizací renderingu metodou global
illumination (GI). Předpokládáme proto už nějaké zkušenosti s tímto
rendererem a dobrou znalost ovládání 3D Studia Max5 anebo 4.2, na kterém
budeme tento test provádět.

{Úvod}

Rendering jako samostatný vědní odbor v oblasti 3D grafiky s sebou už od svého počátku přinášel a stále přináší množství nových technologií a postupů. Tvůrci různých renderovacích systémů se snaží o to, aby bylo možné dosahovat co možno nejkvalitnějšíchvysoce realistických výsledků renderingu.

V dnešní době už existuje množství těchto renderovacích systémů a je jen na 3D grafikovi, pro použití kterého se rozhodne. Každý s těchto systémů je sám o sobě poměrně náročnou věcí a nedostatečné zvládnutípochopení této problematiky se určitě negativně odrazí na finálním výsledku, v některých případech vede i k absolutnímu neúspěchu.

Nejvíce rozhodující vlastnosti dobrého renderovacího systému jsou proto jeho možnosti, kvalita, rychlostmožnost optimalizace finálního výpočtu.

V dnešním tutoriálu se budeme zabývat renderovacím systémem Finalrender stage0_1.5 a speciálně optimalizací renderingu metodou global illumination (GI). Předpokládám proto už nějaké zkušenosti s tímto rendererem a dobrou znalost ovládání 3D Studia Max5 anebo 4.2, na kterém budeme tento test provádět. Nejprve si však zhruba popíšeme, co to vlastně global illumination je a jak to funguje.

Global illumination je metoda renderingu, při které se podle platných fyzikálních zákonů počítá dopad a odraz fotonů (částic světla) od povrchu objektů v scéně. Při tom tyto fotony potom můžou přebírat vlastnosti materiálů ve scéně a tím měnit její vzhled. Např. převzetí barevného odstínu povrchu anebo útlum. Scény počítané touto metodou proto dostávají realističtější vzhled týkající se osvětlení. Samozřejmě jsou i další metody, ale o nich si určitě napíšeme někdy jindy.

Pro náš optimalizační test si nejprve připravíme referenční scénu, kterou potom budeme optimalizovat. Projekt jsem pro markantnější rozdíly počítal na stroji AMD Duron 800 Mhz, 256 MB SDRAM. Naše scéna bude obsahovat podlahu, dvě stěny, objekt čajník, kameru a světlo typu spot finalrender softshadow. (Pro rychlejší postup je základní a finální-optimalizovaná scéna přiložená k návodu.)

Mělo by to vypadat přibližně jako na obrázku č.1.

Klikněte pro zvětšení
Obrázek č.1 - Klikněte pro zvětšení

Označíme všechny objekty na scéně, klikneme na pravé tlačítko a vybereme properties. V záložce mental ray zapneme generatereceive global illumination. Tímto se bude při renderingu počítat se všemi objekty na scéně a takto je bude global illumination ovlivňovat.

Teď si připravíme materiály pro jednotlivé objekty na scéně. Budeme používat dva různé materiály pro dva druhy objektů. Zvlášť pro stěny a podlahu a zvlášť pro čajník.

První slot materiálového editoru přepneme z materiálu typu Standard do finalRender a přejmenujeme ho na Stěna. Složky ambient a difuse nastavíme na 150, 150, 150. (Obrázek č.2)

Obrázek 2

Obrázek 2

Obrázek 3

Obrázek3

Dále pro tento materiál v záložce materiálového editoru Caustics and global-illumination zaškrtneme položky receivegenerate global illumination a jejich hodnoty nastavíme na 1.5. To znamená, že objekty s tímto materiálem budou přijímat a generovat globálně osvětlení. Hodnota 1.5 je násobitel intenzity. (obrázek č.3.) Tento materiál teď přiřadíme objektům podlaha a stěny. Funkcí drag and drop zkopírujeme tento materiál do slotu č. 2 a materiál přejmenujeme na čajník a jeho ambient a difuse hodnoty změníme na 134, 117, 168 (světle fialová barva). Tento materiál čajníku. Uff... skoro bych zapomněl... pro materiál na čajník ještě nastavíme hodnotu specular level na 40 a glossiness na 10. Materiál editor by teď měl vypadat jako na obrázku č. 2 anebo 3.

Teď se ještě vrátíme k nastavení světla. Jak jsem už psal výše, použijeme světlo typu final render spot. Světlo umístíme podle obrázku č.1 anebo použijeme přiložený projekt scena.max. Světlu nastavíme shadow on, aby objekty vrhaly stíny a jeho barvu necháme na hodnotě 255, 255, 255. V rozbalovacím menu zvolíme fRSoftSadows. (obrázek č.4)

Obrázek 4
Obrázek 4

Area type nastavíme na Rectangle width a height na 25, 25, accuracy hodnotu na 0.8 a ještě zapneme blur amount 2.0. Tímto zabezpečíme, aby objekty vrhaly měkké stíny. (obrázek č.5)

Obrázek 5
Obrázek 5

Teď už nastal čas, kdy potřebujeme nastavit globální vlastnosti renderingu a scénu vyrenderovat. V materiálovém editoru klikneme na tlačítko fR Globals... otevře se nám takto okno, kde můžeme (musíme) nastavit globální vlastnosti renderingu a zapnout samotný výpočet global illumination. (obrázek č.6)

Klikněte pro zvětšení


Obrázek 6 - Klikněte pro zvětšení

V první řadě zapneme výpočet global illumination. Dále přepneme engine na rendering image (jestli je nastavené jinak) a prepass size na 1/1. Toto určuje kvalitativní poměr výpočty 1/1 je nejkvalitnejší. Tak základ by byl, teď na to půjdeme trochu podrobněji. Vypneme reuse solution,  což zabezpečí, aby se nepoužívaly v předcházejícím výpočtu přepočítané vzorky pro GI.

RH – Rays: 500 (Počet vyslaných paprsků do scény.)
Balance:70 (Poměr mezi minimální a maximální hustotou vzorků na povrchu objektu. Přímo souvisí s nastavením hodnot Min. a Max. Density)
Curve Balance:– 50 (Do jaké míry bude final render považovat křivou plochu ještě za rovnou.)
Min. Density:- 10 (minimální hustota vzorků na povrchu objektů)
Max. Density:- 80 (maximální hustota vzorkovaného povrchu objektů)
Adaptive Quality: 20 – (kvalitativní poměr použití generovaných vzorků pro GI)

Další hodnoty nastavte podle obrázku. V našem případě to bude stačit a úplný popis finalRenderu není  účelem tohoto návodu. Jak jsem už říkal,  toto jsou globální nastavení renderingu tz., že všechny tyto hodnoty se budou používat pro všechny objekty na scéně bez ohledu na jejich vlastnosti. Mnozí už možná tuší, kam to bude směřovat, ale o tom později. Všechno je teda nastavené, takže zmáčkneme F9 a renderujeme (a čekáme...)

Klikněte pro zvětšení
Obrázek 7 - Klikněte pro zvětšení

Výsledek renderu (obrázek č.7). Čas výpočtu 6min. 24sec. a final render vygeneroval 4 395 GI vzorků anebo tzv. ambient photons. Výsledek renderingu je poměrně dobrý a můžeme si taktéž všimnout vlivu nepřímého osvětlení, kde podložka pod čajníkem částečně přebírá jeho barvu.

[-more-]{Optimalizace}

Pojďme tedy optimalizovat...Vrátíme se do materiálového editoru, ze kterého přejdeme stlačením tlačítka fR Globals... do nastavení globálních vlastností renderingu a v záložce Global-Illumination Parameters zapneme položku Show Samples (Obrázek č.8).

Naší scénu necháme znovu vyrenderovat.

Obrázek 8
Obrázek 8

Klikněte pro zvětšení
Obrázek 9 - Klikněte pro zvětšení

Výsledek bude vypadat jako na obrázku č. 9. Tímto nám final render dal možnost shlédnout působení jednotlivých fotonů (ambient photons). Každá jedna zelená tečka teda představuje jeden ambient foton a je jich tam přesně 4 395 (kdo nevěří, ať si je spočítá). Každý si mohl všimnout, že hustota fotonů je přímo závislá na tom, na jaké anebo lépe, na kterou část objektu dopadl.

Místa v rozích místnosti, pod čajníkem, jsou více zahuštěné než rovné plochy. To proto, že jsou to oblasti, které jsou pro GI nejdůležitější a na těchto místech scéna vlivem GI nejvíce mění vlastnosti osvětlení podle materiálu, na který foton dopadl. (skutečnost je trošku složitější, ale i takto se to dá říci). Optimalizace renderingu bude tedy spočívat v tom, že odebereme fotony z oblasti scény, kde nesou až také potřebné, teda rovné plochy na stěnách a taktéž trochu pozměníme jejich působení na čajník. Toho můžeme dosáhnout jen změnami lokálních parametrů daných objektů. V našem případě to jsou stěny a čajník.

Otevřme si teda znovu materiálový editor, vyberme materiál stěna a rozbalme v něm položku finalRender Locals... Zapneme tlačítka při hodnotách Balance, Curve balanceMax. Density, čím zabezpečíme, že pro tyto hodnoty se nebudou používat globální, ale lokální nastavení. Balance změníme na 60, Curve Bal. 40 a Max. Denstity 100. (Obrázek č.10).

Obrázek 10

Obrázek 10

Teď upravíme i lokální nastavení pro materiál čajníku. Zde změníme jen jednu hodnotu a to počet RH – Rays 200 (obrázek č.11) Při optimalizaci je nutné dbát na vlastnosti jednotlivých objektů a to na jejich velikost, plochu (rozlohu) a složitost. V našem případě je čajník určitě složitější objekt než stěna, ale stěny mají několikanásobnou rozlohu. Proto jsme čajníku ubrali počet RH Rays a stěnám jsme zase pro jejich plochost změnili nastavení Density a Balance.

Obrázek 11

Obrázek 11

Teď necháme obrázek znova vyrenderovat se zapnutou funkcí Show Sample, abysme mohli porovnat změny. Zmáčkneme F9 a čekáme... Výsledek je na obrázku č.12.

Obrázek 12
Obrázek 12 - Klikněte pro zvětšení

Největší změny si můžete všimnout na stěnách a podlaze, kde je průměrná hustota vzorků menší a vzdálenosti vzorků mimo rohy jsou větší. Možná se Vám to nezdá, ale hned poznáme rozdíl z výsledku finálního renderingu. Vypneme Show Samples a znovu necháme obrázek přepočítat. Teď už nebude final Render zobrazovat jednotlivé vzorky.

Klikněte pro zvětšení
Obrázek 13 - Klikněte pro zvětšení

Tak a je tu výsledek.... Na první pohled se na kvalitě obrázku nic radikálně nezměnilo, ale čas renderingu 4min. 02sec. a 3 406 použitých ambient photons svědčí o tom, že optimalizace zabrala a tímto jsme ušetřili skoro dvě a půl minuty času, což je určitě slušný výsledek. Možná už některé spekulanty napadlo, že na co je trápit se s optimalizací jednoho obrázku hodinu, abychom ušetřili 2 minuty... 8-), ale když renderujeme nějakou složitou animaci, která se bude renderovat možná i týden, tak tímto způsobem můžeme ušetřit možná i několik desítek hodin anebo i dní a to už není zanedbatelné.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: