OpenSceneGraph - OpenSceneGraph

OpenSceneGraph
Osglogo2.0.png
Stabilní uvolnění
3.6.5 / 31. ledna 2020 ; Před 18 měsíci ( 2020-01-31 )
Úložiště Upravte to na Wikidata
Napsáno C ++
Operační systém Cross-platform
Typ 3D grafika
Licence Veřejná licence OpenSceneGraph ( založená na LGPL )
webová stránka www .openscenegraph .org
www .openscenegraph .com

OpenSceneGraph je open-source 3D grafické aplikační programovací rozhraní (knihovna nebo framework), které používají vývojáři aplikací v oblastech, jako je vizuální simulace , počítačové hry , virtuální realita , vědecká vizualizace a modelování .

Sada nástrojů je napsána ve standardu C ++ pomocí OpenGL a běží na různých operačních systémech včetně Microsoft Windows , macOS , Linux , IRIX , Solaris a FreeBSD . Od verze 3.0.0 podporuje OpenSceneGraph také vývoj aplikací pro mobilní platformy, konkrétně iOS a Android .

V roce 2021 bude projekt následován projektem VulkanSceneGraph, knihovnou založenou na Vulkanu. OpenSceneGraph je od roku 2019 ve fázi údržby.

Dějiny

Projekt OpenSceneGraph inicioval Don Burns v roce 1998. Robert Osfield se k projektu připojil v roce 1999 a pracoval na portování hotových komponent pro Microsoft Windows. V září 1999 byl projekt otevřen a byl vytvořen oficiální web projektu . Ke konci roku převzal projekt Osfield a zahájil rozsáhlé refaktorování stávající základny kódů s důrazem na modernizaci a přijetí moderních standardů C ++ a návrhových vzorů .

V dubnu 2001, s ohledem na rostoucí komunitu uživatelů a zájem veřejnosti, vytvořil Robert Osfield OpenSceneGraph Professional Services, poskytující komerční podporu, poradenské a školicí služby. To znamená plnou profesionalizaci projektu.

První oficiální stabilní verze OpenSceneGraph byla verze 1.0, vydaná v roce 2005. V roce 2007 následovala rozšířená verze 2.0, která přidala podporu pro vícejádrové a vícegpu systémy, několik důležitých NodeKits a použití unifikovaného multiplatformního build systému CMake . Byly představeny knihy a uživatelské příručky.

Projekt od té doby rychle roste a je stále oblíbenější. Pod aktuální stabilní verzí je podepsáno více než 530 přispěvatelů a oficiální seznam adres obsahuje tisíce jmen.

V roce 2019 byl projekt přesunut do fáze údržby, přičemž hlavní vývojové úsilí bylo směrováno do jeho nástupnického projektu VulkanSceneGraph.

Funkce

Image
Přehled architektury openscenegraph.

Funkce ve verzi 1.0:

  • Implementace grafu scén bohatá na funkce a široce přijatá
  • Podpora funkcí zvyšujících výkon
    1. Podívejte se na frustraci , drobné funkce a utracení okluze
    2. Úroveň detailu
    3. Třídění stavu a aktualizace líného stavu
    4. Rychlé cesty OpenGL a nejnovější rozšíření
    5. Optimalizace více vláken a optimalizace databáze
  • Podpora OpenGL od 1.1 do 2.0 včetně nejnovějších rozšíření
  • Pevně ​​spojená podpora pro OpenGL Shading Language, vyvinutá ve spolupráci s 3Dlabs
  • Podpora široké škály 2D obrazových a 3D databázových formátů, k dispozici jsou zavaděče pro formáty jako OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG a GeoTIFF
  • Účinky částic
  • Podpora vyhlazeného textu TrueType
  • Bezproblémová podpora pro objekty framebuffer , pbuffery a efekty vykreslování do textury vyrovnávací paměti
  • Podpora stránkování databáze s více vlákny, kterou lze použít ve spojení se všemi 3D databázemi a zavaděči obrázků
  • Generování stránkované databáze geoprostorového terénu ve velkém měřítku
  • Podpora introspekce pro základní knihovny umožňující externím aplikacím dotazovat, získávat, nastavovat a provozovat všechny třídy v grafu scény prostřednictvím obecného rozhraní
  • Vícevláknová a konfigurovatelná podpora pro více CPU/více GPU strojů

Funkce ve verzi 2.8.3

  • Podpora systému Mac OS X 10.6 (Snow Leopard)
  • Podpora ImageIO v systému Mac OS X
  • Export formátu 3DS a převod souboru
  • Integrovaná technologie Autodesk FBX
  • Integrovaná podpora FFmpeg pro zobrazování obsahu video souborů ve 3D aplikacích.
  • PLY podpora formátu souboru

Funkce ve verzi 2.8.4:

  • Podpora sestavení VS2010

Funkce ve verzi 3.0.0:

  • Podpora OpenGL ES 1.1 a OpenGL ES 2.0
  • Podpora OpenGL 3.xa 4.x spolu s přidruženými rozšířeními OpenGL
  • Podpora pro Android na tabletech a telefonech
  • Podpora pro IOS na tabletech a telefonech (aplikace koncových uživatelů již byly v App Storu přijaty)
  • Představení aplikace Present3D pro pohlcující 3D prezentace
  • Nové rozšiřitelné serializátory, které poskytují nové binární formáty souborů .osgb, .osgt ascii a .osgx xml.
  • Nová generalizovaná serializovatelná architektura metadat
  • Nová knihovna osgQt, která umožňuje přímou integraci! OpenSceneGraph s Qt, včetně procházení webu přes QWebKit.
  • Nový plugin FBX založený na Audodesk FBX DSK, který umožňuje čtení formátu .fbx 3D pro tvorbu a výměnu
  • Nový plugin directshow pro zpracování filmů pod Windows
  • Nový POV plugin pro export scény do formátu POV-Ray, který umožňuje použití POV-Ray k fotorealistickému sledování paprsku
  • Nový plugin pro čtení souborů ply
  • Přepracovaný plugin 3ds pro čtení a zápis souborů .3ds
  • Přepracovaný plugin dxf pro čtení a zápis souborů .dxf
  • Podpora pro kakao a 64bitovou verzi OSX

Historie vydání stabilní verze

Verze Datum vydání
3,0 5. února 2013
3.2 24. července 2013
3.4 20. července 2015
3.4.1 28. srpna 2017
3.6 7. dubna 2018
3.6.1 28. května 2018
3.6.2 29. června 2018
3.6.3 14. září 2018
3.6.4 26. července 2019
3.6.5 31. ledna 2020

Architektura

Architekturu knihovny lze rozdělit na tři hlavní podmnožiny - základní knihovnu OpenSceneGraph, osgViewer a sadu NodeKits.

Jádro

Základ knihovny OpenSceneGraph lze dále rozdělit na čtyři hlavní moduly.

osg

Jádro OpenSceneGraph poskytuje třídy a metody pro konstrukci a manipulaci s grafem scény . Obsahuje třídy představující různé typy uzlů , geometrii scény, abstrakci stavu OpenGL , geometrické transformace a také matematické třídy pro 2D a 3D vektorové a maticové operace . Součástí je také pokročilá správa paměti .

OpenThreads

Projekt OpenSceneGraph obsahuje knihovnu vláken, OpenThreads , což je lehký model podprocesu mezi platformami . Je určen k poskytnutí minimálního a úplného objektově orientovaného (OO) podprocesního rozhraní pro programátory C ++ . Je volně modelován na rozhraní API vláken Java a standardech POSIX Threads .

Architektura z OpenThreads je navržen tak, kolem „swap“ Závit modely, které jsou definovány v kompilaci do sdílené knihovny objektů . Je důležité si uvědomit, že zatímco k dosažení cíle obecného rozhraní bylo možné použít tovární vzor , bylo by vyžadováno, aby programátor přidělil každý ze 4 základních typů (Thread, Mutex, Barrier, & Condition) na hromada . Kvůli nákladům spojeným s hromadnou alokací podkladových konkrétních implementací těchto konstrukcí na některých platformách bylo takové přidělování považováno za nepřijatelné v době, kdy byla tato knihovna původně napsána, a proto nebyl použit tovární vzor.

Místo toho byla zvolena poněkud abstrózní - ale účinná - technika, která poskytla potřebné skrývání dat/implementace . Tato technika používá soukromé zapouzdřovací ukazatele k zapouzdření soukromých dat objektu. Ukazatele prázdnoty ve skutečnosti ukazují na konkrétní datové struktury, ale poskytují jednotné rozhraní pro dso.

Cílem návrhu OpenThreads je konstruovat optimalizované implementace pomocí konstruktů optimalizovaných pro více platforem, jako jsou metody sproc používané na vláknech IRIX a Windows.

osgUtil

osgUtil obsahuje funkce backendu vykreslování a nástroje starající se o pohyb grafu scény , optimalizaci vykreslování a transformaci scény na proud volání API OpenGL . Poskytuje také prostředky základní interakce se scénou, jako je vybírání objektů.

osgDB

Tato knihovna má za úkol načítat soubory 3D modelu. Podporuje mnoho manipulátorů datových formátů 2D/3D . Podporováno je více než 50 různých formátů - nejběžnější jsou 3D datové formáty, například COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) a mnoho dalších. OpenSceneGraph také poskytuje vlastní nativní formát ASCII .osg. Pro Blender , Maya a 3D Studio MAX jsou k dispozici exportéři do formátu .osg .

Podporované formáty obrazu patří .rgb, GIF , JPG , PNG , TIFF , .pic, BMP , .dds , TGA a QuickTime .

Tento modul také poskytuje abstrakci I/O zařízení. Ostatní pluginy zavaděče formátů souborů jsou registrovány pomocí osgDB.

osgGA

Toto je abstrakční knihovna GUI vyžadovaná pro různé platformy.

osgViewer

Knihovna osgViewer poskytuje rychlý a snadný způsob vizualizace grafické scény. Je to také abstrakce nezávislá na platformě pro různá rozhraní okenního systému .

osgProducer

OSG je také dodáván s osgProducer, což je jen prohlížeč nezávislý na platformě podporující více grafických kontextů a více vláken.

NodeKits

Distribuce projektu také obsahuje řadu takzvaných NodeKits . Toto jsou řešení běžných problémů a často používané pokročilejší 3D aplikační komponenty a grafické algoritmy. Mezi ty nejvýznamnější patří

  • osgAnimation - využití kosterních modelů, animace a morfování.
  • osgFX - Speciální efekty a postprocesing obrazu.
  • osgManipulator - Interaktivní manipulace s 3D scénou.
  • osgParticle - Pokročilé využití systému částic .
  • osgQt - Integrace se sadou nástrojů Qt a začlenění prvků QtGUI do aplikací OSG.
  • osgShadow - rámec pro techniky vykreslování stínů.
  • osgTerrain - Rozsáhlé vykreslování terénu .
  • osgText - kvalitní vyhlazená písma, podpora písem TrueType a FreeType.
  • osgVolume - vykreslování objemu a manipulace s volumetrickými daty.
  • osgWidget - Jednoduché vytváření GUI .

Příjem a adopce

OpenSceneGraph neposkytuje žádné funkce pro vyšší „herní“ logiku, je to nástroj pouze pro vykreslování. Existuje několik plnohodnotných motorů pro tvorbu počítačových her (nebo takzvaných seriózních her ) využívajících OSG jako základ vykreslování grafiky, přičemž nejběžnějším rámcem je Delta3D .

Na OpenSceneGraph je postaveno velké množství softwarových produktů; mimo jiné Virtual Terrain Project a ViewTec TerrainView . Seznam uživatelů OSG obsahuje společnosti jako Boeing , NASA , FlightGear , Norcontrol a mnoho dalších.

Na úrovni komunity opensource několik projektů přijalo OSG jako vykreslovací backend:

  • FlightGear (software pro simulaci letu)
  • OpenMW (Opensource engine pro Morrowind)

OpenSceneGraph obdržel implementaci javascriptu/WebGL nazvanou OSG.JS, kterou používá mnoho online diváků 3D scén včetně Sketchfab a Clara.io .

V současné době je také vyvíjeno balení z C ++ do javascriptu prostřednictvím Emscripten OGStudio .

Mezi dalšími produkty, které používají OSG, je třeba zmínit:

Viz také

Reference

externí odkazy