OpenSceneGraph

História

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 Osﬁeld 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.
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.

Ďalšie smerovanie

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.

Súčasti

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

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

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.

Technológie

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.

Platformy

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ť

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:

Výkon

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

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

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ť

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ť

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ť

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. K dispozícii je tiež profesionálna technická podpora pre komerčné produkty.

Použitie

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.