Vizualizace částicových systémů Marek Gayer Computer Graphics Group Department of Computer Science and Engineering Faculty of Electrical Engineering of CTU
2 Cíle Vizualizace pro obecné 3D částicové systémy Zvláštní zřetel na potřeby vizualizace spalovacích procesů Atributy – souřadnice, velikost a barva bodu Úplná nezávislost na datových typech Rychlost a stabilita Možnost použít moduly pro výstup systému (OpenGL, zápis na disk, obrázky a animace) Koncepce - nadstavba knihovny MGLMGL
3 Postup řešení Prozkoumání zdrojových kódů jednoduchých částicových systémů na internetu Rozšíření a doplnění vybraného stávajícího systému, nebo vytvoření zcela nového Integrace do knihovny MGL Optimalizace pro OpenGL extense Provedení testů na jednoduchých příkladech
4 Výsledky Zpracoval jsem okolo 10 particle systémů: Particle systém API – profesionáĺní systém [ f l o w ] animation software nVidia Particle Systems Demo Shammi Particle system
5 Výsledky Tom Valesky's – simulace explozí Nehe OpenGL tutorials – Lesson J. Dobry – Triangle speeds performance GISMOS – molekulární P.S. Designing and Implementing Particle Systems in OpenGL - Trinity College Dublin
6 Výsledky Topics In Computer Graphics Winter 1996 Particle Systems Thorn Screensaver
7 Výsledky – systém MPS Vizualizace řádově desetitisíců částic Systém nabízí pro vizualizaci body, trojúhelníky, čtverce nebo úsečky Využívá vykreslování OpenGL elementů a polí a extensí pro jejich zamykání Celkem 8 různých metod vykreslování Atributy – pozice, barvy, vektor rychlosti Nejlepší výsledky jsou dosahovány prostým kreslením bodů nebo úseček
8 Výsledky – systém MPS Lze nastavit velikost pro všechny elementy Lze snadno rozšířit přidáním vlastních funkcí – např. pro zápis na disk, obrázky, … Snadné nastavení parametrů – ukazatelů polí v jazyce C - pomocí funkcí modulu Pro jednoduché GUI používá knihovnu MGL Testoval jsem na jednoduchém příkladě
9 Obrazovka ukázkového příkladu
10 Rychlosti vykreslování v rámcích/s Vykreslování pomocí OpenGL vektorových polí, elementů a zamykání příliš nezrychluje č PLTQPEPAPELPAL ================================================= Celeron S3 Savage Matrox G GeForce TNT 2 PCI Všechny částice byly před měřením rychlosti vizualizace předpočítány a jejich parametry byly uloženy do příslušných polí požadovaných systémem MPS
11 Systém MPS – soubor mps.h typedef float mpsVectorsType [3]; typedef float mpsDsType [3]; typedef float mpsColorsType [4]; #define MPS_POINTS 0 #define MPS_LINES 1 #define MPS_TRIANGLES 2 #define MPS_QUADS 3 #define MPS_POINTELEMENTS 4 #define MPS_POINTARRAYS 5 #define MPS_POINTELEMENTSLOCKED 6 #define MPS_POINTARRAYSLOCKED 7 #define MPS_DRAWMETHODMAX 8
12 Systém MPS – soubor mps.h extern float mpsPointSize; extern float mpsMaxPointSize; void mpsSetupPointSize (float size); void mpsInit (void); void mpsSetupVector (float *vector); void mpsSetupD (float *d); void mpsSetupColors (float *colors); void mpsSetupLength (int length); char *mpsGetMethodName (int method); void mpsDraw (int method);