Uživatelské nástroje

Nástroje pro tento web


pitel:msz:scenegraph

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

/var/www/wiki/data/pages/pitel/msz/scenegraph.txt · Poslední úprava: 30. 12. 2022, 13.43:01 autor: 127.0.0.1