OpenSceneGraph
| OpenSceneGrafiek
| |
|---|---|
| |
| |
| Basis data
| |
| Huidige versie | 3.6.5 (31 januari 2020) |
| besturingssysteem | Cross-platform |
| programmeertaal | C ++ |
| categorie | Wetenschappelijke visualisatie , programmabibliotheek |
| Licentie | OpenSceneGraph openbare licentie ( gebaseerd op LGPL ) |
| Duits sprekend | Nee |
| www.openscenegraph.org | |
OpenSceneGraph is een open source scene graph systeem (SG) die werkt in real-time grafische toepassingen zoals: B. FlightGear wordt gebruikt.
OpenSceneGraph is geschreven in C++ , gebruikt OpenGL als basis voor 3D-graphics en draait op verschillende besturingssystemen, waaronder Microsoft Windows , Mac OS X , Linux , IRIX , Solaris en FreeBSD .
Hoewel het een vergelijkbare naam heeft als het scènegrafieksysteem OpenSG en rond dezelfde tijd is gestart, zijn het twee verschillende en onafhankelijke projecten.
geschiedenis
Het OpenSceneGraph-project werd in 1998 geïnitieerd door Don Burns. Robert Osfield kwam in 1999 bij het project en werkte aan het overzetten van de voltooide componenten naar Microsoft Windows. Het project werd open source in september 1999 en de officiële projectwebsite werd gemaakt. Tegen het einde van het jaar nam Osfield het project over en begon met een uitgebreide refactoring van de bestaande codebasis, waarbij de nadruk lag op modernisering en het opnemen van moderne C++-standaarden en ontwerppatronen.
In april 2001 richtte Robert Osfield, met de groeiende gebruikersgemeenschap en de publieke belangstelling in het achterhoofd, OpenSceneGraph Professional Services op, dat commerciële ondersteuning, advies en training biedt. Dit markeert de volledige professionalisering van het project.
De eerste officiële stabiele versie van OpenSceneGraph was versie 1.0, die in 2005 werd uitgebracht. Een uitgebreide versie 2.0 volgde in 2007 en voegde ondersteuning toe voor multicore- en multi-GPU-systemen, verschillende belangrijke NodeKits en het gebruik van het uniforme multi-platform build-systeem CMake . Boeken en gebruikershandleidingen werden geïntroduceerd.
Sindsdien is het project snel gegroeid en steeds populairder geworden. Er zijn meer dan 530 medewerkers ondertekend onder de huidige stabiele release, en de officiële mailinglijst heeft duizenden namen.
In 2019 is het project overgebracht naar een onderhoudsfase, waarbij het belangrijkste ontwikkelingswerk is verschoven naar het vervolgproject VulkanSceneGraph.
Kenmerken
Functies in versie 1.0:
- Een feature-rijke en veelgebruikte scene graph- implementatie
- Ondersteuning voor prestatieverhogende functies
- Bekijk Frustum , Kleine Feature, en Occlusie Culling
- Detailniveau
- Status sorteren en traag status bijwerken
- Snelle OpenGL-paden en de nieuwste verbeteringen
- Multi-threading en database-optimalisatie
- Ondersteuning voor OpenGL, van 1.1 tot 2.0 inclusief de nieuwste verbeteringen
- Nauw gekoppelde ondersteuning voor OpenGL Shading Language, ontwikkeld in samenwerking met 3Dlabs
- Ondersteuning voor een breed scala aan 2D-beeld- en 3D-databaseformaten, met laders voor formaten zoals OpenFlight, TerraPage, OBJ , 3DS, JPEG , PNG en GeoTIFF
- Particle Effects
- Ondersteuning voor TrueType- tekst met anti-aliasing
- Naadloze ondersteuning voor framebuffer- objecten, pbuffers en framebuffer render-to-texture-effecten
- Ondersteuning voor multi-threaded database-paging die kan worden gebruikt in combinatie met alle 3D-databases en afbeeldingsladers
- Uitbestede databasegeneratie voor grote geografische gebieden over de hele wereld
- Introspectieondersteuning voor kernbibliotheken, waardoor externe applicaties alle klassen in de scènegrafiek kunnen opvragen, ontvangen, instellen en bewerken via een generieke interface
- Multi-threaded en configureerbare ondersteuning voor meerdere CPU's/meerdere GPU-machines
Functies in versie 2.8.3
- Ondersteuning voor Mac OS X 10.6 (Snow Leopard)
- ImageIO-ondersteuning op Mac OS X
- 3DS-bestandsindeling exporteren en converteren
- Geïntegreerde Autodesk FBX-technologie
- Geïntegreerde FFmpeg-ondersteuning voor het weergeven van videobestandsinhoud in 3D-toepassingen
- Ondersteuning van het PLY-bestandsformaat
Functies in versie 2.8.4:
- Ondersteuning voor VS2010-build
Functies in versie 3.0.0:
- Ondersteuning voor OpenGL ES 1.1 en OpenGL ES 2.0
- Ondersteuning van OpenGL 3.x en 4.x en de bijbehorende OpenGL-extensies
- Ondersteuning voor Android op tablets en telefoons
- Ondersteuning voor iOS op tablets en telefoons (eindgebruikersapplicaties zijn al geaccepteerd in de App Store )
- Introductie van de Present3D-applicatie voor meeslepende 3D-presentaties
- Nieuwe uitbreidbare serializers met de nieuwe native formaten .osgb binair, .osgt ascii en .osgx xml-bestand
- Nieuwe gegeneraliseerde serialiseerbare metadata-architectuur
- Nieuwe osgQt-bibliotheek die gemakkelijke integratie van OpenSceneGraph met Qt mogelijk maakt, inclusief surfen op het web via QWebKit.
- Nieuwe FBX-plug-in op basis van de Autodesk FBX DSK waarmee het .fbx 3D-authoring- en uitwisselingsformaat kan worden gelezen
- Nieuwe directshow plug-in voor het verwerken van films op Windows
- Nieuwe pov-plug-in voor het exporteren van een scène naar POV-Ray-indeling, waardoor POV-Ray kan worden gebruikt voor fotorealistische raytracing
- Nieuwe ply-plug-in voor het lezen van ply-bestanden
- Opnieuw ontworpen 3ds-plug-in voor het lezen en schrijven van .3ds-bestanden
- Herziene dxf-plug-in voor het lezen en schrijven van .dxf-bestanden
- Ondersteuning voor Cocoa en 64bit OSX build
architectuur
Hier is een overzicht van de OpenSceneGraph-architectuur: De bibliotheekarchitectuur kan worden onderverdeeld in drie hoofdonderdelen: de kern OpenSceneGraph-bibliotheek, osgViewer en een aantal NodeKits.
kern
De basis van de OpenSceneGraph-bibliotheek kan verder worden onderverdeeld in vier hoofdmodules.
Osgo
De kern van OpenSceneGraph biedt klassen en werkwijzen voor de constructie en manipulatie van de scene grafiek . Het bevat klassen die verschillende soorten knooppunten vertegenwoordigen , scènegeometrie, OpenGL- statusabstractie, geometrische transformaties en wiskundige klassen voor 2D- en 3D- vector- en matrixbewerkingen . Een geavanceerd geheugenbeheer is ook inbegrepen.
OpenThreads
Het OpenSceneGraph project een schroefdraad bibliotheek openen draden die een lichtgewicht, platformonafhankelijke thread - model vertegenwoordigt. Het is bedoeld om een minimale en complete objectgeoriënteerde (OO) thread-interface te bieden voor C ++ - programmeurs. Het is losjes gebaseerd op de Java- thread-API en de POSIX-threadstandaarden.
De architectuur van OpenThreads is gebaseerd op "uitwisselbare" threadmodellen die tijdens het compileren in een gedeelde objectbibliotheek worden gedefinieerd. Het is belangrijk op te merken dat, hoewel een fabriekspatroonontwerp had kunnen worden gebruikt om het doel van een generieke interface te bereiken , de programmeur hiervoor toegang zou moeten hebben tot elk van de 4 basistypen (Thread, Mutex, Barrier en Condition) die zijn toegewezen aan de hoop. Vanwege de kosten van heaptoewijzing van de onderliggende concrete implementaties van deze constructies op sommige platforms, werd een dergelijke toewijzing onaanvaardbaar geacht op het moment dat deze bibliotheek oorspronkelijk werd geschreven, en daarom werd het fabriekspatroon niet gebruikt.
In plaats daarvan is gekozen voor een ietwat absurde - maar effectieve - techniek om de benodigde data/implementaties te verbergen. Deze techniek maakt gebruik van private void- pointers om de privégegevens van het object in te kapselen. De void pointers verwijzen eigenlijk naar specifieke datastructuren, maar bieden een uniforme interface naar de dso.
Het ontwerpdoel van OpenThreads is om geoptimaliseerde implementaties te maken die gebruik maken van platform-geoptimaliseerde multiprocessing-constructies, zoals: B. de Sproc- methoden en Windows-threads die op IRIX worden gebruikt .
OsgUtil
osgUtil bevat rendering - backend- functionaliteit en hulpprogramma's rond de kruising zorgen voor de scènegrafiek , de rendering-optimalisatie en de transformatie van de scène in een stroom van OpenGL-aanroepen. Het biedt ook middelen voor basisinteractie met de scène, zoals: B. de selectie van objecten.
OsgDB
OpenSceneGraph wordt ook geleverd met een grote verzameling databaseladers en veel manipulatoren voor 2D / 3D- gegevensindelingen . Meer dan 50 verschillende formaten worden ondersteund - de meest voorkomende 3D-data formaten zoals COLLADA (DAE), LightWave (.lwo), Wavefront (obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX ( .x) en vele anderen. OpenSceneGraph biedt ook zijn eigen native ASCII -.osg-indeling. Er zijn exporteurs in het .osg-formaat voor Blender , Maya en 3D Studio MAX.
Ondersteunde afbeeldingsformaten zijn .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga en quicktime.
Deze module biedt ook de abstractie van I / O-apparaten.
OsgViewer
De osgViewer-bibliotheek biedt een snelle en gemakkelijke manier om de grafische scène te visualiseren . Het is ook een platformonafhankelijke abstractie voor verschillende venstersysteeminterfaces .
NodeKits
De projectdistributie bevat ook een groot aantal zogenaamde NodeKits. Dit zijn oplossingen voor veelvoorkomende problemen en veelgebruikte, meer geavanceerde 3D-toepassingscomponenten en grafische algoritmen. De belangrijkste zijn onder meer:
- osgAnimation - Gebruik van skeletmodellen, animatie en morphing.
- osgFX - speciale effecten en nabewerking.
- osgManipulator - Interactieve 3D-scènemanipulatie.
- osgParticle - Verlengd gebruik van het deeltjessysteem .
- osgQt - Integratie met Qt Toolkit en integratie van QtGUI-elementen in OSG-applicaties.
- osgShadow - Kader voor technieken voor het renderen van schaduwen.
- osgTerrain - Uitgebreide weergave van het terrein.
- osgText - Anti-aliasing-lettertypen van hoge kwaliteit, ondersteuning voor TrueType- en FreeType-lettertypen.
- osgVolume - Volume rendering en bewerking van volumetrische gegevens.
- osgWidget - Eenvoudige GUI- creatie.
Individueel bewijs
- ^ Een b Anne Ruas, Christopher Gold: Headway in Spatial Data Handling: 13th International Symposium on Spatial Data Handling . Springer, 2008, ISBN 978-3-540-68566-1 , blz. 370 ( google.com ).
- © Martz, P.: OpenSceneGraph Snelstartgids. Louisville, VS, 2007.
- ↑ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ↑ vulkaan Scenegraph Project. 11 december 2018, geraadpleegd op 29 april 2021 .
- ^ OSG Nieuws. (Niet langer online beschikbaar.) 19 februari 2010, gearchiveerd ten opzichte van het origineel op 9 juni 2011 ; Ontvangen 20 februari 2010 .
- ^ OpenSceneGraph voegt nieuwe functies toe aan 3D-grafische toepassingen. 5 april 2010; Gearchiveerd van het origineel op 15 april 2010 ; Ontvangen 10 april 2010 .
