Blender 2.5: Kouř a volumetrické materiály - 3D grafika - 3Dscena.cz: 3D grafika jako na dlani

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:



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:

Kouř ve 3D okně

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:

Plane s particly

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:

Nastavení renderu částic

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):

Nastavení Flow
  • 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ílné nastavení parametru Density
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:

Nastavení kouře
  • 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í:

Smoke field weights

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
  • 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
Najdi 10 rozdílů
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:

Smoke Groups

Prošli jsme si tedy všechna nastavení, nyní stačí stisknout jen ALT+A a nechat simulaci vypočítat:

Hustej dým

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í:

Materiálové 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:

Volby nasvícení
  • 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

Textura typu Voxel Data

V záložce Voxel Data nastavíme v kolonce Domain Object naši krychli:

Nastavení Domain Object

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:

Render

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í:

 » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: