OpenSceneGrafiek - OpenSceneGraph
![]() | |
| Stabiele vrijlating | 3.6.5 / 31 januari 2020
|
|---|---|
| Opslagplaats |
|
| Geschreven in | C++ |
| Besturingssysteem | Cross-platform |
| Type | 3D-graphics |
| Vergunning | OpenSceneGraph openbare licentie ( gebaseerd op LGPL ) |
| Website |
www www |
OpenSceneGraph is een open-source 3D grafische applicatie-programmeerinterface (bibliotheek of raamwerk), gebruikt door applicatieontwikkelaars op gebieden zoals visuele simulatie , computergames , virtual reality , wetenschappelijke visualisatie en modellering .
De toolkit is geschreven in standaard C++ met behulp van OpenGL en draait op verschillende besturingssystemen, waaronder Microsoft Windows , macOS , Linux , IRIX , Solaris en FreeBSD . Sinds versie 3.0.0 ondersteunt OpenSceneGraph ook applicatie-ontwikkeling voor mobiele platforms, namelijk iOS en Android .
Vanaf 2021 wordt het project opgevolgd door het VulkanSceneGraph-project, een op Vulkan gebaseerde bibliotheek. OpenSceneGraph bevindt zich sinds 2019 in de onderhoudsfase.
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 voltooide componenten voor Microsoft Windows. Het project ging in september 1999 open source en de officiële projectwebsite werd gemaakt. Tegen het einde van het jaar nam Osfield het project over en begon met uitgebreide refactoring van de bestaande codebase, waarbij de nadruk werd gelegd op modernisering, waarbij moderne C++-standaarden en ontwerppatronen werden omarmd .
In april 2001 creëerde Robert Osfield, rekening houdend met de groeiende gemeenschap van gebruikers en de belangstelling van het publiek, OpenSceneGraph Professional Services, die commerciële ondersteuning, advies en trainingsdiensten bood. Dit markeert een volledige professionalisering van het project.
De eerste officiële stabiele versie van OpenSceneGraph was versie 1.0, uitgebracht in 2005. Een uitgebreide versie 2.0 in 2007 gevolgd, het toevoegen van ondersteuning voor multi-core en multi-gpu-systemen, een aantal belangrijke NodeKits en het gebruik van unified multiplatform bouwsysteem CMake . Boeken en gebruikershandleidingen werden geïntroduceerd.
Het project groeide snel en werd sindsdien steeds populairder. Er zijn meer dan 530 medewerkers ondertekend onder de huidige stabiele versie, en de officiële mailinglijst bevat duizenden namen.
In 2019 werd het project verplaatst naar een onderhoudsfase, waarbij de belangrijkste ontwikkelingsinspanningen werden gerouteerd naar het opvolgerproject VulkanSceneGraph.
Functies
Functies in versie 1.0:
- Een veelzijdige en algemeen aanvaarde implementatie van scènegrafieken
- Ondersteuning voor prestatieverhogende functies
- Afgeknotte , kleine functie en occlusie-ruiming bekijken
- Detailniveau
- Status sorteren en luie status bijwerken
- OpenGL snelle paden en nieuwste extensies
- Multi-threading en database-optimalisatie
- Ondersteuning voor OpenGL, van 1.1 tot 2.0 inclusief de nieuwste extensies
- 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 beschikbaar voor formaten zoals OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG en GeoTIFF
- Deeltjes effecten
- Ondersteuning voor TrueType- tekst met anti-aliasing
- Naadloze ondersteuning voor framebuffer- objecten, pbuffers en framebuffer render-to-texture-effecten
- Ondersteuning voor multi-threaded databasepaging, die kan worden gebruikt in combinatie met alle 3D-database- en afbeeldingsladers
- Grootschalige, hele aarde geospatiale terrein-gepagineerde database generatie
- Introspectie-ondersteuning voor kernbibliotheken waarmee externe toepassingen alle klassen in de scènegrafiek kunnen opvragen, ophalen, instellen en gebruiken, via een generieke interface
- Multi-threaded en configureerbare ondersteuning voor meerdere CPU/meerdere GPU-machines
Functies in versie 2.8.3
- Mac OS X 10.6 (Snow Leopard) ondersteuning
- ImageIO-ondersteuning op Mac OS X
- 3DS-bestandsindeling exporteren en bestandsconversie
- Geïntegreerde Autodesk FBX-technologie
- Geïntegreerde FFmpeg-ondersteuning voor het weergeven van videobestandsinhoud in 3D-toepassingen.
- Ondersteuning voor PLY-bestandsindelingen
Functies in versie 2.8.4:
- Ondersteuning voor VS2010-build
Functies in versie 3.0.0:
- OpenGL ES 1.1 en OpenGL ES 2.0-ondersteuning
- Ondersteuning voor OpenGL 3.x en 4.x samen met bijbehorende OpenGL-extensies
- Ondersteuning voor Android op tablets en telefoons
- Ondersteuning voor IOS op tablets en telefoons (applicaties van eindgebruikers zijn al geaccepteerd in de App Store)
- Introductie van de Present3D-applicatie voor meeslepende 3D-presentaties
- Nieuwe uitbreidbare serializers die nieuwe .osgb binaire, .osgt ascii en .osgx xml bestandsnative formaten bieden
- Nieuwe gegeneraliseerde serialiseerbare metadata-architectuur
- Nieuwe osgQt-bibliotheek die het eenvoudig maakt om !OpenSceneGraph te integreren met Qt, inclusief surfen op het web via QWebKit.
- Nieuwe FBX-plug-in op basis van de Audodesk FBX DSK waarmee het .fbx 3D-ontwerp- en uitwisselingsformaat kan worden gelezen
- Nieuwe directshow-plug-in voor het verwerken van films onder Windows
- Nieuwe pov-plug-in voor het exporteren van een scène naar POV-Ray-formaat, waardoor het gebruik van POV-Ray mogelijk wordt voor fotorealistische raytracing
- Nieuwe ply-plug-in voor het lezen van ply-bestanden
- Vernieuwde 3ds-plug-in voor het lezen en schrijven van .3ds-bestanden
- Vernieuwde dxf-plug-in voor het lezen en schrijven van .dxf-bestanden
- Ondersteuning voor Cocoa en 64bit OSX build
Stabiele versie-releasegeschiedenis
| Versie | Datum van publicatie |
|---|---|
| 3.0 | 5 februari 2013 |
| 3.2 | 24 juli 2013 |
| 3.4 | 20 juli 2015 |
| 3.4.1 | 28 augustus 2017 |
| 3.6 | 7 april 2018 |
| 3.6.1 | 28 mei 2018 |
| 3.6.2 | 29 juni 2018 |
| 3.6.3 | 14 september 2018 |
| 3.6.4 | 26 juli 2019 |
| 3.6.5 | 31 januari 2020 |
architectuur
Bibliotheekarchitectuur kan worden onderverdeeld in drie hoofdsubsets: de kern OpenSceneGraph-bibliotheek, osgViewer en een set NodeKits.
Kern
De basis van de OpenSceneGraph-bibliotheek kan verder worden onderverdeeld in vier hoofdmodules.
osg
De kern van OpenSceneGraph biedt klassen en methoden voor de bouw en manipulatie van de scene grafiek . Het bevat klassen die verschillende soorten knooppunten vertegenwoordigen , scènegeometrie, OpenGL- statusabstractie, geometrische transformaties , evenals wiskundige klassen voor 2D- en 3D- vector- en matrixbewerkingen . Geavanceerd geheugenbeheer is ook inbegrepen.
OpenThreads
Het OpenSceneGraph project een schroefdraad bibliotheek OpenThreads , hetgeen een lichtgewicht platforms draad model . Het is bedoeld om een minimale en complete objectgeoriënteerde (OO) thread-interface te bieden voor C++- programmeurs. Het is losjes gemodelleerd naar de Java- thread-API en de POSIX Threads-standaarden .
De architectuur van OpenThreads is ontworpen rond "swappable" threadmodellen die tijdens het compileren worden gedefinieerd in een gedeelde objectbibliotheek . Het is van belang op te merken dat, hoewel een fabriekspatroonontwerp had kunnen worden gebruikt om het doel van een generieke interface te bereiken , het de programmeur zou hebben vereist om elk van de 4 fundamentele typen (Thread, Mutex, Barrier, & Condition) toe te wijzen aan de hoop . Vanwege de kosten die gepaard gaan met 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 werd gekozen voor een ietwat duistere - maar effectieve - techniek om de nodige gegevens/implementatie onderduiken te bieden . Deze techniek maakt gebruik van private void-pointers om privégegevens van objecten in te kapselen. De void pointers wijzen eigenlijk naar concrete datastructuren, maar geven een uniforme interface aan de dso.
Het ontwerpdoel van OpenThreads is om geoptimaliseerde implementaties te construeren met behulp van platform-geoptimaliseerde multi-processing constructies zoals de sproc- methoden die worden gebruikt op IRIX en Windows-threads.
osgUtil
osgUtil bevat rendering back-end functionaliteit en nutsbedrijven het verzorgen van scene graph traversal , waardoor optimalisatie en het transformeren van de scène in een stroom van OpenGL API calls. Het biedt ook middelen voor basisinteractie met scène, zoals het kiezen van objecten.
osgDB
Deze bibliotheek is belast met het laden van 3D-modelbestanden. Het ondersteunt vele 2D / 3D data formats manipulators. Meer dan 50 verschillende formaten worden ondersteund - meest voorkomende zijn 3D-dataformaten, 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 naar .osg-formaat beschikbaar voor Blender , Maya en 3D Studio MAX.
Ondersteunde beeldformaten zijn .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga en quicktime .
Deze module biedt ook I/O-apparaatabstractie. De andere loader-plug-ins voor bestandsindelingen zijn geregistreerd bij osgDB.
osgGA
Dit is een GUI-abstractiebibliotheek die vereist is voor verschillende platforms.
osgViewer
osgViewer Library biedt een snelle en gemakkelijke manier om de grafische scène te visualiseren . Het is ook een platformonafhankelijke abstractie voor verschillende venstersysteeminterfaces .
osgProducer
De OSG wordt ook geleverd met een osgProducer die slechts een platformonafhankelijke viewer is die meerdere grafische contexten en multi-threading ondersteunt.
NodeKits
Projectdistributie bevat ook een verscheidenheid aan zogenaamde NodeKits . Dit zijn oplossingen voor veelvoorkomende problemen en veelgebruikte meer geavanceerde 3D-toepassingscomponenten en grafische algoritmen. Een van de belangrijkste zijn:
- osgAnimation - Gebruik, animatie en morphing van skeletmodellen.
- osgFX — Speciale effecten en nabewerking van afbeeldingen.
- osgManipulator — Interactieve 3D-scènemanipulatie.
- osgParticle — Geavanceerd gebruik van 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 terreinen .
- osgText — Kwaliteit anti-aliased lettertypen, ondersteuning voor TrueType en FreeType-lettertypen.
- osgVolume - Volume rendering en volumetrische data manipulatie.
- osgWidget — Eenvoudige GUI- creatie.
Ontvangst en adoptie
OpenSceneGraph biedt geen functionaliteit voor hogere "gaming"-logica, het is een hulpmiddel voor alleen renderen. Er zijn verschillende full-scale engines voor het maken van computergames (of zogenaamde serious games ) die OSG gebruiken als basis voor grafische weergave, waarbij Delta3D het meest voorkomende framework is .
Er is een grote verscheidenheid aan softwareproducten gebouwd bovenop OpenSceneGraph; onder andere Virtual Terrain Project en ViewTec TerrainView . Lijst van OSG-gebruikers bevat bedrijven als Boeing , NASA , FlightGear , Norcontrol en vele anderen.
Op het opensource-communityniveau hebben verschillende projecten OSG als backend voor weergave aangenomen:
- FlightGear (Flight Simulation-software)
- OpenMW (Opensource-engine voor Morrowind)
OpenSceneGraph heeft een javascript/WebGL-implementatie ontvangen genaamd OSG.JS die wordt gebruikt door veel online 3D- scèneviewers, waaronder Sketchfab en Clara.io .
Momenteel wordt ook een omhulling van C++ naar javascript via Emscripten OGStudio ontwikkeld.
Onder andere producten die OSG gebruiken, moeten worden vermeld:
- Remo 3D OSG Scène-editor
- http://www.palomino3d.org/
Zie ook
- OSG.JS
- OpenGL
- OGRE
- Delta3D
- Irrlicht-motor
- Kristalruimte
- Visualisatie Bibliotheek
- OpenSG
- ossimPlanet
- Grome
- Uitvinder openen
- Eenheid (game-engine)
Referenties
Externe links
-
www
.openscenegraph - officiële website voor het project.org - AlphaPixel OSG Binaries - Windows, Mac en Linux x86 en x64 voorgecompileerde binaire bestanden .
- SigmaOSG - OpenSceneGraph-zelfstudies (bevat al het eerdere OSGHelp-materiaal van de gepensioneerde OSGHelp-site)
- Scenegraphs en Openscenegraph voor 3D-softwareontwikkeling
- OpenSceneGraph - webpagina met bibliotheekinformatie op www.OpenGL.org (een van de vier gepromote bibliotheken)
