OpenSceneGraph - OpenSceneGraph
![]() | |
| Stabil utgivelse | 3.6.5 / 31. januar 2020
|
|---|---|
| Oppbevaringssted |
|
| Skrevet inn | C ++ |
| Operativsystem | Kryssplattform |
| Type | 3D -grafikk |
| Tillatelse | OpenSceneGraph Public License ( LGPL -basert ) |
| Nettsted |
www www |
OpenSceneGraph er et programmeringsgrensesnitt for åpen grafisk applikasjon for 3D-grafikk (bibliotek eller rammeverk), som brukes av applikasjonsutviklere innen områder som visuell simulering , dataspill , virtual reality , vitenskapelig visualisering og modellering .
Verktøysettet er skrevet i standard C ++ ved bruk av OpenGL , og kjører på en rekke operativsystemer, inkludert Microsoft Windows , macOS , Linux , IRIX , Solaris og FreeBSD . Siden versjon 3.0.0 støtter OpenSceneGraph også applikasjonsutvikling for mobile plattformer, nemlig iOS og Android .
Siden 2021 ble prosjektet etterfulgt av VulkanSceneGraph-prosjektet, et Vulkan-basert bibliotek. OpenSceneGraph er i vedlikeholdsfase siden 2019.
Historie
OpenSceneGraph -prosjektet ble initiert av Don Burns i 1998. Robert Osfield ble med i prosjektet i løpet av 1999, og arbeidet med å portere ferdige komponenter for Microsoft Windows. Prosjektet gikk åpen kildekode i september 1999 og det offisielle prosjektnettstedet ble opprettet. Mot slutten av året overtok Osfield prosjektet og begynte omfattende ombygging av den eksisterende kodebasen, med vekt på modernisering, omfavning av moderne C ++ - standarder og designmønstre .
I april 2001, tatt i betraktning det voksende brukerfellesskapet og interessen for publikum, opprettet Robert Osfield OpenSceneGraph Professional Services, og ga kommersiell støtte, rådgivning og opplæringstjenester. Dette markerer full profesjonalisering av prosjektet.
Den første offisielle versjonen av OpenSceneGraph var versjon 1.0, utgitt i 2005. Det finnes en utvidet versjon 2.0 fulgt i 2007, da støtte for flerkjerne og flere GPU-er systemer, flere viktige NodeKits og bruk av enhetlig multi bygge-systemet CSørg . Bøker og brukerhåndbøker ble introdusert.
Prosjektet har vokst raskt og blitt mer populært siden den gang. Det er mer enn 530 bidragsytere signert under gjeldende stabil versjon, og den offisielle adresselisten inneholder tusenvis av navn.
I 2019 ble prosjektet flyttet til en vedlikeholdsfase, hvor hovedutviklingsarbeidet ble ledet til dets etterfølgerprosjekt VulkanSceneGraph.
Funksjoner
Funksjoner i versjon 1.0:
- En funksjonsrik og allment vedtatt scene graf implementering
- Støtte for ytelsesøkende funksjoner
- Se frustum , liten funksjon og okklusjonskasting
- Detaljnivå
- Statssortering og lat tilstandsoppdatering
- OpenGL raske stier og nyeste utvidelser
- Multitråding og databaseoptimalisering
- Støtte for OpenGL, fra 1.1 til 2.0 inkludert de siste utvidelsene
- Tett koblet støtte for OpenGL Shading Language, utviklet i forbindelse med 3Dlabs
- Støtte for et bredt spekter av 2D -bilde- og 3D -databaseformater, med lastere tilgjengelig for formater som OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG og GeoTIFF
- Partikkeleffekter
- Støtte for anti-aliasert TrueType- tekst
- Sømløs støtte for rammebufferobjekter , pbuffere og rammebuffer-gjengivelse-til-tekstur-effekter
- Multi-threaded database personsøkingsstøtte, som kan brukes sammen med alle 3D-databaser og bildelastere
- Generasjon av geospatialt terreng i stor skala, generert terrengbasert database
- Introspeksjonsstøtte for kjernebiblioteker som lar eksterne applikasjoner spørre, hente, sette og operere alle klasser i scenediagrammet, via et generisk grensesnitt
- Multi-threaded og konfigurerbar støtte for flere CPU/flere GPU-maskiner
Funksjoner i versjon 2.8.3
- Støtte for Mac OS X 10.6 (Snow Leopard)
- ImageIO -støtte på Mac OS X
- 3DS -filformateksport og filkonvertering
- Integrert Autodesk FBX -teknologi
- Integrert FFmpeg -støtte for visning av videofilinnhold i 3D -applikasjoner.
- Støtte for PLY -filformat
Funksjoner i versjon 2.8.4:
- VS2010 build -støtte
Funksjoner i versjon 3.0.0:
- OpenGL ES 1.1 og OpenGL ES 2.0 -støtte
- OpenGL 3.x og 4.x støtter sammen med tilhørende OpenGL -utvidelser
- Støtte for Android på nettbrett og telefoner
- Støtte for IOS på nettbrett og telefoner (sluttbrukerprogrammer er allerede godtatt i App Store)
- Introduksjon av Present3D -applikasjon for oppslukende 3D -presentasjoner
- Nye utvidbare serialiserere som gir nye .osgb binære, .osgt ascii og .osgx xml -filformater
- Ny generalisert serialiserbar metadataarkitektur
- Nytt osgQt -bibliotek som gjør det enkelt å integrere! OpenSceneGraph med Qt, inkludert nettlesing via QWebKit.
- Nytt FBX -plugin basert på Audodesk FBX DSK som gjør det mulig å lese .fbx 3D -redigerings- og utvekslingsformat
- Ny plugin for direktevisning for håndtering av filmer under Windows
- Ny pov-plugin for eksport av en scene til POV-Ray-format, som gjør det mulig å bruke POV-Ray for å gjøre fotorealistisk strålesporing
- Ny ply -plugin for å lese ply -filer
- Oppgradert 3ds -plugin for lesing og skriving av .3ds -filer
- Oppgradert dxf -plugin for lesing og skriving av .dxf -filer
- Støtte for kakao og 64bit OSX -bygg
Stabil versjonshistorikk
| Versjon | Utgivelsesdato |
|---|---|
| 3.0 | 5. februar 2013 |
| 3.2 | 24. juli 2013 |
| 3.4 | 20. juli 2015 |
| 3.4.1 | 28. august 2017 |
| 3.6 | 7. april 2018 |
| 3.6.1 | 28. mai 2018 |
| 3.6.2 | 29. juni 2018 |
| 3.6.3 | 14. september 2018 |
| 3.6.4 | 26. juli 2019 |
| 3.6.5 | 31. januar 2020 |
Arkitektur
Bibliotekarkitektur kan skilles i tre hovedgrupper - kjernen OpenSceneGraph -biblioteket, osgViewer og et sett med NodeKits.
Kjerne
Basen for OpenSceneGraph -biblioteket kan videre deles inn i fire hovedmoduler.
osg
Kjernen i OpenSceneGraph gir klasser og metoder for konstruksjon og manipulering av scenegrafikkfremstillingen . Den inneholder klasser som representerer forskjellige typer noder , scenegeometri, OpenGL -tilstandsabstraksjon, geometriske transformasjoner , samt matematiske klasser for 2D- og 3D -vektor- og matriseoperasjoner . Avansert minnestyring er også inkludert.
OpenThreads
Den OpenSceneGraph prosjektet inneholder en gjenge bibliotek, OpenThreads , som er en lett kryssplattform tråd modell . Det er ment å gi et minimalt og komplett objektorientert (OO) trådgrensesnitt for C ++- programmerere. Den er løst modellert på Java thread API, og POSIX Threads -standardene .
Den arkitektur av OpenThreads er utformet rundt "swap" gjenge modeller som er definert ved kompilering-tid i et felles objekt bibliotek . Det er viktig å merke seg at mens et fabrikkmønsterdesign kunne ha blitt brukt for å nå målet om generisk grensesnitt , ville det ha krevd at programmereren tildelte hver av de fire grunnleggende typene (Thread, Mutex, Barrier, and Condition) på haug . På grunn av kostnaden forbundet med tildeling av hauger av de underliggende betongimplementeringene av disse konstruksjonene på noen plattformer, ble en slik tildeling ansett som uakseptabel på det tidspunktet dette biblioteket opprinnelig ble skrevet, og derfor ble ikke fabrikkmønsteret brukt.
I stedet ble en litt abstrakt - men effektiv - teknikk valgt for å gi de nødvendige dataene/implementeringene . Denne teknikken bruker private tomromspekere for å innkapsle objektdata. Tomrommet peker faktisk på konkrete datastrukturer, men gir et jevnt grensesnitt til DSO.
Designmålet med OpenThreads er å konstruere optimaliserte implementeringer ved hjelp av plattformoptimaliserte multi-prosesseringskonstruksjoner som sproc- metodene som brukes på IRIX og Windows-tråder.
osgUtil
osgUtil inneholder gjengivelse av backend -funksjonalitet og verktøy som tar seg av scenediagramoverføring , gjengir optimalisering og transformerer scenen til en strøm av OpenGL API -samtaler. Det gir også grunnleggende interaksjon med scene, for eksempel objektplukking.
osgDB
Dette biblioteket har til oppgave å laste inn 3D -modellfiler. Den støtter mange 2D / 3D data formater manipulatorer. Mer enn 50 forskjellige formater støttes - de vanligste er 3D -dataformater , for eksempel COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) og mange andre. OpenSceneGraph tilbyr også sitt eget opprinnelige ASCII .osg -format. Det er eksportører til .osg -format tilgjengelig for Blender , Maya og 3D Studio MAX.
Støttede bildeformater inkluderer .rgb, .gif , .jpg , .png , TIFF , .pic, .bmp , .dds , TGA og quicktime .
Denne modulen gir også I/O -enhetens abstraksjon. De andre filformat loader-pluginene er registrert hos osgDB.
osgGA
Dette er et GUI -abstraksjonsbibliotek som kreves for forskjellige plattformer.
osgViewer
osgViewer Library gir en rask og enkel måte å visualisere grafikkmiljøet. Det er også en plattformuavhengig abstraksjon for forskjellige vindussystemgrensesnitt .
osgProdusent
OSG leveres også med en osgProducer som bare er en plattformuavhengig seer som støtter flere grafiske sammenhenger og multi-threading.
NodeKits
Prosjektdistribusjon inneholder også en rekke såkalte NodeKits . Dette er løsninger på vanlige problemer og ofte brukte mer avanserte 3D -applikasjonskomponenter og grafikkalgoritmer. Blant de mest betydningsfulle er
- osgAnimation - bruk av skjelettmodeller, animering og morphing.
- osgFX - Spesialeffekter og etterbehandling av bilder.
- osgManipulator - Interaktiv 3D -scenemanipulering.
- osgParticle - Avansert bruk av partikkelsystem .
- osgQt - Integrasjon med Qt -verktøykasse og inkorporering av QtGUI -elementer i OSG -applikasjoner.
- osgShadow - Rammeverk for skyggegjengivelsesteknikker.
- osgTerrain - Omfattende gjengivelse av terreng .
- osgText - Kvalitet antialiaserte fonter, TrueType og FreeType skriftstøtte.
- osgVolume - Volumgjengivelse og volumetrisk datamanipulasjon.
- osgWidget - Enkel GUI -opprettelse .
Mottak og adopsjon
OpenSceneGraph gir ingen funksjonalitet for høyere "spill" -logikk, det er bare et gjengivelsesverktøy. Det er flere fullskala- motorer for dataspill (eller såkalte seriøse spill ) som bruker OSG som en base for grafisk gjengivelse, det vanligste rammeverket er Delta3D .
Det er et stort utvalg av programvareprodukter bygget på toppen av OpenSceneGraph; blant andre Virtual Terrain Project og ViewTec TerrainView . Liste over OSG -brukere inneholder selskaper som Boeing , NASA , FlightGear , Norcontrol og mange andre.
På opensource -fellesskapsnivå har flere prosjekter vedtatt OSG som gjengivelse av backend:
- FlightGear (Flight Simulation -programvare)
- OpenMW (Opensource -motor for Morrowind)
OpenSceneGraph har mottatt en javascript/WebGL -implementering kalt OSG.JS som brukes av mange online 3D -scenevisere, inkludert Sketchfab og Clara.io .
En innpakning fra C ++ til javascript gjennom Emscripten OGStudio er også utviklet.
Blant andre produkter som bruker OSG må nevnes:
- Remo 3D OSG Scene Editor
- http://www.palomino3d.org/
Se også
- OSG.JS
- OpenGL
- OGRE
- Delta3D
- Irrlicht motor
- Crystal Space
- Visualiseringsbibliotek
- OpenSG
- ossimPlanet
- Grome
- Åpen oppfinner
- Enhet (spillmotor)
Referanser
Eksterne linker
-
www
.openscenegraph - offisielt nettsted for prosjektet.org - AlphaPixel OSG Binaries - Windows, Mac og Linux x86 og x64 forhåndskompilerte binærfiler.
- SigmaOSG - OpenSceneGraph Tutorials (inneholder alt tidligere OSGHelp -materiale fra pensjonert OSGHelp -nettsted)
- Scenegraphs og Openscenegraph for 3D Software Development
- OpenSceneGraph - biblioteksinformasjonsside på www.OpenGL.org (ett av fire markedsførte biblioteker)
