...:::Tom.TNT:::... |
|
... :) ... |
Úvodem:
Před nedávnem jsem se opět po roční pauze podíval do Blendru. Dovedlo mě k tomu pár situací. Jednak můj počítač s nainstalovaným 3ds MAX odešel do věcných lovišť, a navíc jsem stejně pět dní pobýval úplně jinde, než byl můj počítač. Abych to upřesnil, můj rozbitý počítač se na konci školního roku odvezl z koleje a já ještě pár dní zůstal na koleji u kamaráda, se kterým jsme se chystali na konferenci o 3d Studiu MAX – MAXKON. Do začátku Maxkonu zbývaly ještě 4 dny, asi si to umíte představit. Jste na koleji, ze které se už dávno všichni rozjely do svých domovu a já tam tuhnul na Maxkon společně s kamarádem a jeho spolubydlícím. Naštěstí jeho spolubydlící byl tak ochotný, že mě každý den bez problému nechal dlouho posedávat před jeho počítačem. A tak jsem si právě nainstaloval Blender, protože licenci maxka jsem u sebe nemel. Musím říct, že po roce se ledascos změnilo, ale dost mě překvapilo, ze třeba selekce hran, ploch a bodů se objevila až v této poslední verzi.
Nicméně příběh, kterým jsem se opět dostal k Blendru už znáte. Na Blendru mě zajímal především render, a hlavně co se týče výpočtu světel. Samozřejmě mluvím především o modulu Yafray. Škoda, že se verze Yafray od mé poslední instalace nepohnula z verze 0.0.7, zato se ale mírně poopravilo rozhraní mezi Yafray v Blendru. Představoval bych si jej samozřejmě daleko lépe, ale chápu že vývoj v těch pár lidech je opravdu těžký.
Za těch pár dní jsem celkem důvěrně poznal Yafray, a proto bych o něm chtěl napsat pár řádků. Text berte spíše jako můj náhled na techniky Yafray a ne jako důkladný popis onoho pluginu. Text by měl pomoci všem, kdo začínají s Blendrem a chtějí rendrovat pomoci Yafray. Je určen tedy pro úplné začátečníky, kteří třeba ani netuší, co se skrývá pod zkratkou GI.
Ukázky práce v Blendru s Yafray |
||
Yafray - Photony + Cache | Yafray - Photony + Cache | Blender - Ambient Occlusion + Area Shadow |
Úvod do Yafray.
Yafray je rendrovací raytrace engin do Blendru. Vlastní render Blendru není plně raytrace a proto řešení mnohých situaci není příliš jednoduché nebo dokonce možné. V dnešní době je instalace Yafray do Blendru velmi jednoduchá. Stačí akorát nainstalovat Blender běžným způsobem a stejně tak i Yafray. Propojení v Blendru s Yafray se řeší pouze výběrem rendrovacího algoritmu v render dialogu.
Yafray slouží především pro kvalitnější render snímků nebo animací. Jeho největší zbraní oproti klasickému Blendru je možnost počítat nepřímé osvětlení – Global illumination – GI. Global illumination dodává scénám daleko větší realističnost a věrohodnost. Vedle nepřímého osvětlení disponuje i výpočtem přesných reflexí, refrakcí a v neposlední řadě i Caustics (sdružené paprsky vlivem lomu světla tzv.prasátka)
Nepřímé osvětlení - Global Illumination – GI
Nepřímé osvětlení je jev, který v běžném prostředí vzniká odrazem slunečního paprsku od plochy, na kterou dopadl. V běžném světě se světelný paprsek reprezentovaný photonem odráží téměř do nekonečna, má tedy nespočet odrazů. Při každém odrazu se změní jeho dráha v závislosti na mikrostruktuře povrchu. Těchto interakcí se děje velmi mnoho během krátkého časového úseku, který by šel počítat na miliontiny sekundy. Takto v interiéru budovy neustále „lítají“ milióny paprsků do všech různých směrů a vytváří tak nepřímé osvětlení.
S nepřímým osvětlením | Bez nepřímého osvětlení. |
Na těchto obrázcích jde jasně vidět, co způsobí nepřímá složka světla, která se odrazí v interiéru budovy. Zároveň je naznačen určitý způsob šíření paprsků.
Yafray dokáže počítat nepřímé osvětlení několika technikami. Každá se liší jednak nastavením, kvalitou výsledného osvětlení a samozřejmě i dobou výpočtu. Jsou používány v zásadě tři možné výpočty:
-Cache
-Photon map
-Path tracing
V praxi se pro výsledné zobrazení používá buď výpočet jen jednou metodou nebo kombinace dvou různých metod. Kombinace zpravidla umožňují kvalitní výpočet GI za kratší dobu než výpočet jen jednou metodou.
Možné výpočty osvětlení v Yafray i s kombinacemi:
-Cache
-Photon map
-Path tracing.
-Cache + Photon map
-Path tracing + Photon map
Path Tracing-PT
Path tracing (PT)2 je metoda ,která vychází z metod Monte Carlo (MC) Od pozorovatele se vyšle svazek primárních paprsku do jednoho bodu stínítka. Při dopadu na jakoukoliv plochu se každý primární paprsek odrazí pod různým úhlem do scény a vytvoří takzvaný sekundární paprsek-odražený paprsek.Metoda Monte Carlo se liší tím, že vyšle jeden primární paprsek do jednoho bodu stínítka ten se až při nárazu rozvětví na více sekundárních paprsku. Pokud nastavíte počet odrazů na 1, tak z vašeho pohledu se vyšlou paprsky, a po nárazu se odrazí a dopadnou na nějaký povrch. Tím jejich cesta končí. Pokud povrch, se kterým se setkaly při své cestě nebyl osvětlen světlem, třeba typu LAMP, tak energetická hodnota bude 0. Další věcí je, že paprsek při svém odrazu vylétne z okna interiéru a načerpá energii environmentu. Pak energie v pixelu ,pro který se počítá osvětlení, bude součet energie environmentu a zbylých energií ze svazku paprsků. Je třeba si uvědomit, že pro nasvícení interiéru pouze okenním otvorem je zapotřebí takového počtu odrazů, aby veškerá většina všech paprsků vylétla z okna a načerpala barvu environmentu. Je nutné také uvést, že při každém odrazu paprsku se snižuje energie přijímaná během cesty. To znamená, že pokud paprsek v rohu potřeboval 6 odrazů aby vylétl ven z místnosti, tak energie kterou přinese pro zjišťovaný bod renderingu bude teoreticky 6x snížena. Naproti tomu pro pixel pod oknem se odrazil paprsek jen 2x a proto jeho hodnota bude snížena jen 2x. V rozích místnosti je pravděpodobnost, že paprsek vylétne z okna třeba po druhém nárazu menší, než na volné ploše pod oknem. Proto pod oknem je více světla, než v rohu místnosti. Vše je pouze o pravděpodobnosti, kterou zvýšíte počtem generovaných paprsků. Snižovaní energie paprsků, počtem odrazů je jen pouhý hrubý nákres do jinak velmi obsáhlé problematiky.
V Yafray je možné nastavit jednak počet paprsků které se vyšlou a jednak i počet odrazů, čímž původní znění jen jednoho odrazu u Path tracing metody je porušeno. V podstatě se zřejmě jedná o jakýsi hybrid mezi MC a PT metodou.
Hrubý nákres situace u Path Tracing metody |
Červená šipka reprezentuje primární svazek paprsků vržený od pohledu, který se po nárazu rozdělí na různoběžné paprsky. Na obrázku je počet odrazů 2.
Praktický přínos těchto řádků pro Vás je ten, že se v podstatě provádí úplně samostatné výpočty pro každý pixel v rendrovacím poli. Podle nastavení počtu paprsků vyslaných od kamery se přímo odvíjí kvalita osvětlení. Čím více vyšlete paprsků, tím více přijde výsledků a tím více bude výsledný průměr z těchto paprsků přesnější. Fígl je v tom, že paprsky se odráží pokaždé do různých směru, ale převážně by se měly odrážet dle BRDF charakteristiky.
BRDF Charakteristiky | ||
"RayTrace" - zrcadlo | Blurry reflexe - plast | Diffuse - omítka |
BRDF(Bidirectional Reflectance Distribution Function) - funkce vyjadřující poměrné množství světla, které se od daného bodu povrchu odrazí při známém úhlu pozorování a zdrojích světla. Tato funkce je poměrně složitá, přesto existují metody, kterými se dá změřit a získat u reálných materiálů. Nejjednodušší varianty BRDF jsou zjednodušené modely, např Phong, Blinn....)
Řízení jen dle BRDF není pro řešení úloh ideální a proto se v různé míře zohledňují pozice zdrojů světel a jiných kontrastních bodů, do kterých pak případně směřuje vetší nebo menší počet paprsků. V podstatě jde o to, že když mám místnost tvaru krychle, která má tedy 6 stěn a každá má jinou barvu, tak ideálně by se po nárazu primárního paprsku měl každý paprsek odrazit na jednu plochu, aby pozdější průměr byl ideální. Čím více paprsků, tím větší pravděpodobnost že bude osvětlení správné. Pokud do jinak běžné, nekontrastní scény vložíte objekt, jehož povrch bude mít nesmírnou světelnou intenzitu , ale zárověň bude velikosti krabičky od sirek, stane se, že jen málokterý paprsek dopadne na tak malý povrch, a tím vznikne ve scéně poměrně velký šum. Jinými slovy, je malá pravděpodobnost že roztříštěné paprsky dopadnou ve větší míře na tak malý objekt ve scéně. Pro výpočet na jednom pixelu výsledného rendru se může stát, že třeba žádný paprsek nedopadne na povrch onoho objektu a tak pro tento pixel nebude započítána jeho energie. Kdežto pro pixel hned vedle se už může stát, že nějaký paprsek na tento povrch dopadne a pak třeba tento pixel bude daleko světlejší, než prvně zmiňovaný. Tím vznikne šum. Čím ale více bude ve scéně paprsků (samplů), tím menší bude šum, protože vzroste pravděpodobnost nárazů i na tak malý objekt. V podstatě metody MC a PT je založena právě na pravděpodobnostním řešení.
Interiérová scéna | |
1 odraz, 2 paprsky | 1 odraz, 8 paprsků (menší zrno) |
6 odrazů(vetší prosvětlení, větší zrno), 2 paprsky | 6 odrazů, 8 paprsků(menší zrno) |
Exteriérová scéna | |
2 odrazy, 4 paprsky | 6 odrazů, 8 paprsků |
Příklad velmi malé pravděpodobnosti u malého zářícího objektu nad podložkou. | |
2 odrazy, 4 paprksy | 2 odrazy, 40 paprsků (přes velké množství paprsků je u tak malého zářícího tělesa stejně šum, napovídá to o nepříliš dobrém řešení zohlednění BRDF charakteristik a světelných zdrojů. |
Vlastní nastavení čisté PT metody pod Blendrem je velmi jednoduché. V podstatě stačí pouze přepnout na Yafray engin... |
a v záložce Yafray GI vybrat volbu Full a potvrdit nějakou quality, třeba Low. |
Tím, že vybereme metodu Full, máte možnost pracovat se všemi dostupnými metodami v Blendru. Tzn. máte možnost pracovat jak s Cache, Photon map, Path tracing a jejich různými kombinacemi. Tím, že nezaškrtneme Cache ani Photon, zbývá pracovat už jen se skrytou PT metodou. Takže teď bude Yafray počítat scénu čistě jen s PT metodou.
Depth - udává počet odrazů paprsků
CDepth – počet odrazů u Caustic efektu (ten jsem netestoval, pouze podrobně popsal teorii jeho řešení, viz níže)
Quality – Low, High…atd. – udává počet paprsků které se vyšlou. Bohužel toto řešení je velmi špatné, protože nedovoluje přímé nastavení počtu paprsků. Jakási volba je údajně možná přes AO nastavení(Ambient Occlusion), ale to v zásadě nereagovalo a stejně nedovolilo nastavit větší počet samplů jak 16. Nastavením quality se řídí kvalita rendru. Čím menší bude, tím větší bude šum. Narazil jsem na scény, kde jedině nastavení Quality na BEST zrušilo šmouhy. I tak bych ale uvítal volné nastavení.
Využití čisté PT metody:
PT metoda je poměrně HW náročná, zato však nabízí velmi kvalitní výpočet osvětlení. Pro interiéry není příliš vhodná, protože by bylo nutno nastavit velké počty odrazů a paprsků pro odstranění zvýšení prosvětlení a odstranění nežádoucího šumu.V interiérech je ale možné tuto metodu nasadit společně s photonovou mapou, kde pak dává velmi přesné a detailní stíny za krátké časy. Naopak v čistých exteriérových scénách, například pro prezentaci modelů je velmi vhodná a rychlá. Pro tyto scény si vystačíte i se dvěmi odrazy a často i menším počtem paprsků. Její využití bych hledal především u velmi detailních modelů, kde by jiné metody nebyly schopny zachytit i ty nejmenší stínové detaily.
Typická scéna pro Path Tracing. Je bohatá na detail, ale přitom je v otevřeném exteriéru kde není zapotřebí vysokého počtu odrazů. |
|
Path Tracing v akci. Takže, nastartujete si Blender a vytvořte jednoduchou scénu, třeba podklad a na něm kvádry, tak jak to mám já na obrázku.V mé scéně jsem odstranil veškerá světla, takže i to co se pokaždé vkládá do nové scény. Osvětlovat budeme pouze environmentem, ten je teď nastaven na tmavě modrou. Prve ale vyzkoušíme udělat náš první render. Přepněte tedy do render dialogu a vyberte Yafray, zároveň zmenšete rozlišeni na 400x300 pix.Najeďte do záložky Yafray GI a potvrďte volbu Full a kvalitu Low.Zmáčkněte F12 pro render snímku. Snímek bude po vypočtení velmi tmavý, to je právě tmavou barvou environmentu, který je pro tuto scénu jediným zdrojem světla. Nastavte tedy barvu environmentu na bílou. |
Další věcí, kterou změníme bude průběh zobrazování výpočtu. Možná jste si všimly, že prve proběhl celý výpočet a pak až zobrazení celého obrázku. Mnohdy je ale vhodné vidět průběh výpočtu. Yafray podporuje tzv. Bucket rendering. Bucket je vlastně malé políčko, kterými je rozdělen render celého obrázku. Obrázek se pak tedy nepočítá celý najednou, ale počítá se vždy jen menší část v bucketu a ty se pak skládají vedle sebe. Render po bucketu umožní především snížit paměťovou náročnost. Nemusí se tedy načítat celá scéna, ale vždy jen určitá oblast v bucketu. Navíc dovoluje průběžný náhled na scénu při jejím výpočtu. Bucket se vzorkuje v Yafray náhodně. Moderní rendry zpravidla obsahují možnost nastavení postupu buketu a jeho velikost. Většinou se používají pole o velikosti násobku 16: (16x16, 32x32, 64x64, 128x128) Nejpoužívanější je pole 64x64. Pro zapnutí bucket modu se musí odškrtnout export scény do XML souboru. Pak se vždy bude zobrazovat průběžný výpočet. Teď když spustíte výpočet, vidíte jak postupně políčka buketu vyplňují finální obraz.
|
|
Jde vidět, že obraz není úplně čistý - je poměrně zašuměn. Zvolte tedy větší kvalitu, čímž přidáte větší počet paprsků. |
Já zvolil kvalitu na Best. Jde vidět, že výpočet trval jednak déle z důvodu většího počtu paprsků s čímž je spojeno větší množství výpočtů. Zato však vzrostla pravděpodobnost správného výsledku a render se tak stal poměrně čistým. Pokud by jste stejné nastavení vyzkoušeli na složitější scéně, vytvořil by se větší šum. |
Cache
Cache je metoda, která vychází z MC metody. Jinak náročnou úlohu řešení osvětlení každého pixelu výsledného obrazu převádí na řešení osvětlení pouze několika málo bodů ve scéně. V praxi se tedy prve stanoví body, pro které se spočítá osvětlení obdobně jako v MC metodě a poté se pro zbývající body, kde nebyl proveden výpočet udělá interpolace mezi nejbližšími body. Tímto lze výpočet výrazně zjednodušit, odstranit šum a navíc výsledek lze ukládat a později znovu načítat pro rychlejší výpočet. Nevýhodou může být snížená přesnost stínu v detailech z důvodu interpolace mezi vybranými body.
Využití čisté Cache metody:
Cache metoda je universální metoda. Poskytuje dobré časy a výsledky jak v interiérech tak exteriérech. Přesto pro exteriéry je lepší PT metoda, a to z důvodu detailních stínu, které u Cache mohou být často rozmazány interpolací. Pro interiérové scény je vhodná zejména v kombinaci s Photonovou mapou.
Cache v akci: Spuštění samotné metody Cache, se provede zamáčknutím tlačítka Cache v roletce Yafray GI. Tímto plně aktivujeme Cache render. Pokud provedete výpočet, vidíte, že se prve obraz překreslí bílými tečkami a až poté se celý vykresluje. Bílé tečky reprezentují body, pro které se korektně spočítalo osvětlení(samply). Černý prostor je plocha, do které se přesným matematickým algoritmem rozmázne osvětlení z okolních bodů. Samotná interpolace je velmi důležitý proces. Pokud je špatně vyřešena, může znehodnotit jinak dobře vypočítané hodnoty jednotlivých bodů. Blender interpolaci řeší jediným algoritmem, který navíc nedovoluje nastavení. Tady si dovolím drobnou odbočku. Například ve VRay, což je obdobně jako Yafray raytrace rendrovací engin ale pro 3D Studio MAX, je možnost výběru ze tří algoritmů na interpolaci a navíc poměrně podrobné nastavení jejich parametrů. Mnohdy se mi stalo, že výpočet finálního obrazu až přespříliš zatěžovala právě jen interpolace a tak vhodným nastavením jsem mohl celý výpočet urychlit.V Blendru bohužel tato možnost není. Tím že se osvětlení počítá jen pro určité body, se vytrácí detail ve stínu. Samotné defaultní nastavení Blendru u Cache metody je na tuto scénu poměrně vysoké, a proto se neprojevují téměř žádné chyby. Problematika je taková, že je nutné zajistit vysoký detail v rozích objektu, tomu by měl odpovídat větší počet vzorků a naopak, ve volné ploše kde je stín téměř jednolitý může být daleko méně vzorků. Tímto nastavením se jednak udrží kvalita a jednak se sníží rendertime. Abychom lépe pochopili rendering, tak budeme tedy snižovat parametry kvality a tím i snižovat rendertime. Quality - počet paprsků vzniklých po odrazu. Parametr ovlivňuje vznik šmouh na rovných plochách. ShadQu - Shadow Quality - ovlivňuje poměr samplů mezi rohy (obecně místy kde je velký gradient stínu na malé vzdálenosti, ploše) a volnou plochou. Malé číslo řekne, že v rohu bude stejně velké množství samplů jako ve volné ploše. Velké číslo naopak říká, že v rohu bude daleko více samplů než na volné ploše. Prec - udává celkový počet vzorků ve scéně. 4ím větší je číslo, tím méně bude ve scéně vzorků. Čím menší bude číslo, tím jich bude více. Ref - Refine - číslo udávající kolik bodů se znovu přepočte a tím zpřesní výpočet. Čím větší je číslo, tím menší pravděpodobnost přepočtu nových vzorků. Čím menší číslo, tím jsou možné několikanásobné přepočty. Význam přepočtu jsem u Blendru zatím moc nevyužil. Ve Vray je to jedna z nejdůležitějších věcí. Tím, že je Blender v defaultních hodnotách přenastaven, nemusíte tuto hodnotu ve většině jednoduchých scén měnit. Přepočet se bude provádět vždy jen u rizikových míst, kde je třeba doplnit a zpřesnit vzorkování. Mezi takováto místa patří zejména rohy a nároží. |
||
ShadQu - Shadow Quality |
||
první render | nízká hodnota ShadQu jasně ukazuje vyrovnaný poměr samplů v rohu tak i v ploše. | Vyšší číslo ShadQu zvýšilo výrazně poměr samplů v rozích kde jsou třeba, přičemž počet na volné ploše zůstal zachován. |
Prec - precalcultion |
||
|
|
|
Chyby na volné ploše jsou způsobeny malým počtem vzorků v těchto oblastech. Z tak malého počtu se nemohla dobře interpolovat hodnota pro celou plochu a tak vznikly různé vady. Stín v rozích je dobrý, protože v nich je hodně vzorků. Rendertime je navýšen vlivem větších vzdáleností mezi body a tím obtížnější interpolací. | Chyby v ploše jsou už menší vlivem většího počtu vzorků. Rendertime je snížen nižší vzdáleností bodů a tím snadnější interpolací. | Téměř žádné chyby. Vzorkování je až přespříliš velké. Rendertime je navýšen přespříliš velkým počtem bodů. |
Ref - Refine |
||
Při náročné scéně mohou scházet vzorky jak na plochách tak v rozích. pak dochází k tomu, že v detailních stínech se projevují chyby. Náročnost scény byla v tomto případě uměle simulována snížením počtu vzorků a také jejich poměrů. Jde zřetelně vidět chyba, především v rizikových oblastech jakou jsou nároží. | Přes malý počet vzorků a nízkou hustotu v rozích, je možné pomocí parametru Refine dostat detailní stíny v rozích. | Velmi nízká hodnota Refine způsobila několikanásobný přepočet vzorků a tím zpřesnění v oblasti rohů. Render je už téměř čistý, ale projevuje se na něm obecný nedostatek samplů, čímž působí mírně rozblurovaně. |
Ideální nastaven všech parametrů pro tuto scénu by mohlo být následovně. |
||
|
Photon
Výpočet photonové mapy je úplně odlišný o výpočtu PT nebo MC metod. Photonová mapa v podstatě obrací problém masivního počtu primárních paprsků metody MC-PT a soustředí se na jednoduchou práci se sekundárními paprsky, které nikterak nevětví. Metoda funguje následovně: Vždy od zdrojů světla(všechny druhy světel, ne obloha!) se vyšlou fotonové paprsky s danou energií. Při styku s objekty ve scéně zanechají na objektu energetickou skvrnu. Energie skvrny je počítána dle zákonů BRDF. Zbylá energie, která zůstala po odebrání energie onou skvrnou se odrazí ve formě dalšího paprsku a ten opět dopadá na nějaký povrch, kde opět zanechá část své energie. Tento postup je vlastně shodný s postupem v reálném světě. Paprsky jsou vyslány od zdroje(slunce) a postupem své cesty ztrácejí a zanechávají energii na povrchu různých těles. Ve scéně se tedy vytvoří na povrchu všech těles jakási skvrnitá textura. Tato textura svým způsobem dává tělesům charakter světelných zdrojů, protože na nich zanechala energii. Ve skvrnách je jednak uložena informace kde se přesně mají nacházet, energetická hodnota a v neposlední řadě i směr paprsku od kterého daná skvrna vznikla. Tyto všechny informace jsou poměrně paměťově náročné, a tak se může stát, že při větším počtu photonů ve scéně, může výpočet dosahovat až 1 Gb Ram. Náročnost je také způsobena tím, že photony(skvrny) se zaznamenávají pro celou scénu a ne jen pro aktuální pohled. Teoreticky, pokud by jste photony uložily a znovu načetly, tak i při pohybu kamery na jiné místo by šli photony vidět. Počítají se tedy pro celou scénu, čímž roste paměťová náročnost.V Blendru ani samotném Yafray bohužel schází možnost uložit výsledek výpočtu photonové mapy. Po obdržení skvrn na objektech se už vlastní zobrazení řídí jednoduchou Raytrace metodou, kdy se pouze vysílají paprsky od pohledu a detekují skvrny a objekty ve scéně. Prostě standartní render, který by šel realizovat i Zbufer výpočtem. Při výpočtu photonů není směrodatné rozlišení, tak jak je tomu třeba v metodách MC a PT. Na rozlišení záleží jen minimálně.
Využití čisté Photon mapy:
Samostatná photonová mapa se prakticky pro výpočet finálního obrazu nepoužívá nebo jen pro speciální efekty, jako je třeba Caustics. Osvětlení ze samotné photonové mapy je velmi šmouhované a odstranění šmouh klade jednak velké paměťové nároky a jednak i velké přepočtové nároky v samotné Photonové metodě. Zato se však photonová mapa hojně používá jako základ pro další metody, třeba PT a Cache metodu. Mezi výhody patří poměrně rychlý výpočet samotné mapy. Nevýhodou je nutnost světelných zdrojů ve scéně, které by vyzařovaly photony. Nejčastěji je zdrojem bodové světlo nebo plošné světlo. Zdrojem nemůže být obloha. Z toho plyne, že s photonovou metodou je jen velmi těžké nasvítit všesměrně osvětlené exteriérové scény. Z tohoto důvodu se výhradně používá na interiérové scény, kde se např. do oken vloží plošná světla, která simulují venkovní prostředí v celé ploše okna.
Využití čisté Photon mapy na Caustics efekty:
Asi největším přínosem photonové metody bylo ale řešení caustics efektu. Tím, že se k problematice přihlíží vržením paprsku od zdroje světla, a ne hledáním světelného zdroje jako je tomu u MC a PT metod, je možné velmi rychle simulovat Caustics efekt. Následující obrázky popisují vznik caustics efektu. V podstatě se jedná pouze o to, že paprsek vlivem lomu prostředí se může sdružovat s jinými paprsky, které jinak šly rovnoběžně směrem od slunce. K lomu světla dochází na rozhraní jakýchkoliv prostředí o různých hustotách(pominu-li gravitační čočky a podobné vesmírné záležitosti)
|
|
Posun paprsku vlivem lomu světla, na volné ploše nevzniká caustics efekt, pouze posun obrazu. | Sdružení paprsků vlivem lomu světla a navíc sdružení vlivem vhodné geometrie. (obrázek není přesný, pouze schématický). Lom světla by měl nastat pokaždé při přechodu do jiné hustoty prostředí. |
A teď k samotné problematice řešení Caustics efektu. Pokud se podíváte, jak by šel řešit pomocí metody Monte Carlo nebo Path Tracing zjistíte, že by bylo zapotřebí ohromného množství paprsků na jeden pixel, aby byl jev viditelný. Situace je znázorněna na prvním obrázku v řadě. Ve schématu prošel jen jeden jediný paprsek sklenicí s vodou a proto caustics efekt nemohl být kvalitně spočten. Zbylé paprsky se odrazily do stěn, a onen jediný příspěvek ze sklenice se prostě v průměru téměř smazal. První obrázek je počítán přes software maxwell, který řeší osvětleni metodou Progresiv Path Tracing - PPT, která vychází z modifikace metody PT. V podstatě se liší pouze tím, že výpočet probíhá do nekonečna a při každé době se do scény vyšle nová vlna paprsků, která zjišťuje nové osvětlení a pak se sčítá s předchozím výsledkem. Takto se neustále vyhlazuje šum. Množství paprsků ve scéně se ale nezvyšuje(netříští) při dopadu paprsku na plochu. Při dopadu se zase odrazí jen jeden jediný paprsek, ale v každém čase do trochu jiného úhlu v mezích BRDF.
Metoda maxwellu je ale v tomto článku vedlejší, důležitější je názorná ukázka toho, že i po 4 hodinách, kdy veškeré plochy kolem sklenice jsou téměř čisté, tak samotný efekt caustics je pořád velmi málo patrný. Je to dáno pouhou pravděpodobností, kdy prostě je malá šance že paprsek projde onou sklenicí. Součtem malých pravděpodobností se pak stává větší pravděpodobnost. To se děje s rostoucím časem renderingu, jak je třeba vidět na vedlejším, prostředním obrázku. Tam je skoro ta samá scéna, ale počítaná mnohem déle, možná až 20 hodin. Já osobně jsem na to neměl nervy, takže jsem použil výsledek od Thomase An.
V podstatě řešení caustics pomoci metod MC, PT a PPT je charakterizována tím, že samotné difuzní osvětlení místnosti je zpravidla čité, ale pro zvýraznění efektu caustics je zapotřebí buď delšího času u metody PPT nebo brutálního navýšení paprsků u metod MC a PT. Jediný dnes reálný způsob u těchto metod skrývá metoda PPT.
Poslední a zároveň účinnější metodou pro výpočet Caustics jsou ony Photony. Tím, že se šíří přímo od světla, je možné velmi rychle vypočítat caustics efekt ve velké kvalitě. Situace je nastíněna na posledním obrázku. Photony, které se jinak vrhnou do celé scény při prvním dopadu na sklenici projdou dle zákonů fyziky a případně se sloučí na podložce. Tady nehraje roli žádná pravděpodobnost. Tady je to velmi jednoduchá situace. Jediným faktorem může být pravděpodobnost, že photony projdou opravdu sklenicí a nezastaví se třeba někde na stěně. V Blendru si s tím ale nemusíte vůbec lámat hlavu, protože tento problém zde stejně nejde řešit. Malou vsuvku bych si zde ale dovolil. Například ve Vray, je možné caustics efekt oddělit od výpočtu ostatního světla. Třeba stěny se vypočtou metodou MC a caustics efekt metodou photonů. Pak je vhodné photony směřovat jen na sklenici a zbytečně je netrousit po celé místnosti(paměťové nároky). Jde to zařídit obyčejným nasměrovaným tokem photonů pouze na sklenici, k tomu postačí třeba směrové světlo. Poslední obrázek vznikl tedy ve VRay kombinací photonové metody pro caustics a PPT metody pro ostatní osvětlení. Samotný výpočet caustics trval asi 10 minut, kdežto kdybych se o něco podobné pokoušel jen s metodami MC, PT a PPT dostal bych se odhadem na čas 20 hodin při srovnatelné kvalitě.Důvody jsou snad zřejmé z předchozích řádků.
Schéma s metodou MC, výpočet Maxwell - PPT - 4 h. | Maxwell - PPT - odhad 20 h. Efekt je už čitelný. by Thomas An | Vray - PPT + Photony na Caustics - 1 hodina. |
Využití čisté Photon mapy - předmluva k názorné ukázce:
Jak už jsem naznačil, čistá photonová mapa se příliš v grafice nepoužívá. Přesto se pokusíme alespoň trochu scénu nasvítit pouze photony. Problém je v tom, že photony samy o sobě generuji šmouhované osvětlení a to není příliš vhodné. Určitým nastavením, se dají ale šmouhy zmírnit nebo rozmazat a tak vytvořit plynulejší osvětlení. V zásadě se photony řídí třemi hlavními parametry. Jednak počtem, který se do scény vyšle, poloměrem skvrny, kterou zanechají na objektech a pak parametrem rozmazání oněch skvrn. Následující návod berte spíše jako návod k pozdějšímu využití photonové metody v kombinaci s PT nebo Cache metodou.
Photon mapa akci:
Blender photonovou mapu aktivuje zamáčknutím volby Photons. K tomu, aby výpočet probíhal čistě jen přes výpočet photonové mapy je nutné ještě zaškrtnout Tune Photons. Jak jsem se už zmínil, je nutné do scény vložit nějaký světelný zdroj, co bude vyzařovat photony. Proto jsem nachystal následující scénu. Vlastní nastavení scény provedeme až později. Jedná se o interiérovou scénu kde budeme vše testovat. Scéna není sice úplně ideální, ale pro test metody photonů zcela postačí. Scéna je jednoduchá, a prakticky veškeré photony, které se vyšlou plošným světlem před oknem jsou započítány v místnosti a jsou také viditelné. Pokud by jste osvětlovaly například katedrálu a měli přitom pohled jen na určitý detail, třeba oltář, bylo by zbytečné počítat všechny ty ostatní photony v celém objektu. Pro tyto případy je prostě metoda nevhodná, protože z vlastního výpočtu se použijí jen málokterá data na render finálního obrazu. Prostě se vždy nějaké výpočty provádí zbytečně za vašimi zády, kde je třeba ani nepotřebujete vidět. Na druhou stranu je použitelná právě pro animace.
Photons - aktivuje render photonové mapy
Tune Photons - slouží k tunovaní (ladění) photonů. Jednodušně řečeno, zobrazuje pouze photonovou mapu. Kdykoliv když budete mít zaškrtlé Tune Photons při jakémkoliv nastavení Yafray, Yafray bude vždy počítat jen photony.
Count - počet photonů vyslaných všemi světelnými zdroji dohromady.
Radius - Značí velikost skvrny photonu na objektu. Velikost je vztažena na absolutní měřítko scény. Velikostí se dá rozmazávat mapa, ale k tomu primárně slouží MixCount
MixCount - tento parametr příliš nechápu. Myslím, že rozmazává okraje jednotlivých skvrn, tedy že mezi sebou mixuje jednotlivé skvrny a tím pomáhá vyhladit mapu. Problém je ten, že samotná skvrna by měla být vždy ostrá, pokud tento parametr má nulovou hodnotu. Takto se chovají alespoň ostatní rendry. Jenže Yafray stejně vždy skvrny rozmaže. Ale,... pokud hodnota je téměř nulová, skvrny boudou ostřejší, a pokud je hodnota maximální, okraje skvrn jsou rozmazané. Parametr ještě souvisí s rádiusem. Čím větší rádius a větší Mix Count, tím větší rozmazání. Čím menší rádius, tím Mix Count má menší účinnost a rozmazání je méně patrné.
Count | ||
Malý počet vyslaných photonů způsobil, že na mnohých místech se skvrny ani moc nepřekrývají a vznikají skoro černá místa bez energetické textury. | Zvětšením počtu photonů se šum pomalu vytrácí. | Velmi velký počet photonů nemá až tak moc velký vliv na vytracení šumu. Photonů je přespříliš mnoho, a rozdíl mezi prostředním obrázkem v kvalitě je málo znatelný, zato rendertime je velmi rozdílný. |
Radius | ||
Samotný rádius má vliv na sum textury. Nelze jej ale brát dogmaticky, a je vhodné rozmazání regulovat i Mix Count. Mix Count se projevuje zejména od větších rádiusů, a tak rozostření tak malých photonů je možné jen rádiusem. | Větší rádius znamená větší rozostření. Všimněte si, že u rádiusu 1.0 už dochází ke vzniku bílé barvy v rohu. To je způsobeno, že do interiéru budovy pronikly skvrny(photony) z exteriéru při tak velkém poloměru. U poloměru 0,5 stačila tloušťka stěny k tomu, aby venkovní photony nepronikly do interiéru. | Přehnaný rádius. Takto lze například rendrovat právě jen pomocí čisté photonové metody. Trochu to připomíná výsledek radiosity bez zpřesnění. Opět si všimněte vad osvětlení v rozích, kde je světlé místo. Problematice světlých rohů jsem se věnoval v kategorii: Rizika, úskalí a rady do Photonové metody |
MixCount | ||
mix count velmi malé, skvrny(photony) jsou velmi ostré. | mix count se zvyšuje a tím roste i rozmazání skvrn | Navýšení na maximální hodnotu se nějak zvlášť neprojevilo. |
Rizika, uskalí a rady do Photonové metody |
|
Photonová metoda sebou nese celou řadu úskalí. Problémem se může stát vysoká paměťová náročnost vlivem velkého množství photonů. Samotné zachycení photonů na modelu není také příliš spolehlivé. Pokud třeba místnost, kterou jste posuzovaly v předchozích krocích ochudíte o venkovní stěny(stěna nebude mít tloušťku), objeví se v rozích bílé zbarvení. To je třeba způsobeno namixováním photonů s photony v exteriéru. Namixování s okolními photony v tomto případě je jednoduché. Lze němu zabránit právě onou tloušťkou stěn. Sami ale můžete namítnout, že i v případě stěn, jsou rohy bílé pro maximální rádius( už od hodnoty 1.0). To je prostě normální, stěna je pro rádius 1.0 málo tlustá, ale rádiusu 0.5 už v předchozích obrázcích vyhovovala. Je nutné volit takové rozostření a takový rádius, aby v rozích nedocházelo k mixování photonů s venkovními vysoce energetickými photony. Předcházet se tomu dá onou tloušťkou stěny nebo umístěním Area světel přímo do okenních otvorů a ne před celé čelo budovy. Tím se nebudou vyskytovat vysoce energetické photony na venkovní straně, a proto by ani nemohly proniknout při rozostření do interiéru. Chybou u photonů je i fakt, že když omylem vložíte část světla do modelu, tak samotný vnitřek modelu se stane novým prostředím pro šíření photonů. Myslím tím ,že světlo bude procházet objemem stěny. V tomto případě je objem stěny novým prostředím pro šíření photonů. | |
|
|
Tato ukázka vznikla odstraněním venkovního obalu stěn. Stěny už nemají tloušťku. V rohu je vidět jasná chyba přesvícení. Všimněte si, že na takměř stejné nastavení jako u obrázku z kategorie Count,kde byl stejný rádius i rozmazání je na tomto obrázku právě onen rozdíl světlých rohů. To je jasný důkaz mixování s okolními photony. Dbejte tedy, aby vaše stěny měly tloušťku a všemožnými způsoby se snažte vždy zabránit mixováním s externími vysoce energetickými photony. | Na tomto snímku je zase upraveno světlo pomocí Scale nástroje tak, aby leželo co nevíce jen v okenních otvorech. Dá se říct, že tvoří okenní skleněné tabulky. Klidně jsem ale mohl vytvořit tři Area světla pro každé okno, bylo by to přesnější. Úpravou rozměrů světla na obdélník jsme zamezili nasvícení kritických oblastí v exteriéru, které by se později mixovaly do interiéru. Tím jsem ale způsobily i to, že do místnosti vnikají všechny photony ze světla, tedy celý počet v Count a proto se i daleko prodloužil čas výpočtu a v neposlední řadě se i zvýšila kvalita vlivem většího počtu photonů v místnosti. Tím, že světlo před úpravou vrhalo spoustu photonů na venkovní fasádu, se výrazně zjednodušil výpočet. Lépe řečeno, možná 50% photonů vůbec nedorazilo do místnosti otvory v oknech, protože se zastavily na fasádě a odrazily se do environmentu, kde skončila jejich cesta ne po 6 odrazech jak je nadefinováno, ale po jednom odrazu. Tím samozřejmě klesl rendertime. I přes rádius 4.0 je v rozích pořad tma a ne světlé místo, protože photony na exteriéru zkrátka chybí. Červená barva znázorňuje novou polohu a rozměr okna. |
|
|
Zde bylo zase ponecháno původní čtvercové světlo které svítí i na venkovní fasádu. Změněn je model. Byly navýšeny tloušťky zdí v kritických oblastech rohů. Navýšením tloušťky se oddálily photony z exteriéru od interiérových. I přes hodnotu rádiusu 1.0 jsou rohy tmavé, a ne bílé, jako je tomu u obrázků v kategorii Radius. | Pokus zanoření světla do scény z levého obrázku. Jasně jde vidět, že zanořené světlo do čelní stěny vytváří uvnitř modelu(tloušťky) nový prostor pro šíření photonů. Důkazem je především opětovný vznik bílých rohů, které by nemohly vzniknout jinak, než blízkostí vysoce energeticky nabytých photonů z přímého světla. Ty jsou právě uvnitř modelu. |
1)První krok |
||
Načtete tedy scénu a zaktivujte Photon render a zaškrtněte
Tune photons. Jak je vidět z obrázků, bude ideální nastavení pro čistý photonový render větší rádius a maximální Mix Count. Výsledek by mohl vypadat
asi následovně. Jde vidět, že výsledek je příliš tmavý. Intenzitu světla v interiérech lze zvýšit několika způsoby. Jednak zvýšíte přímo intenzitu světla, intenzitu světla v render dialogu, či hodnotu odražené složky. Co zvýšíte z těchto parametrů pro tento render je úplně jedno. Prakticky to má stejný přínos. Jediný rozdíl je mezi nastavením světla a nastavením v render dialogu, kdy můžete řídit globálně parametry nebo lokálně pro jednotlivá světla. Toto nastavení ale často nestačí. Zpravidla dojde k tomu, že u oken je prostor moc přepálený a naopak dál od oken je už tma. Tento faktor jde ovlivnit změnou průběhu expozice. Takto jde v interiéru vytvořit téměř plynulé a ladné osvětlení. Quality medium nemá na výpočet photonů žádný vliv, protože tohle nastavení vyjadřuje počet paprsků pro zjišťované body. Viz předcházející text Cache metody |
|
|
2) Duhý krok | ||
Nastavme tedy vyšší hodnotu pro energii z pozadí tak i ze světel. V photonech se ale projeví pouze energie ze světel, protože jenom ty jsou schopny vyzařovat photony. Po zvýšení hodnoty by měl render vypadat asi takto. |
|
|
3)třetí krok | ||
Výsledný render je stále příliš tmavý, a navíc se u něj projevuje velký jas u oken a tmavá místa na zadní stěně. tento ostrý průběh lze zmírnit zvýšením hodnoty Gama. Tato hodnota způsobí jednak snížení onoho kontrastu a jednak mírně celou expozici zesvětlí. Nastavte tedy hodnotu gama na 2,5 |
|
|
4)čtvrtý krok | ||
Pro zobrazení s čistou photonovou mapou zvolíme větší
rozostření šmouhované textury. Vystačíme si tedy se zvýšením parametru
rádiusu. MixCount jsme už dali v předchozí části na maximální hodnotu. Pokud bychom rozostřili pomocí zvýšení hodnoty rádiusu, vznikly by světlé rohy. Proto prve proveďme jedno z řady opatření proti vzniku bílých rohů. Asi nejjednodušší je vytvoření skupiny Area světel jako skleněné tabulky přímo do prostoru oken. Dbejte aby ale nikdy nezasahovaly do vnitřku(objemu) modelu. Prostě je trochu odsaďte Pomocí nástroje scale vytvořte jejich ideální tvar.Všimněte si, že výpočet trval velmi dlouho a navíc je velmi čistý. to je způsobeno tím, že veškeré photony byly vrženy přesně umístěnými okny do interiéru. Výsledek by byl ideálním základem pro PT a Cache metodu. K tomu ale až později. |
|
|
5) pátý krok | ||
Nyní pro zobrazení čistou photonovou metodou zvolíme
extrémní rádius, který vyhladí ony šmouhy. zároveň můžeme mírně snížit počet
photonů. Zde ale pozor, snižováním počtu photonů roste zrnitost(šmouhy),
takže oba parametry je třeba hlídat. Rohy jsou nádherně tmavé. V určitých
oblastech ale samozřejmě je světlo nebo stín špatně. To je dáno fyzikálně
nekorektním rozostřením. Dá se říct pouhý blur. Takto by se dalo nějak
počítat jen pomoci photonů.
Tímto bych samostatný render pomocí photonové mapy uzavřel a věnoval se její rozšířené verzi a to v kombinaci s Cache nebo PT metodou. |
|
|
Cache + Photon map
Kombinace Cache + photonová mapa je jedna z nejůčinnějších metod pro výpočet především interiérových scén v Yafray. Prve se vypočte photonová mapa, která pak slouží jako základ pro výpočet Cache mapy. Photonová mapa v podstatě pokryje objekt souvislou energetickou texturou z překrývajících se skvrn. Tato energetická textura slouží jako zdroj světla. Pokud pak takovouto scénu počítáme přes Cache, tak výpočet samotné Cache je proveden následovně: Do scény se rozmístí opět body, ale jen na místa kde je potřeba zjistit konkrétní osvětlení. Pro tyto body se spočte osvětlení tím způsobem, že se vyšle do tohoto bodu paprsek od pohledu, a ten se po nárazu do bodu roztříští na shluk paprsk s různými úhly odrazu dle zákonů BRDF. Roztříštěné paprsky dopadnou na plochy, ze které načerpají energii hrubých photonů a tím jejich cesta končí.
Základní význam je v tom, že výpočet Cache mapy má vždy jen jeden jediný odraz. Paprsky už vlastně primárně nečerpají energii pouze z environmentu nebo světel, ale především z photonové mapy. Řešení osvětlení tohoto interiéru jen Cache metodou by vyžadovalo třeba 6 odrazů, přičemž při každém odrazu vznikne třeba 16x16 dalších paprsků, které se budou při každém dalším odrazu 16x16 dělit. To je celkem velké číslo. Photonová metoda + Cache dovoluje právě tuto velmi matematicky složitou úlohu zredukovat. Photony se vypočtou rychle, tam žádné větvení nenastává a u Cache se spočte jen jeden jediný odraz s větvením. Tím se úloha dá řešit daleko spolehlivěji a přesněji.
Srovnání Cache a Cache + Photon mapa | |
Cache metoda | Cache + Photon mapa |
|
|
U Cache metody se paprsek šíří do maximálního definovaného počtu odrazů. K prosvětlení interiéru je zapotřebí alespoň 6 odrazů. Energii načerpá až po vylétnutí do bílého environmentu nebo na přímo osvětlenou plochu od světla. Výpočet se neustále větví a zesložiťuje. | Cache metodě k načerpání světla stačí pouze vyslat paprsky ze zjišťovaného bodu, aby načerpala energii z photonů. Přitom může načerpat energii od případných světel nebo environmentu. Výpočet se prakticky nevětví. |
Využití spojení Cache + Photon mapy:
Tato metoda se dá velmi dobře použít v interiérových scénách. Prostě obecně, kde potřebujete větší prosvětlení s větším počtem odrazů. Touto metodou se běžně počítají interiéry. V současné době(7.7.2005) je u řady softwaru photonová metoda ve spojení s Cache jediný vhodný a rychlý způsob na výpočet kvalitně nasvícených interiérů. Jedinou výjimku tvoří snad VRay, který vedle photonů používá tzv. Light Cache, která má prakticky úplně stejný význam jako photony. V minulých dobách se před photony často používala radiosita. Tu lze také použít jako hrubý stavební kámen pro přesné osvětlení. Takže zase obdobně jako z photonovou metodou. Výhodou je urychlení oproti použití čisté Cache metody v interiéru. Nevýhodou může být neanimovatelnost photonů, větší paměťová náročnost. Všechny tyto nevýhody odstranil vray s pomocí Light Cache.
...:::Test vlastní scény:::... |
||
1)První krok |
||
Nastavení expozic ponechte stejné jako u testovaní čisté photon mapy. Jen mírně upravte nastavení rádiusu a počtu photonů. Pro správný výsledek je vhodné, aby čistá photonová mapa byla co nejpodobnější jako Cache mapa. Ideální stav je takový, že photony alespoň trochu vystihují detailní stíny v rozích a třeba vetknutí židlí do podlahy a pod. O zostření stínu se pak postará už Cache. |
|
|
2) Druhý krok | ||
Nyní můžeme zaktivovat k photonové mapě Cache metodu.
Photonová mapa se bude využívat jako dodatek k ostatním metodám vždy, když
deaktivujete tlačítko Tune Photons. Pak se vedle
photonové metody bude počítat buď Cache (zaškrtlé tlačítko Cache) nebo Path
Tracing (nezaškrtlé tlačítko Cache) Zaskrtněte tedy Cache a nastavte ji dle
uvážení. Já ji nastavil už na finální přesný render. U Cache nebo PPT metody
je nutné vybrat Quality, já zvoli High. Tím se generuje větší množství
paprsků. Finální zobrazení není ještě čisté. Myslím, že by pomohlo pouze zvýšení Quality na Best. Tím by se odstranily drobné šmouhy. Nicméně nepředbíhejme. Pokud se ve spojeni PT+Photons objeví stejné chyby, je chyba v Photnech a ne v Cache. |
|
Path Tracing + Photon map
Kombinace Path Tracing + photonová mapa se užívá už méně častěji. principielně funguje úplně stejně, ale až v tom rozdílu, že PT přistupuje k osvětlení pro každý pixel, a ne pouze pro pár bodů v rizikových oblastech(rohy), jak to dělá Cache. Z toho plyne delší časová náročnost, ale daleko větší přesnost v detailech. Abych se přiznal, tak photonovou metodu s PT jsem zatím moc v praxi nepoužíval. Spíše ji vždy použiji, když se někde objeví chyba. V praxi se v kombinaci můžou objevit různé chyby. pak je těžké hledat na čí straně je ona chyba. Jestli jsou špatně photony nebo Cache. V tomto případě použiji na photony PT metodu. Ta nikdy nedělá chyby. Nejčastěji vznikají chyby vlivem špatného vzorkování Cache a její interpolace. PT metoda žádnou interpolaci mezi body nepoužívá, a proto nedojde ke vzniku těchto chyb. PT metoda často prověří kvalitu photonové mapy. Nevýhoda je delší čas rendru a také zrno. Zrno jde ladit zvyšováním počtu paprsků, tedy parametry Quality.
...:::Test vlastní scény PT+Photon mapa:::... |
||
1) První krok |
||
Aktivaci PT místo Cache zapnete pomocí odškrtnutí volby
Cache. Tím se aktivuje skrytá PT metoda. Jediné nastavení, které volíte, je
počet paprsků. Já na začátek zvolil Medium. Render je patřičně zašuměný. V Blendru stejně jako v ostatních rendrech jsou odděleny vzorky světel od vzorků nepřímého osvětlení. Šum ve scéně nemusí být tedy jednoznačně od nastavení Quality. Šum můžou způsobovat jen plošná světla, která mají vlastní systém vzorkování. Vzorky u světel najdete pod vlastnostmi světel v položce: Samples |
|
2) Druhý krok | ||
Abychom zjistili odkud pochází většina šumu, provedeme
render pouze s přímou složkou osvětlení, tedy jen se světly a ne s GI. Toho
docílíme vypnutím photonů a hlavně vypnutím Quality. Nebo rovnou
vyberte Method None. Najeďte pod vlastnosti světel a podívejte se kolik je tam Samplů. Nastavení by mělo být na hodnotě 1. Proveďte tedy render. Z rendru jde vidět už poměrně velké zašumění jen od samotných světel. Zvyšte tedy parametry samplů, třeba na hodnotu 8. |
|
3) Třetí krok | ||
Zvyšte tedy parametry samplů, třeba na hodnotu 8 a vypočtěte
scénu. Jde vidět, že scéna se počítala déle, zato však šum se téměř
vytratil. Při testech se ukázalo že světla nejsou jediným zdrojem šumu. Vyhlazení nastalo až při navýšení paprsků u GI, tedy zvýšením Quality na Higher. |
|
4) Čtvrtý krok | ||
Při testech se ukázalo že světla nejsou jediným zdrojem šumu. Vyhlazení nastalo až při navýšení paprsků u GI, tedy zvýšením Quality na Higher |
|
Tímto bych rád uzavřel kapitolu osvětlení v Yafray. Všimněte si, že jsem třeba vůbec nepoužíval ostrá světla. Pomocí směrových světel můžete do scény vložit ostrý sluneční svit a scénu dobarvit žlutou barvou. Prostě různě kombinujte metody pro určité scény. Jen nezapomínejte, že u světel pro stíny je nutné zapínat Raytrace stíny, protože Yafray je raytrace engin. U slunečního svitu je dobré pro větší realističnost použít Area světla, která by v úplné hloubce místnosti nebyla zcela ostrá. V reálném světě je ostrý sluneční kužel v hluboké místnosti na jejím konci vždy mírně rozostřen. Stíny u Area světel bohužel pod Yafray dělají občas chyby. Snad se to do další verze zlepší.
Ještě než ale uzavřu kapitolu osvětlení, rád bych se zmínil o poslední metodě osvětlení, a tou je Ambient Occlusion.
...:::Ambient Occlusion - Blender Engin:::... |
Ohledně samotné implementace Ambient Occlusion-AC do Blendru mám rozporuplné pocity. Trochu mě zaráží, že Blender vykročil vlastní cestou a jakoby se osamostatnil od Yafray. Přitom doprogramovat něco podobné pod Yafray je jednodušší než to programovat do starého Z-bufer jádra Blendru. Nelíbí se mi ani to, že člověk který tedy sáhne po AC nemá pak možnost využívat to co je v Yafray a to co je k tomu aby AC vypadalo dobře nutné. Třeba kvalitní Area shadow. To čemu se říká pod Blendrem Area shadow není nic jiného, než slabý fake s namnožením světel do plochy. To bohužel u tak čisté metody jakou je AC nestačí. Navíc v Blendru je dost špatný Antialiasing. I přes jeho maximální nastavení mnohé scény nebyly hladké. Hlavně blurry reflexe se nikdy nevyhladily. Také globální nastavení AC není zdaleka ideální. AC je vlastností materiálu a ne globálního nastavení scény jak je tomu v Blendru. Doufejme, že autoři sklidí trochu té kritiky a že s tím do dalších verzí něco udělají. Teď už k samotné metodě a jejímu nastavení.
Ambient Occlusion
Ambient occlusion je metoda, která nesleduje reálné chování světla a jeho distribuci. Je to pouze laciný trik, který ovšem velmi dobře dokáže napodobit reálné osvětlení. Ve scéně se nevyskytují odrazy světelných paprsků. Každý objekt pouze vyzáří svoji energii na okolní. Nejdůležitější faktor ovlivňující vzhled AC je vzdálenost, do které jsou tělesa schopny vyzářit svoji energii.
Využití Ambient Occlusion:
Ambient Occlusion má universální využití. Dá se použít téměř všude. Tím že je to pouze trik vznikají určité anomálie, ale ty v zásadě jdou buď zamaskovat, nebo si jich prostě při letmém pohledu nikdo nevšimne. Je to metoda, se kterou se tvoří celé animace a ve velké míře se používá i v těch nejmodernějších filmových tricích. Hojně se používá pro velmi masivní scény s velkým počtem objektů na obrovské rozloze. Její výhoda spočívá v tom, že se složitostí scény neroste render time zdaleka tak exponenciálně jako u jiných běžných metod. Nevýhodou je možná ztráta světelného toku. Při nasvícení Ambient occlusion vzniká efekt rovnoměrného osvětlení a to je nutné často různě korigovat a vytvářet světelný tok například pomocí přídavných plošných světel nebo ambientního osvětlení s omezenou vzdáleností. V Blendru jsou tyto možnosti bohužel dost sníženy.
Ambient Occlusion v akci:
Přesný princip neznám, ale Ambient occlusion měří vzdálenosti od sledovaných bodů na okolní prostředí. Z každého viditelného pixelu se vyšle svazek paprsků. Změří se celková délka paprsků a na základě této délky se určí černobílý odstín pixelu pro který se tento krok provedl. Paprsky, které jsou delší než předepsaná délka se nezapočítávají, tím lze výrazně zjednodušit celý výpočet. Čím delší je tolerance délky paprsku, tím pomalejší je výpočet. Některé systémy dokonce dovolují nastavit úhel jakéhosi pomyslného jehlanu ze kterého vylétávají ony paprsky, např. Mental Ray.
Samples - Počet vyslaných paprsků z jednoho sledovaného bodu. Větší množství vyhladí šum a prodlouží výpočet Dist - Vzdálenost, distance do které se ještě započítávají paprsky Random Sampling - náhodné samplování (roztříštění) paprsků, není příliš vhodné. zpravidla se stejným počtem paprsků dosahuje většího šumu. Use Distances - použije vlastní nastavení distance( nechápu rozdíl mezi Dist)? Add, Sub ... - způsob spojení vrstvy AC s ostatními vrstvami, jako je difusní složka, spekulární, reflexní a pod. Podobný význam jako režimy prolnutí ve Photoshop. Zatím jsem nenašel důvod proč tyto hodnoty měnit. |
Ambient Occlusion v Blendru jak jsem se už zmínil je bohužel velmi špatně proveden. Jeho využití pro realistický render je velmi krkolomné. je to způsobeno zejména tím, že Blender sám o sobě nemá přiliž dobré nastavení světel, zejména neumí reálně počítat plošná světla. další nevýhoda je, že AC se počítá globálně a není vlastností materiálu. Pokud by bylo AC vlastností materiálu, dalo by se daleko pohodlněji napodobit skutečný světelný tok a ne jen difusní osvětlení. V podstatě všechny moderní rendrovací systémy mají AC importován jako vlastnost materiálu, jen Blender k tomuto problému přistupuje poněkud opačně, a bohužel dost nevýhodně.
Vytvoření světelného toku pomocí nabalení
více materiálu s různým nastavením AC Umožňuje Mental Ray |
||
Příklad nastavení na nulovou vzdálenost paprsku. Toto nastavení započítá výrazně oblohovou složku osvětlení a vytváří světelný tok od zdroje osvětlení. | Nastavena vzdálenost paprsku na hodnotu 100 mm. Model má na výšku 250 mm. Nastavení vytváří zase čisté difusní osvětlení bez charakteru světleného toku, zato však prosvětlilo celou místnost jakoby odraženou složkou. | Zde je spojení předešlých obrázků pomocí kombinace materiálu s vlastností AC a s nastavením jednak nulové vzdálenosti + vzdálenost 100 mm. Nabalením více materiálů s různými vlastnostmi AC můžeme docílit velmi realistického osvětlení s charakteristickým světleným tokem od zdroje osvětlení. Pro tento render byly použity jen dva spojené materiály. Render je proveden přes Mental Ray. Blender bohužel tuto kombinaci přímo nedovoluje a je jí nutné buď vytvářet kompozičně, nebo obcházet. |
Vytvoření světelného toku pomocí Ambientních světel |
|
Ve scéně je jen jedno nastavení AC, tedy jen jedna vzdálenost paprsků. Ta je nastavena pouze tak, aby vytvářela difusní osvětlení ve spárách. Světelný tok od oken směrem k zadní stěně je vytvořen Ambientním světlem, které vyváří postupný přechod až k tmavé stěně. Záře kolem oken je vytvořena trojicemi ambientních světel. Všechna ambientní světla mají nastavenou vzdálenost, do které mají působit. U Blendru se mi ambientní světla nepodařilo objevit, takže pokud v něm jsou, můžete světelný tok vytvářet pomocí těchto světel. Render jsem tedy provedl opět přes Mental Ray. |
1)První krok |
||
Načtete opět scénu z předchozích testů a zaktivujte Blender Internal render. Aktivací Blender rendru se zpřístupní nastavení AC. Prve ale mírně poopravte nastavení scény a rendru. Ve scéně jednak vymažte světlo, které tam je před okny a v rendru zapněte Ray tracing a odškrtněte Fields, aby se počítal celý obraz naráz. Ray tracing je nutný zapnout z důvodu výpočtu AC. |
|
|
2) Duhý krok | ||
Nyní zapněte AC a proveďte nastavení. Se vzdáleností paprsků prostě experimentujte. Já ještě mírně poopravil kontrast a jas. Scéna je schválně tmavá, protože do ní vložíme pomocná světla na vytvoření světelného toku od oken. Světla tedy scénu celkově zesvětlí a vloží do ní větší dynamický rozsah. Raději obě úlohy provádějte odděleně. Prve si tedy nastavte AC a pak třeba jen světla. V druhém kroku provedeme nastavení právě jen světel. Až se ujistíte, že obě složky jsou správně nastaveny, můžete je zapnout dohromady. |
|
|
3) Třetí krok | ||
Vypněte AC odkliknutím tlačítka Ambient Occlusion a vložte do
scény plošná světla. Nejlépe jako u photonové metody, kdy jsme je vkládali
do oken místo skleněných tabulí. Raději vložte do každého okna jedno
plošné světlo z důvodu realističtějšího výsledku. Proveďte dle potřeby seřízení kontrastu světel pomocí snížení hodnoty Gamma. Snižte také jejich energetickou hodnotu. V naší scéně nebudeme ani potřebovat Spekulární lesk, proto buď nastavte materiál stěn aby se spekulárně neleskl, nebo prostě odškrtněte u světel aby nevytvářela spekulární lesk pomocí zamáčknutí tlačítka No specular. Ještě nastavte dělení Area světla, ja zvolil 6 x 6 |
|
|
4) Čtvrtý krok | ||
Nyní už sloučíme oba postupy a zapneme jak AC tak ponecháme zapnutá světla. |
Výsledek není optimální. Obávám se, že v tomto případě ale lepší nebude. V této scéně by velmi pomohla ona zmiňovaná Ambientní světla, která by vnesla do osvětlení ten pravý ráz. Vložení světelného toku pomocí blendrovských zastaralých area světel je bohužel špatné řešení. snad se do budoucna dočkáme AC v yafray s jeho korektními plošnými světly, nebo snad přibudou ony Ambientní světla. |
|
...:::Blurry reflexe - dodatek k photorealistickým rendrům:::... |
V následující kapitole bych se rád zmínil o poslední velmi důležité věci pro realistickou grafiku. Jde o Blurry reflexe(rozostřené reflexe) Mnozí podceňují nastavení reflexí ve svých pracích. Většina lidí stále používá čisté ostré raytrace reflexe, které nepůsobí na většině površích dokonale. Pokud se podíváte na reálný svět, tak takměř každý materiál se alespoň trochu leskne a vždy s určitým stupněm rozostření. Ono se nezdá, ale i pohledový beton se leskne. V praxi se ale tyto věci obchází nebo vynechávají. Detailní materiály se dělají jen pro velmi náročné scény. Dnes prakticky veškeré GI rendry umožňují přímý výpočet blurry reflexí. Existuje několik metod výpočtu, od úplného zjednodušování až po přesný pixelový výpočet. Pokusím se alespoň nastínit jak takový výpočet funguje.
Do scény se vrhnou standardním raytrace systémem paprsky přes stínítko tak, aby načetly obraz scény. Tento postup je vlastně popis standardního raytrace systému pro render. Do této chvíle je to jen obyčejný výpočet. Pokud paprsek narazí na plochu, která má nastavenu reflexi a navíc parametr rozostření reflexe, tak se roztříští na shluk paprsků a ty se rozlétnou pod přesně definovaným úhlem odklonu od původního směru pro čisté zrcadlové reflexe. Pro čisté zrcadlové reflexe, kde vlastně není zadán parametr rozostření platí uhel dopadu = uhel odrazu. Parametr rozostření způsobí u roztříštěných paprsků odklon paprsku od původního "Čistého" do všech směru a tím se může vzniknout právě rozostřená reflexe. Paprsky pak dopadají na určité plochy, načerpají jejich obraz a vrátí se zpět do místa odrazu. V místě odrazu se pak vyhodnotí obraz z roztříštěných paprsků vytvoří se finální podoba.
Pokud se nad tím zamyslíte jak to vlastně funguje, tak vše je opět o pravděpodobnosti. Vezměte si jednoduchou scénu, krychle na lesklé podlaze. Reflexe bude v místě vetknutí krychle poměrně ostrá a z přibývající vzdálenosti se bude rozostřovat. Když se podíváte na body těsně u vetknutí, tak ty urazí jen velmi krátkou dráhu po odrazu, a tak rozptyl paprsků je velmi malý. Naopak body vzdálenější, urazí větší vzdálenost, tím se více odchýlí a načerpají velmi rozdílné obrazy. Takto vznikne rozostřená reflexe. Dá se vyslovit pravidlo: Čím je reflexní obraz vzdálenější od reflektující plochy, tím bude rozostřenější.
BRDF Charakteristiky | |
"Ray Trace" - zrcadlo(uhel dopadu=uhel odrazu) | Blurry reflexe - plast(odklon paprsků od "ČISTÉHO") |
Kóty 10,21,45 ukazují jak s rostoucí vzdáleností roste odchylka -červená - reflexní obraz kvádru -béžová - "čisté" paprsky -černá - paprsky s odklonem -modrá - úhel pohledu -žlutá - pozorovatel |
S Blendrem bohužel nemáme možnost přímého výpočtu blurry reflexí, ale i přes to je můžeme napodobit. V praxi se používá fejkování pomocí bump map. V podstatě když se podíváte na jakýkoliv objekt co vytváří blurry reflexe, zpozorujete drobné mikroskopické nerovnosti. Ty vytváří právě to, že světelné paprsky při dopadu na tento povrch změní svou přesnou trajektorii odrazu, a vychýlí se. Pak dopadají do očí pozorovatele. Makroskopické nerovnosti se dají celkem slušně napodobit Bump mapou. K tomuto slouží v Blendru (pro mě paradoxně označené tlačítko) NOR.
V této části nebudu podrobně rozepisovat jak daný efekt nastavit. V podstatě jde jen o to, aby jste vytvořili materiál, který má reflexní vlastnosti a k němu vytvořily mapu (bump mampu) co bude vytvářet blurry reflexe. K práci v materiál editoru vám postačí následující tutoriály: na BLENDER3d
Scény s blurry reflexí |
|
|
Yafray render - scene download Pěkný příklad dřevěné podlahy. Reflexe je tvořená dvěmi bump mapami. Jednak bump mapou vlastního dřeva a pro větší rozostření, které by nekopírovalo přesně texturu dřeva byla použita velmi jemná zrněná textura MARBLE. Textura MARBLE je jediná zrněná mapa podporovaná YAFRAY. Yafray bohužel nepracuje s bump mapami ideálně. Pro jejich vytvoření používá nadměrné vzorkování a tak se prodlužuje výpočet scény. U glossy reflexí je vhodné lépe nastavit Antialiasing, který nás zbaví zrna. V této scéně je antialiasing přenastaven. Ohledně Antialiasingu nemám příliš jasno, takže jeho vysvětlení ponechám na někom jiném. |
|
Bledner Intrenal render - scene dowload Plastový povrch. Tentokrát výpočet přes samotný Blender. Definice rozostření je jen jednou Bump mapou, a to MARBLE materialem o nejmenší velikosti. |
Fejkování blurry reflexí přes Bump mapy je celkem používaná metoda i dnes u nejmodernějších rendrů. Bump mapa na mnohých materiálech zachová charakteristické rysy reflexe. Čistá reflexe jen pomocí parametru rozostření by pak působila prostě příliš plasticky. Nevýhoda této metody je, že se s ní hůře dělá obyčejné prosté rozostření. Aby takovéto rozostření bylo čisté, bez zrna, je nutné přenastavit antialiasing. Tímto výrazně vzroste výpočetní čas. I přes to jde vidět že plastové meteriály lze dělat.
...:::Závěr - kritické oko:::... |
Asi víte, že převážně pracuji s 3D Studiem MAX. Do Blendru jsem se dostal určitými okolnostmi, zmíněnými na začátku. Z toho mi náleží jedinečná možnost kladně nebo záporně okomentovat práci s Blendrem a Yafray, jelikož mám možnost srovnání s 3DS MAX
V prvé řadě žasnu nad tím, že vznikl tak kvalitní software jako Blender a Yafray úplně zadarmo. Vím, programátory lze sponzorovat. Spíše jde o to, že samotný software je zadarmo. Tento fakt zcela určitě vrhá jiný pohled na pozdější kritiku. Blender je fajn zejména svým game enginem a otevřeností kódu. Myslím, že tyto vlastnosti na něm cení spousty lidí. Líbí se mi velmi rychlý viewport, daleko rychlejší než v 3D Studiu MAX.
A teď ona kritika, bude ji hodně. Chtěl bych, aby jste následující řádky nebrali tak, že nějaký potrhlý člověk co děla v 3DS MAX za 160k najednou skočil do Blendru a pořád do něj rýpe že nemá tohle a tohle. Spíše bych byl rád, aby jste sami věděli, že jiný software má lepší věci než Blender, že Blendru schází pár velmi užitečných funkcí.... Snahou je, aby jste lobovali v maximální možné míře, tlačili na programátory, vytvářely úžasná díla a podporovali Blender tak, aby se odstavec kritiky stal brzy minulostí. Chci ve vás probudit určitý boj za lepší BLENDER. Nechci aby si blendrysti říkali jak mají skvělý soft. chci aby věděli, že třeba VRay nebo 3ds Max má tuhle věc co v Blendru není. že tamhle to má řešeno lépe. Když se začne mluvit o tom co vše Blendru schází, začne se na tom pracovat. Sám to znám z okolí 3DS MAX. Tam na sebe tlačí spousty firem, sice placených, ale okoukávají kde co.
Snad mě neukamenujete:
-modeling stále ještě v některých ohledech pokulhává V 3ds MAX je snad 50 funkcí k editaci polygonu. Automatická(inteligentní) selekce hran, polygonů, děr. selekce na základě úhlu ploch. Zaoblování hran, funkce insert-vloží polygon do jiného(nemyslím E,S) funkce BRIDGE - přemostí dvě díry. více voleb u extrudování(dle skupiny, dle normály, jednotlivě) podobné volby mi schází všude. řezání polygonů.
-práce s objekty. gizma jsou super, ještě však schází u move a scale možnost pohybovat po dvou osách. V 3ds vše řešeno v jednom gizmu tím, že jsou šipky spojeny ještě dodatečným trojúhelníkem.
-materiál editor. systém mi, coby Maxkaři, přijde dost chaotický. Někde jsem viděl aplikaci do Blendru, která se snad ještě vyvíjí a byla inspirována přehledným systémem 3ds max.
-správa souborů. Velmi užitečná věc je, když přejíždíte ve stromové struktuře po souborech scén, tak se zobrazuje malý obrázek, tedy fotka z kamery pohledu. Zase 3ds max.
-render libovolného aktivního okna včetně materiálů
-sytém tlačítek, tedy zkratek v tlačítcích více přizpůsobit standardním zkratkám. hlavně v materiál editoru
-možnost on/off u světel
-integrace Yafray pod Blendrem mi připadne chaotická. Konkrétně: nepřehledný výběr metod, nastavení QULAITY na presety není nejvhodnější. V řadě scén je evidentní chyba od malého počtu paprksů a to i na Best quality- je třeba buď editovat opět XML nebo vyzkoušet nefunkční volbu přes AO. Chaoticke a nepřehledné je taktéž zvolení metody výpočtu. V první fázi bych navrhoval přehledně oddělit výpočet primárního osvětlení od sekundárního. S tímto rozdělením by měl uživatel možnost k sekundárnímu či primárnímu výpočtu přiřadit libovolnou metodu a tím lépe pochopit kombinace výpočtu. Obecně bych zařadil všechny možnosti rendru pod jednu kartu se subsystémem, a zbytečně neodděloval možnosti jakou je DOF, barvy environmentu pro GI nebo reflexe nebo čisté pozadí jinam, než do karty rendru Yafray.
- schází ambientní světla
-Yafray. Nejlepší free render zadarmo integrovaný do skvělého grafického programu,přesto se najde kritické slovo. Bohužel, od dob mé poslední návštěvy Blendru(zhruba před rokem) se verze Yafray nepohnula. To je velká škoda. Člověk pak přemýšlí, jestli se vůbec vyvíjí. V Yafray jednoznačně schází možnost ukládání Photon map a Cache. To je věc, která by rapidně zpříjemnila práci. Area shadow je chybové. Velké množství photonů občas shodí Blender. Uvítal bych výpočet blurry reflexí. Schází Ambient Occlusion.
-Yafray by dle mého měl přijít s vlastním materiálem, který by umožňoval komplexní nastavení od reflexí až po displacement. Vlastní materiál je zvykem každého bohužel komerčního rendru. Vlastní materiál je schopen vždy obohatit render o větší stabilitu, více možností a v neposlední řadě i navýšení výkonu rendru vhodnou optimalizací. Vlastní materiál dovoluje programátorů větší efektivnost jejich práce. Nemusí se zbytečně namáhat s pracným zapojováním již stávajících materiálů. Můžou vyvíjet vlastní kód, nad kterým mají určitě větší přehlednost. Tak jak tak, se Blender nevyhne přidáním nových voleb do materiál editoru. Proč tedy přidávat věci, které bude možné počítat pomocí Yafray do blendr materiálu? Myslím že selekce by jedině prospěla.
-S Yafray materiály se pojí také materál jako AC shader. AC by nemělo být nastavení světla tak jak je tomu ted v blendru, ale vlastnost vzhledu materiálu. Jedině tak lze vytvářet kvalitní fake GI s pomocí AC metody. Navíc by tím šlo kombinovat vice nastavení AC shaderu v jednom materiálu. AC shader by ted měl být asi tam, kde teď jsou textury. Měl by dovolovat změny nastavení a přiřazení pod jakoukoliv vlastnost materiálu.
V době dopsání tohoto článku vyšla nová verze 0.0.8. Bohužel zcela nezahrnuje moji kritiku. Nejdůležitější bylo opět odsunuto, a to ukládání GI. Výčet novinek není tak úplně velký, spíše drobné věci které mohli počkat před důležitějšími. Bohužel musím být krutý, ale po roční pauze se mi zdá být nová verze trochu slabá. Myslím že pokud se bude Yafray vyvíjet pořád tak pomalu, tak bude trvat ještě dlouho, než se z něj stane plnohodnotný a neoddělitelný prvek Blendru.
Tomáš Toegel ...:::Tom.TNT:::... www.toegel.wz.cz www.deeppaint.wz.cz |