Davy v počítačové grafice
description
Transcript of Davy v počítačové grafice
![Page 1: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/1.jpg)
Davy v počítačové grafice
Jakub Fintora
![Page 2: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/2.jpg)
Úvod
• Dav– Častý fenomén• Vizualizace simulací (evakuace, nepokoje,…)• Zábavní průmysl
– Částicový systém– Animované nebo statické částice– Rychlost vs. Rozmanitost
![Page 3: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/3.jpg)
Reprezentace částice
• Vertex buffer – Pozice– Normála– UV souřadnice– Údaje pro skeletální animace
• Index buffer – spojení vrcholů do sítě
![Page 4: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/4.jpg)
Skeletální animace
• Dynamika částice• Skeleton - hierarchie• Kloub• Klíčové snímky• BVH – Biovision Hierarchy
Zdroj: http://doc.gold.ac.uk/~mas02mg/IntroToAV/lectures/skeleton.png
![Page 5: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/5.jpg)
MakeHuman
• makehuman.org• Otevřený kód (Python + C)• Parametrické modelování• Princip– Jedna základní trojúhelníková síť– Změny v podobě vektorů posunů konkrétních
vrcholů základní trojúhelníkové sítě• Export – OBJ, COLLADA
Zdroj: http://makehuman.org/sites/mhnew.jwp.se/files/mhlogo3.png
![Page 6: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/6.jpg)
Navržené řešení
• Použití dat exportovaných z MakeHuman• Převedení dat ze souborů do datových
struktur přístupných grafickou kartou• Generování davu• Vykreslování davu• Implementace: SPA framework + DirectX
![Page 7: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/7.jpg)
Vykreslování davu
• Shadery• Geometry instancing• Řešení skeletálních animací– Přečtení pohybových dat na základě adres z vertex bufferu– Složení dílčích transformačních matic kloubů– Vytvoření výsledné transformační matice, vynásobením
dílčích matic vahami a sečtením• Umístění ve scéně• Zobrazení s odlišnými barvami pleti
![Page 8: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/8.jpg)
Převedení do datových struktur
• Výsledkem je:– Vertex buffer– Index buffer– Hierarchie a proporce kostry– Textura s pohybovými daty– Pole sémantických údajů
![Page 9: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/9.jpg)
Souvislost datových struktur
![Page 10: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/10.jpg)
Generování davu
• Druhý vertex buffer (instance buffer)• Náhodně vygenerované atributy– Startovní klíčový snímek– Rozestupy– Odstín pleti
![Page 11: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/11.jpg)
Výsledky• Nejnáročnější částí
– skládání transformací vertexů.– pokles rychlosti v průměru o 80%
• Desynchronizace animací– počet různých startovních snímků animace = počet všech klíčových
snímků.• Odstíny barvy pleti
– Počet možných kombinací -2678 – Podle pravidla:
• d = 15% - 20% rozsahu jednoho barevného kanálu • r = náhodné číslo v rozsahu jednoho barevného kanálu• b = r – d• g = (r + b)/2
![Page 12: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/12.jpg)
Vykreslený dav
![Page 13: Davy v počítačové grafice](https://reader036.fdocuments.net/reader036/viewer/2022081421/568165cb550346895dd8d779/html5/thumbnails/13.jpg)
Závěr
• Data z projektu MakeHuman jsou vhodná• Je třeba využít HW akcelerace– Geometry instancing
• Výpočetně nejnáročnější částí – skeletální animace