Důležité knihovny pro práci s grafem 3D scény
Graf scény je obecná datová struktura běžně používaná ve vektorově založených grafických programech. Je užitečný pro dnešní moderní počítačové hry, kde je potřeba reprezentovat a mít v paměti uložené velmi rozlehlé části světa.
Uzly v těchto grafech obvykle reprezentují objekty nebo nějaké obecné entity ve scéně. Na tyto uzlu je možné navázat další uzly, které rozšiřují původní objekt. Třeba mějme kapotu auta jako jeden uzel, potom na něj můžou navazovat další čtyři uzly, které reprezentují kola. Tím vznikne jako celek automobil.
Implementace
Nejjednodušší a také naivni implementací je dynamický spojový seznam, ve kterém jsou uloženy za sebou všechny objekty, které se ve scéně ncházejí. Vykreslení takového seznamu a nebo jakákoliv jiná operace nad ním, potom spočívá v lineárním prohledábáním tohoto seznamu a zpracováním. Lze použít jen u velmi jednoduchých scén.
Mnohem lepší a v praxi používanější implementací je použít nějakou stomovou reprezentaci. Kde objekty jako takové jsou uloženy v listech a jejich hierarchie je daná spojováním do uzlů.
Knihovny pro práci s grafem scény
PHIGS
PHIGS
První specifikace grafu scény
API standard pro rendrování 3D grafiky
ANSI standardem se stal v 1988
Vzniklo mnoho nekompatibilních implementací
Modely vznikají vzájemným propojováním primitiv a jejich atributů do stromu, který se nazývá
CSS (
Centralize Structure Store)
Zobrazení probíhá ve třech krocích:
-
Vytvoření pracovního prostoru a jeho otevření
Napojení modelu do pracovního modelu. V tuto chvíli dojde k bezokladnému rendrování modelu. Jakákoliv budoucí změna modelu bude automaticky ihned promítnuta do pracovního prostoru a zobrazena.
S nástupem OpenGL bylo PHIGS postupně odsouváno do ústraní kvůli rozdílné filozofii práci OpenGL jako stavového stroje a PHIGS jako systému, který neuchovává žádně stavy.
PHIGS+
* Přidává možnost definování osvětlení 3D scény
* Zavádí nové a složitější primitiva, jako třeba NURBS
Open Inventor
Open Inventor
API nabízející vyšší abstrakci pohledu na rendrování grafiky než samotné OpenGL
Snazší a efektivnější programovaní aplikací
Objekty mohou být sestaveny z velkého počtu předpřipravených tvarů
OI se automaticky stará o optimální vykreslení scény v OpenGL
Graf scény je možné uložit celý do souboru a následně je načíst zpět
Na druhou stranu OI ma tendenci být obecně pomalejší, než dobře napsané vykreslení scény přímo v OpenGL
OpenSceneGraph
OpenSceneGraph
-
napsáno v C++ nad OpenGL
Implementace optimalizací:
Obsahuje nástroje pro načítání standardních formátů jako OBJ, 3DS, JPEG, PNG
Implementace částicových filtrů
OGRE
OGRE
Moderní 3D engine
Multiplatformní, podporuje jak OpenGL tak i DirectX
Shadery GLSL, HLSL, Cg a přímo assembler
Umožňuje vytvoření progrsivního LOD modelu terénu
Optimalizace zobrazení scény přes octree, BSP a nebo portály
Java 3D