OpenSceneGraph

z Wikipédie, slobodnej encyklopédie
Prejsť na: navigácia, hľadanie
OpenSceneGraph
Osglogo2.0.png
Logo
Základné informácie
Posledná stabilná verzia 3.0.1 (31. júl 2011; pred 1149 dňami )
Posledná aktuálna verzia 3.1.3 (7. september 2012; pred 745 dňami )
Operačný systém Viacplatformový softvér
Dostupné jazyky C++
Licencia OpenSceneGraph Public License (odvodená od LGPL)
Ďalšie odkazy
Webová stránka www.openscenegraph.org, www.openscenegraph.com

Computer n screen.svg Pozri aj Informačný portál

OpenSceneGraph (OSG) je open source API pre tvorbu 3D grafických aplikácií so širokým spektrom uplatnenia od vedeckej vizualizácie, vizuálnej simulácie, cez počítačové hry až po virtuálnu realitu.

Ide o multiplatformný toolkit postavený nad OpenGL. Vývojovým jazykom je primárne C++, existujú však aj prepojenia na jazyky Java, Python a Lua.[1]

História[upraviť | upraviť zdroj]

Projekt OpenSceneGraph začal pre vlastnú potrebu tvoriť Don Burns roku 1998 v prostredí operačného systému Linux. Následne v roku 1999 sa k nemu pripojil Robert Osfield, ktorý pracoval na prenesení hotových súčastí na platformu Microsoft Windows. V septembri 1999 boli zdrojové súbory uvoľnené ako open source a vznikla aj oficiálna stránka projektu. Ku koncu roka prebral Robert vedúcu úlohu a začal rozsiahly refactoring celej kódovej banky, snažiac sa o modernizáciu, zahrnutie najnovších štandardov C++ a čo možno najlepšie využitie návrhových vzorov.

V apríli 2001 vzhľadom na rozrastajúcu sa komunitu užívateľov a čoraz väčší záujem verejnosti po celom svete, Robert Osfield založil OpenSceneGraph Professional Services, službu poskytujúcu školenia, dlhodobú komerčnú podporu a konzultačné služby vývojárom aplikácií postavených na OSG. Došlo tak k úplnej profesionalizácii projektu.

Prvou oficiálnou "celou" stabilnou verziou bola verzia 1.0 vydaná roku 2005. Následne roku 2007 prišla rozšírená verzia 2.0, pridávajúca okrem iného podporu viacjadrových a multi-gpu systémov, niekoľko dôležitých NodeKits a prechod k využívaniu unifikovaného multiplatformného build systému CMake. V tom čase sa tiež objavili prvé knihy a oficiálne užívateľské príručky.[2]

Projekt rýchlo rástol a stával sa čoraz populárnejším. Pod aktuálnou stabilnou verziou (3.0.1, vydaná 31.7.2012) je už podpísaných viac ako 480 prispievateľov a oficiálny mailing list projektu obsahuje tisíce mien.[3]

Vlastnosti[upraviť | upraviť zdroj]

Základom OpenSceneGraph-u je myšlienka tzv. grafu scény. Ide o dátovú štruktúru, ktorá usporadúva logickú a priestorovú štruktúru grafickej scény acyklickým grafom. Scéna je hierarchicky organizovaná do stromovej štruktúry s uzlami s rôznym počtom potomkov. Jednotlivé uzly môžu predstavovať buďto jednotlivé objekty v scéne, skupiny objektov, množiny transformácií, ktoré majú byť aplikované na potomkov alebo pridružené pomocné informácie. Listy potom predstavujú jednotlivé modely objektov, teda samotnú geometriu scény.

Vzájomné vzťahy objektov zachytené týmto usporiadaním umožňujú jednoduchú implementáciu niektorých algoritmov riešiacich viditeľnosť v scéne a optimalizáciu zobrazovania, čím sa zvyšuje výkonnosť a zjednodušuje napr. práca s priehľadnosťou a blending všeobecne.

V aktuálnej verzii ponúka knižnica okrem iného

  1. View frustum, occlusion a small feature culling
  2. Level of Detail
  3. Najnovšie rozšírenia OpenGL
  4. Viacvláknové aplikácie
  5. State sorting, lazy state updating
  • Podpora širokého spektra 2D a 3D formátov
  • Podpora práce s kvalitnými antialiasovanými fontmi
  • Prácu s rozsiahlymi terénmi
  • Podporu pokročilých particle systémov
  • Natívnu integráciu s okennými systémami hlavných platforiem a jednoduchú previazateľnosť s cross-platform GUI toolkitmi

Ďalšie smerovanie[upraviť | upraviť zdroj]

V ďalších verziách je zámerom vývojárov najmä rozšíriť podporu OpenGL ES, zobrazovanie tieňov a vylepšiť prácu s volumetrickými dátami. Tiež by malo dôjsť k rozšíreniu NodeKits pre prácu s 3D GUI.[4]

Súčasti[upraviť | upraviť zdroj]

Balík knižníc OSG je možné rozdeliť do niekoľkých kategórií. Základom je súbor takzvaných Core knižníc (osg, OpenThreads, osgUtil a osgDB), doplnená knižnicami a nástrojmi pre zobrazovanie, prácu s okennými systémami a GUI (osgViewer, osgGA), Nodekits, zásuvnými modulmi a exportérmi pre modelovacie nástroje (3DSMax, Maya, Blender) a zväčša komunitnými projektmi zabezpečujúcimi podporu ďalších programovacích jazykov okrem C++.

Core[upraviť | upraviť zdroj]

Jadro OpenSceneGraphu tvoria štyri základné moduly – osg, osgDB, osgUtil a OpenThreads.

osg zabezpečuje konštrukciu a manipuláciu scene graphu. Jej súčasťou sú triedy reprezentujúce rôzne typy uzlov grafu scény, samotnú geometriu, abstrakciu nad OpenGL stavovým strojom, geometrické transformácie a matematické triedy pre vektorové a maticové operácie v 3D priestore. Dôležitou súčasťou je aj funkcionalita pokročilej správy pamäte.

Pre prácu s najrozšírenejšími 2D a 3D súborovými formátmi, ako aj abstrakciu I/O zariadení slúži modul osgDB.

osgUtil je renderovacím backendom, starajúcim sa o prechod grafom scény, culling a transformáciu do série volaní OpenGL. Poskytuje tiež základné možností manipulácie s objektami v scéne, tzv. picking.

Platformovo nezávislé, minimálne a kompletné objektovo orientované vláknové rozhranie poskytuje knižnica OpenThreads.

osgViewer[upraviť | upraviť zdroj]

Knižnica osgViewer poskytuje pohodlnú a rýchlu cestu vizualizácie zostaveného scene graphu. Predstavuje tiež platformne nezávislú abstrakciu nad prácou s rôznymi okennými systémami.

NodeKits[upraviť | upraviť zdroj]

Súčasťou balíka OSG je aj množina takzvaných NodeKits, čo sú hotové riešenia netriviálnych, často sa objavujúcich problémov, resp. pokročilejších komponent 3D grafických aplikácií. Najdôležitejšími sú:

  • osgAnimation – Práca s kostrovými modelmi, ich animácia a morphing.
  • osgFX – Špeciálne efekty a postprocessing obrazu.
  • osgManipulator – Interaktívne 3D ovládanie.
  • osgParticle – Pokročilá práca s particle systémami.
  • osgQt – Integrácia s Qt toolkitom a začlenenie prvkov QtGUI do OSG aplikácií.
  • osgShadow – Framework pre techniky zobrazovania tieňov.
  • osgTerrain – Zobrazovanie rozsiahlych terénov.
  • osgText – Kvalitné zobrazovanie antialiasovaných fontov, TrueType a FreeType fonty.
  • osgVolume – Volume rendering a práca s volumetrickými dátami.
  • osgWidget – Tvorba jednoduchých užívateľských rozhraní.

Technológie[upraviť | upraviť zdroj]

OpenSceneGraph je napísaný v štandarde jazyka C++, využívajúc možnosti STL (Standard Template Library) a v čo najvyššej možnej miere uplatňujúc návrhové vzory OOP. Okrem C++ existujú prepojenia na jazyky Java (JavaOSG), Python (pyOSG), Lua (osgLua, resp. osgToy) a C#/.Net (osgDotNet).

Celá knižnica je koncipovaná modulárne s dôrazom na upraviteľnosť a jednoduchú rozšíriteľnosť.

Projekt je vystavaný nad OpenGL, v súčasnosti podporujúc možnosti OpenGL 1.0 – 4.2, ako aj OpenGL ES do verzie 2.0. Zabezpečená je tak ako kompatibilita so starším hardvérom, tak aj sprístupnenie možností poskytovaných tým najnovším.[1]

Platformy[upraviť | upraviť zdroj]

OpenSceneGraph v súčasnosti podporuje vývoj pre všetky dôležité operačné systémy, medzi inými Linux, MS Windows, Mac OS X, FreeBSD, IRIX, či Solaris. Od verzie 3.0.0 je knižnica tiež dostupná pre mobilné platformy iOS a Android.

Výhody a využiteľnosť[upraviť | upraviť zdroj]

Knižnica OpenSceneGraph svojim užívateľom poskytuje množstvo výhod oproti práci priamo s nízkoúrovňovými grafickými rozhraniami, ako je OpenGL.

Medzi tie najdôležitejšie patria:[1]

Výkon[upraviť | upraviť zdroj]

Vďaka zahrnutiu pokročilých vlastností OpenGL (state sorting, vertex buffer objekty, podpora GLSL), pokročilých metód riešenia viditeľnosti v 3D scéne (view frustum, small feature, occlusion culling), či Level of Detail priamo v jadre knižnice ide o jeden z najvýkonnejších zobrazovacích nástrojov.

Produktivita[upraviť | upraviť zdroj]

Jadro grafu scény zapuzdruje väčšinu funkcionality OpenGL vrátane najnovších rozšírení, poskytuje optimalizáciu pri renderovaní (culling, sorting) a celý súbor doplnkových knižníc, ktoré umožňujú vytvárať veľmi rýchlo vysoko výkonné grafické aplikácie. Vývojár sa tak nemusí sústrediť na nízkoúrovňový kód.

Zavádzače databáz[upraviť | upraviť zdroj]

Súčasťou jadra OSG je databázová knižnica osgDB, umožňujúca jednoduchú a rýchlu prácu s množstvom multimediálnych súborových formátov. V súčasnosti sa skladá z viac ako päťdesiatich rôznych pluginov pre spracúvanie 3D databázových a obrazových formátov.

Medzi podporované 3D formáty patria napríklad COLLADA, LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio MAX (.3ds), DirectX (.x) a mnoho ďalších. OpenSceneGraph tiež umožňuje využitie natívneho ASCII .osg formátu.

Obrazové formáty zahŕňajú .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds, .tga a quicktime.

V neposlednom rade je tiež nutné spomenúť podporu FreeType a TrueType, ako aj obrazových (.txf) fontov.

Prenositeľnosť[upraviť | upraviť zdroj]

Jadro knižnice je navrhnuté s dôrazom na minimalizáciu závislosti na konkrétnej platforme, spoliehajúc sa v zásade iba na štandardné C++ a OpenGL. Dôležitá je tiež nezávislosť na konkrétnom okennom systéme. Prostredníctvom osgViewer je zabezpečená natívna podpora Win32 (MS Windows), X11 (Unix-based systémy) a Carbon (OSX). Jednoducho je tiež možné knižnicu prepojiť s ďalšími okennými a GUI toolkitmi, ako sú Qt, WxWidgets, GLUT, FLTK, SDL, Cocoa a MFL.

Škálovateľnosť[upraviť | upraviť zdroj]

Vďaka podpore viacerých grafických kontextov a silne optimalizovaným prechodom grafom scény, ako aj rozsiahlej podpore viacvláknových aplikácií je možné OpenSceneGraph používať na širokej škále zariadení, od mobilných až po najnovšie viacjadrové, multi-gpu systémy.

Prístupnosť[upraviť | upraviť zdroj]

Súčasťou distribúcie OSG je aj rozsiahla zbierka príkladov a demonštračných aplikácií, názorne prezentujúcich jednotlivé pokročilé možnosti knižnice, ako aj vzorový dataset obsahujúci modely, textúry a ďalšie zdroje využiteľné pri rýchlom prototypovaní aplikácií.

Existuje tiež niekoľko kníh, od začiatočníckych až po profesionálne, rozsiahla kvalitná dokumentácia a živá komunita vývojárov a užívateľov.[2][5][6] K dispozícii je tiež profesionálna technická podpora pre komerčné produkty.[7]

Použitie[upraviť | upraviť zdroj]

OpenSceneGraph samotný neposkytuje žiadne nadstavby pre tvorbu hernej logiky, ide o vizualizačný a animačný nástroj. Pre tvorbu herných aplikácií alebo takzvaných "serious games" existuje niekoľko kompletných enginov, najznámejším z ktorých je pravdepodobne Delta3D, využívajúcich OpenSceneGraph práve ako základ pre grafický rendering.

Zaujímavými projektmi postavenými nad OSG sú napríklad Virtual Terrain Project, alebo ViewTec TerrainView. Medzi užívateľmi môžeme ďalej nájsť spoločnosti ako Boeing, NASA, FlightGear, Norcontrol a ďalšie.[8][9][10][11][12]

Pozri aj[upraviť | upraviť zdroj]

Referencie[upraviť | upraviť zdroj]

  1. a b c OpenSceneGraph Features [online]. [Cit. 2012-11-28]. Dostupné online. (po anglicky)
  2. a b Martz, P.: OpenSceneGraph Quick Start Guide. Louisville, USA, 2007.
  3. OpenSceneGraph - History [online]. [Cit. 2012-11-28]. Dostupné online. (po anglicky)
  4. . Dostupné online.
  5. Wang R., Qian X.: OpenSceneGraph 3 CookBook. Packt Publishing, Birmingham, 2012
  6. Wang R., Qian X.: OpenSceneGraph 3.0 Beginner's Guide. Packt Publishing, Birmingham, 2010.
  7. OpenSourceGraph - professional support [online]. [Cit. 2012-11-28]. Dostupné online. (po anglicky)
  8. . Dostupné online.
  9. . Dostupné online.
  10. . Dostupné online.
  11. . Dostupné online.
  12. . Dostupné online.