Animace pro CAVE - Vizualizace teplotního pole

Autoři: Jiří Uher, Aleš Zavadský

Popis zadání

Navrhněte aplikaci pro CAVE, kde bude možné interaktivně simulovat šíření tepla v pevném prostředí. Vizualizace teplotního pole musí být dostatečně názorná a pochopitelná pro uživatele. Bylo by také dobré mít v aplikaci více různých materiálů, kde budou patrné rozdíly. Ovládání by mělo být jednoduché, bude potřeba vymyslet způsob dodání tepla do scény a jeho množství (čas působení na ostatní pevná tělesa), nejvhodnější by byl nějaký pohyblivý virtuální objekt.

Rešerše

Animace tepelného záření spadá do oblasti Fluidní dynamika. Při hledání podkladů jsme vycházeli z 3. přednášky Romana Berky Fluidní dynamika v počítačové animaci a také z nabízené stránky Jos Stama, který se touto problematikou zabýval. Nejzajímavější zdroj, co jsme využili, byl Real-Time Fluid Dynamics for Games, PDF a zdrojové kódy příkladů.

Termíny:

  • Skalární pole - Funkce přiřazující skalár nějakému místu v prostoru f(x,y,z)→ℜ .
  • Rychlostní pole - Vektorové pole rychlostí, kde v každém místě prostoru je definován vektor rychlosti toku nějakého média, které hýbe naším fluidem (prostředí).
  • Hustotní pole - Skalární pole hustot, kde v každém místě prostoru je definována velikost hustoty našeho fluida (tedy tepelného záření).
  • Gradient - Určuje v každém bodě prostoru směr největšího růstu nějaké veličiny. Jedná se matematicky o parciální derivaci podle dílčích proměnných.
  • Divergence - Míra toku skrz nekonečně malý objem kolem určitého bodu.
  • Difuze - Jev, při kterém se rozptylují částice fluida z prostředí hustšího do méně hustého, až dojde k rovnovážnému stavu.
  • Okrajové podmínky - Složitější případy pohybu fluida nastávají na okrajích simulovaného prostoru. Může dojít k různým jevům, jako odražení záření od hran, jeho zastavení, případně se okrajovými podmínkami dají simulovat i přechody mezi různými materiály.

Fyzikálně je pohyb tekutin popsán Navier-Stokesovými rovnicemi, popisují zákon zachování hybnosti a hmotnosti. Numerické řešení na dnešních počítačích je proveditelné v reálném čase. Problém většinou nastává s nestabilním řešením rovnic na okrajích. Jos Stam přišel se zjednodušením. Rozdělil řešení na dvě části, spočítal příspěvky pohybů od hustotního a rychlostního pole zvlášť.

Zjednodušeně simulační proces probíhá tak, že se nějaká oblast rozdělí rovnoměrně na dílky. Pro každý z nich se ve smyčce počítají informace o silách, zdroji hustoty, změně rychlostního vektoru a změně hustoty. Nakonec se vizualizuje hustotní pole. Při počítání hustoty přichází v úvahu i difuse a pohyb podél rychlostního pole. Pro hraniční podmínky obsahuje mřížka další vrstvu buněk (viz obrázek).

Mřížka buněk

výpočetní mřížka

Pro inspiraci jsme využili Stable solver v příkladech od Jos Stama. V rovnicích se objevuje několik koeficientů jako koeficient tření a podobně. Jejich vhodnou kombinací nastavení a zkoušením jsme docílili uvěřitelného efektu tepelného proudění.

Navier-Stokes rovnice pro rychlost ve vektorovém zápise (nahoře) a rovnice pro hustotu pohybu přes rychlostní pole (dole)

Navier-Stokes rovnice pro rychlost ve vektorovém zápise (nahoře) a
rovnice pro hustotu pohybu přes rychlostní pole (dole)

Zobrazení přenosu tepelné veličiny

Zobrazení přenosu tepelné veličiny

Samotná vizualizace prostředí je koncipována jako průchod místnostmi s plochými stěnami. Každá stěna má různý materiál (jinak nastavené koeficienty pro šíření tepla). Do scény je přidán virtuální objekt koule, se kterým je možné volně manipulovat. S jeho pomocí uživatel ohřívá stěny místnosti a sleduje tepelné mapy na jejich povrchu. Teplota koule se dá volně zvyšovat a snižovat. Čím blíže je koule ke stěně, tím větší má vliv na její ohřev a při jejím pohybu se tato akce projeví v rychlostním poli a to bude mít vliv na proudění tepla.

 
a4m39mma/9.txt · Poslední úprava: 2010/12/11 12:20 (upraveno mimo DokuWiki)
 
Kromě míst, kde je explicitně uvedeno jinak, je obsah této wiki licencován pod následující licencí: GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki