120 likes | 228 Views
Vizualizace částicových systémů. Marek Gayer xgayer@fel.cvut.cz Computer Graphics Group Department of Computer Science and Engineering Faculty of Electrical Engineering of CTU. Cíle. Vizualizace pro obecné 3D částicové systémy Zvláštní zřetel na potřeby vizualizace spalovacích procesů
E N D
Vizualizace částicových systémů Marek Gayerxgayer@fel.cvut.cz Computer Graphics Group Department of Computer Science and Engineering Faculty of Electrical Engineering of CTU
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 MGL
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
Výsledky • Zpracoval jsem okolo 10 particle systémů: • Particle systém API – profesionáĺní systémwww.cs.unc.edu/~davemc/Particle/ • [ f l o w] animation softwarewww.reptilelabour.com • nVidia Particle Systems Demohttp://www.nvidia.com • Shammi Particle systemhttp://cgl.bu.edu/GC/shammi/
Výsledky • Tom Valesky's – simulace explozíhttp://patriot.net/~tvalesky/752/ • Nehe OpenGL tutorials – Lesson 19http://nehe.gamedev.net/ • J. Dobry – Triangle speeds performancehttp://home.zcu.cz/~jdobry • GISMOS – molekulární P.S.http://garm.teokem.lu.se/gismos/ • Designing and Implementing Particle Systems in OpenGL - Trinity College Dublinwww.insa-lyon.fr/People/AEDI/tprucher/body/
Výsledky • Topics In Computer Graphics Winter 1996Particle Systemswww.mdc.net/~mrz5149/particle.html • Thorn Screensaver 1.1www.acc.umu.se/~kegie/
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
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ě http://www.gayer.ws/en/projects/mps/
Rychlosti vykreslování v rámcích/s • Vykreslování pomocí OpenGL vektorových polí, elementů a zamykání příliš nezrychluje 50 000 č P L T Q PE PA PEL PAL ================================================= Celeron 413 10 8 6 5 10 10 10 10 S3 Savage 4 15 8 7 6 15 - 14 - Matrox G200 23 14 10 8 9 22 13 13 GeForce 2 30 15 13 11 34 34 34 34 TNT 2 PCI 35 10 14 11 25 39 21 22 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
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
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);