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:
3D grafika
Blender 2.5: Kouř a volumetrické materiály
1. července 2010, 00.00 | S verzí 2.5 přišly nové možnosti ohledně nastavování materiálů a především nový simulátor kouře. Jak se dnes přesvědčíme, lze dosáhnout o několik řádů přesvědčivějších simulací, než s particly z dřívějších verzí.
Nový simulátor kouře je založen na Vlnové turbulenci pro simulaci kapaliny (Wavelet Turbulence for Fluid Simulation). Příklady a popis algoritmu (v angličtině) můžete najít zde. O implementaci do Blenderu se postaral Daniel Genrich.
Po aktivaci simulace a jejím přehrání v Blenderu vidíme základní volumetrické nastavení materiálu kouře, které vykresluje OpenGL, ale pro samotný rendering je potřeba upravit nastavení materiálu. Nejdřív se ale vrhneme na samotné nastavení kouře:
Simulátor kouře má podobné zákonitosti jako simulátor kapaliny. Základem je tedy Domain objekt, v jehož Bounding Boxu se bude simulace odehrávat a mimo něj se nic počítat nebude. Dále je třeba Flow objekt s částicovým systémem, z nějž se bude kouř počítat. Vložme si tedy Plane a Cube, Plane bude mít nastavený jednoduchý částicový systém s nízkou hodnotou Normal a téměř nulovou gravitací, aby pohyb částic příliš divoce neovlivňoval pohyb kouře:
U částicového systému ještě nastavíme, aby se nerenderovaly jak částice, tak emitor. Na paletce Render v záložce Particles odznačíme Emitter a nastavíme None:
Na Physics panelu v části Smoke přidáme pro Plane simulaci kouře (Add) a nastavíme typ Flow. V roletkovém menu Particle System vybereme částicový systém, z jehož částic se bude emitovat kouř (defaultně ParticleSystem):
- Outflow - pokud je zatrženo, kouř se jednoduše neemituje; kdybychom chtěli zabránit emitování jiným způsobem (např. nastavenmí None nebo úplným odstraněním kouře), při nové aktivaci bychom musely ostatní hodnoty nastavovat znova
- Temp. Diff - rozdíl teploty kouře oproti okolí, pokud je číslo kladné, kouř stoupá nahoru, při záporných hodnotách "teče" dolů
- Density - hustota a hrubost dýmu, nižší čísla způsobí jemnější dým
Rozdíl v hrubosti kouře: vlevo hodnota Density na 1.0, vpravo na 0.1
Nyní nastavíme krychli jako Domain, opět na paletce Smoke v záložce Physics a objeví se nám několik dalších nastavení pro celkovou simulaci:
- Divisions - určuje kvalitu animace, vyšší číslo = kvalitnější simulace = delší výpočet
- Initial Velocity - pokud je zatrženo tak pohyb emitovaných částic udělí počáteční rychlost kouři
- Gravity - přitažlivost částic, záporné hodnoty posílají kouř dolů, kladné nahoru
- Heat - vyšší čísla = rychlejší průběh simulace
- Dissolve - zatrhnutí volby znamená, že se kouř bude ztrácet
- Time - zobrazeno pouze když je zatrhnuto Dissolve; určuje dobu, než kouř zmizí (při hodnotě 1 se kouř ztratí tak brzy, že jej nelze ani zaregistrovat)
- Slow - pokud je zatrženo, kouř se ztrácí pomaleji a plynuleji
Další paletkou je Smoke Field Weights. Zde se určuje vliv různých silových polí:
Povídání o silových polích a jejich působení na kouř, popř. částice ale necháme na jindy - jednak jde o poměrně rozsáhlé téma (ač nesložité), jednak je Blender 2.5 zatím stále ještě v Alpha verzi a při testování jsem shledal, že zde patrně ještě vše nefunguje tak, jak má. Další paletkou je Smoke Cache - zde se nachází veškerá nastavení ohledně zapékání simulace:
- Light / Heavy - určuje míru komprese, Light znamená větší soubory ukládané na disk, ale rychlejší výpočet, Heavy pak opačně
- + a - - přidávání a odebírání různých Cache (s různými nastaveními)
- File Name - jména souborů ukládaných na disk
- Start / End - počáteční a koncový frame simulace
- Bake - započne výpočet
- Free Bake - objeví se po stisku tlačítka Bake, vymaže soubory simulace z disku
- Calculate to Current Frame - vypočítá / přepočítá simulaci od začátku do aktuálního snímku
- Current Cache to Bake - pokud jsme simulaci vypočítali tak, že jsme ji ALT+A přehráli ve 3D okně, toto tlačítko uloží simulaci z paměti na disk
- Bake All Dynamics - funguje stejně jako Bake, ale vzhledem k neexistující dokumentaci (a k existující obavě, že možná zde ještě není zcela dovyvíjeno) se lze jen dohadovat o tom, co přesně znamená ono slůvko Dynamics
- Free All Bakes - shodné s Free Bake, ovšem zároveň vymaže soubory i pro High Resolution (vysvětleno níže)
- Update All Dynamics to Current Frame - shodné s Calculate to Current Frame
Další paletka pro nás bude jedna z nejzajímavějších. Smoke High Resolution použije vysoké rozlišení a kouř tak vypadá ještě uvěřitelněji:
- Smoke High Resolution - aktivuje vysoké rozlišení pro výpočet
- Divisions - určuje kvalitu animace, nedoporučuji ovšem dávat vyšší číslo, než 2, výpočet by se pak mohl neuvěřitelně protáhnout
- Show High Resolution - určuje, zda bude vysoké rozlišení vykresleno ve 3D okně
- Noise Method - algoritmus pro výpočet vysokého rozlišení - k dispozici je zatím pouze nový Wavelet
- Strength - síla turbulence
Rozdíl mezi základním a vysokým rozlišením (převzato z blender.org)
Pokud použijeme vysoké rozlišení, vyskočí nám další paletka Smoke High Resolution Cache, na které se nachází nastavení pro zapékání High Resolution. Je třeba aby soubory pro vysoké rozlišení měly rozdílný název, než základní simulace. Zapekání jako takové, obzvlášť při použití High Resolution ale zatím není příliš spolehlivým způsobem, jak si uchovat simulaci i po zavření Blenderu. Pro uchování možná ano, ale občas se po zapečení objevují chyby jako zásek na určitém framu nebo mizení kouře. Jediné opravdu spolehlivé řešení je (po nastavení všeho potřebného) přehrát animaci ve 3D okně ALT+A a poté u obou Cache převést z paměti na disk.
Poslední paletkou týkající se simulace kouře je Smoke Groups. Zde určujeme skupiny Flow a Collision objektů, které jediné se budou účastnit výpočtu:
Prošli jsme si tedy všechna nastavení, nyní stačí stisknout jen ALT+A a nechat simulaci vypočítat:
Nové možnosti materiálů
Ještě než kouři nastavíme materiál, bude třeba rozebrat trochu teorie. S verzí 2.5 přišel úplně nový typ materiálu - Volume. Vychází z toho, že objekt nemá pevný povrch a světlo se po průniku do něj odráží různými směry, rozptyluje se atd. Pokud nastavíme typ materiálu jako Volume, objeví se nám specifická nastavení:
- Density - hustota nebo hrubost, podobné jako u nastavení Flow objektu
- Density Scale - násobič hodnoty Density
- Scattering - udává množství světla, které se po průchodu objektem odrazí do kamery; čím víc světla se odrazí ven, tím míň ho pronikne objektem dál
- Asymmetry - záporné hodnoty znamenají, že světlo se z objektu odráží zpět ke světlu, kladné pak přes objekt ke kameře, defaultní hodnota 0.0 znamená stejnorodé šíření světla všemi směry
- Transmission Color - poté, co světlo projde objektem, jedna jeho část se změní na teplo (v reálném světě) a zbytek vyjde ven; Transmission Color určuje právě barvu tohoto "světelného zbytku"
- Emission - některé materiály jako např. oheň emitují vlastní světlo - zde určujeme barvu a míru vyzářeného světla
- Reflection - ovlivňuje Transmission Color, určuje barvu materiálu potom, co se z něj prozáří světlo ven; není založen na fyzikálně přesných výpočtech
Ještě jedna paletka je důležitá pro nastavování Volume materiálu - paletka Lighting:
- Roletkové menu - zde lze nastavit typ stínování
- Shaded + Multiple Scattering - výpočetně nejnáročnější typ, počítá s několikanásobným odrazem světla uvnitř materiálu a navíc zahrnuje stíny od jiných objektů
- Multiple Scattering - pouze několikanásobný odraz světla uvnitř materiálu
- Shaded - zobrazí se stíny od jiných objektů, zároveň se počítá s tím, že po průchodu objektem bude intenzita odraženého světla ubývat
- Shadowed - zobrazí se stíny okolních objektů, ale intenzita odraženého světla je v celém objemu tělesa stejná
- Shadeless - nepočítá ani úbytek intenzity světla, ani stíny okolních objektů
- External Shadows - umožňuje manuálně vypnout výpočet stínů od okolních objektů
- Light Cache - předpočítá světelné informace na základě voxelové mřížky; rychlejší, ale méně přesný výpočet
- Resolution - rozlišení voxelové mřížky, nižší číslo = rychlejší výpočet = menší kvalita
Tímto jsme se prokousali možnostmi Volume materiálů, pojďme si vše vyzkoušet v praxi. Našemu Domain objektu (krychli) nyní přidáme nový materiál typu Volume a nastavíme mu Density na 0. Proč? Protože kouř se bude renderovat na základě voxelových dat textury a při hodnotách vyšších než 0 by byl zřetelný objem krychle na úkor viditelnosti samotného kouře.
Density Scale nastavíme na požadované číslo, např. 5, záleží jen na tom, jak hrubý kouř mít chceme - tím, že Density je na nule, se Density Scale stává jediným parametrem, kterým lze ovlivnit hrubost kouře na renderu. Scattering nastavíme podle chuti, např. na hodnotu 3.
Posledním, co musíme udělat, je přidání textury. Přepneme se do záložky Textures a přidáme novou texturu typu Voxel Data
V záložce Voxel Data nastavíme v kolonce Domain Object naši krychli:
Posledním, co musíme udělat, je zatrhnout volbu Density na paletce Influence (nově se v Blenderu nastavuje mapování textury přímo u textury a ne u materiálu - konečně). Z nějakého záhadného důvodu mi ale Blender původně nechtěl renderovat tak, jak jsem předpokládal. Místo jedné simulace kouře jsem měl 5x5x5 minisimulací rozprostřených v celém objemu Domain objektu. Pomohlo až nastavení pětkrát menší velikosti mapování (hodnota Size v Mapping paletce), tedy 0,2 pro každý koordinát X, Y i Z. Nyní máme hotovo:
I když ještě implementace simulátoru kouře do Blenderu není kompletní, rozhodně je vidět kus práce a při troše experimentování, ke kterému jsem vás, doufám, aspoň trochu naladil, lze dosáhnout překvapivých výsledků. Těším se příště na shledanou.
Tématické zařazení:
Diskuse k článku
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014