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:

Vybudování CSS

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

volně šiřitelné 3D API

napsáno v C++ nad OpenGL

Implementace optimalizací:

Pohledový kužel

Zanedbání zakrytých těles

Úroveň detailu

Multi-threading

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

Java 3D