Animace pro CAVE - Dynamická simulace částic

Složení týmu: Adam Kučera, Roman Polášek

Zadání

Prostudujte algoritmy pro dynamickou simulaci částic a naimplementujte demo, které bude bude prezentovat možnosti částicového systému a bude umožňovat jednoduchou interakci. Předpokládejte portaci aplikace pro zařízení CAVE.

Rešerše

Částice jsou malé objekty, které mají hmotnost, pozici, rychlost a reagují na síly, ale nezabírají žádný prostor. Protože jsou tak jednoduché, jsou nejjednoduššími objekty k simulaci. Přes jejich jednoduchost dokážou reprezentovat řadu zajímavých jevů a efektů. Částicové systémy se simulují nejen chování samotných částic, ale i sil (například gravitace, vítr) a jiných těles, které na částice působí.

Částicovým systémem je možné simulovat:

  • vodu
  • oheň
  • kouř
  • mlhu
  • krev
  • sníh
  • exploze
  • a mnoho dalších…

Potřebné informace pro vyřešení úlohy jsme čerpali především z přednášky předmětu A4M39MMA z 2. týdne, která byla zaměřena právě na dynamiku a částicové systémy. Dobrým materiálem pro studium je i poskytnutý zdroj ve formě článku, jehož autorem je A. Witkin a který uvádíme níže v části věnované použité literatuře. Zaměřuje se hlavně na fyzikální podstatu problému.

Užitečným zdrojem je i Úvod do fyzikálních simulací, zveřejněný na webu nehe.ceske-hry.cz. Věnuje se popisu síly a pohybu částic, aplikaci síly na objekty, chování v gravitaci i případu objektu spojeného pružinou s bodem. Stránka poskytuje nejen podrobný popis všech částí, týkajících se vytvoření částicového systému, ale dává k dispozici i ukázku zdrojových kódů ke každé významné části.

Podobný tutoriál na tvorbu částicového systému popisuje i web paraschopra.com, který rovněž k uváděným částem poskytuje i zdrojové kódy.

Dobré vizuální ukázky toho, co vše lze pomocí částicových systémů vytvářet, jsou k vidění na serveru YouTube. Ukázka 1 Ukázka 2 .

Zajímavá interaktivní ukázka částicového systému je k vidění zde (je nutno mít připojený mikrofon).

Námi vybraným řešením je implementace částicového systému, který bude zaměřen na sníh a sněhové vločky. K tomuto účelu bude nutné naimplementovat jednoduchý fyzikální engine, který by dokázal chování jednotlivých částic věrohodně simulovat a který by měl být použitelný s jinými parametry i na další druhy využití částicového systému.

Spolu s implementací enginu bude nutné vyřešit rovněž interakci, kterou bude možné ve virtuálním prostředí provádět. Jedním z nápadů je kromě padajícího sněhu a simulace bouře i vrhání sněhových koulí.

Řešení bude implementováno v jazyce C++ a OpenGL.

V částicovém systému, který budeme simulovat, se pokusíme věrně napodobit chování sněhových vloček. Celý program bude určitou variací hry typu „Snowball fight“ ("Snowball fight"). Interakce se bude odehrávat házením sněhových koulí na určité „terče“, po jejichž zasažení se sněhová koule „rozprskne“ v oblak sněhových vloček, jež se budou dále chovat jako „správně vychované“ sněhové vločky. Budou se pomalu snášet k zemi podle podmínek, které budou v aktuální době v prostředí panovat (například směr a síla větru v prostředí). Nebudeme pro tento částicový systém implementovat systém kolizí, u vložek je to zcela nepodstatné vzhledem k jejich povaze a téměř nemožnosti zahlédnout kolize na takto malých částicích pouhým okem. Koncept neodpovídá realistickému chování sněhové koule, ale jako demonstrační příklad částicového systému (vloček) jej považujeme za dostačující. Házení pomyslných sněhových koulí chceme implementovat hlavně kvůli interakci uživatele s aplikací.

Na pohyb sněhové vločky mají zásadní vliv tyto faktory:

  • hmotnost vločky
  • plocha vločky
  • vítr okolí
  • rychlost vločky
  • hustota prostředí
  • gravitační síla
  • prostorové uspořádání vločky

Poslední uvedené je velmi obtížné věrně a rychle simulovat. Využijeme proto určitou aproximaci pseudonáhodnou funkcí. Prvotní „nástřel“ byl implementován ve Flashi a jde o dvourozměrnou abstrakci problému.

Šedým kruhem vlevo nahoře lze ovládat sílu a směr větru:

leaf.swf

Literatura

 
a4m39mma/1.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