OpenSceneGraph
| OpenSceneGraph
| |
|---|---|
| |
| |
| Grundläggande information
| |
| Aktuell version | 3.6.5 (31 januari 2020) |
| operativ system | Tvärplattform |
| programmeringsspråk | C ++ |
| kategori | Vetenskaplig visualisering , programbibliotek |
| Licens | OpenSceneGraph Public License ( LGPL- baserad) |
| Tysktalande | Nej |
| www.openscenegraph.org | |
OpenSceneGraph är ett open source- scengrafsystem (SG) som fungerar i grafikapplikationer i realtid som: B. FlightGear används.
OpenSceneGraph skrevs i C ++ , använder OpenGL som bas för 3D-grafik och körs på en mängd olika operativsystem inklusive Microsoft Windows , Mac OS X , Linux , IRIX , Solaris och FreeBSD .
Även om det har ett liknande namn som scengrafsystemet OpenSG och startades ungefär samma tid, är de två olika och oberoende projekt.
historia
OpenSceneGraph-projektet initierades 1998 av Don Burns. Robert Osfield gick med i projektet 1999 och arbetade med att porta de färdiga komponenterna till Microsoft Windows. Projektet blev öppen källkod i september 1999 och den officiella projektwebbplatsen skapades. Mot slutet av året tog Osfield över projektet och inledde en omfattande omarbetning av den befintliga kodbasen med fokus på modernisering och införlivande av moderna C ++ - standarder och designmönster.
I april 2001 grundade Robert Osfield OpenSceneGraph Professional Services, med det växande användarsamhället och allmänhetens intresse, som ger kommersiellt stöd, rådgivning och utbildning. Detta markerar den fullständiga professionaliseringen av projektet.
Den första officiella stabila versionen av OpenSceneGraph var version 1.0, som släpptes 2005. En utökad version 2.0 följde 2007 och lade till stöd för multicore- och multi-GPU-system, flera viktiga NodeKits och användningen av det enhetliga CMake- systemet för flera plattformar . Böcker och användarhandböcker introducerades.
Sedan dess har projektet ökat snabbt och blivit alltmer populärt. Det finns mer än 530 bidragsgivare undertecknade under den nuvarande stabila utgåvan, och den officiella e-postlistan har tusentals namn.
År 2019 överfördes projektet till en underhållsfas där huvudutvecklingsarbetet flyttades till uppföljningsprojektet VulkanSceneGraph.
funktioner
Funktioner i version 1.0:
- En funktionsrik och utbredda scen graf genomförandet
- Stöd för funktioner som förbättrar prestanda
- Visa Frustum , Small Feature och Occlusion Culling
- Detaljnivå
- Statlig sortering och trög tillståndsuppdatering
- Snabba OpenGL-banor och de senaste förbättringarna
- Multitrådning och databasoptimering
- Stöd för OpenGL, från 1.1 till 2.0 inklusive de senaste förbättringarna
- Tätt kopplat stöd för OpenGL Shading Language, utvecklat i samarbete med 3Dlabs
- Stöd för en mängd olika 2D-bild- och 3D-databasformat, med laddare för format som OpenFlight, TerraPage, OBJ , 3DS, JPEG , PNG och GeoTIFF
- Partikel Effects
- Stöd för anti-aliaserad TrueType- text
- Sömlöst stöd för frambufferobjekt , pbuffers och frambuffer render-to-texture-effekter
- Stöd för databaserad personsökning med flera trådar som kan användas tillsammans med alla 3D-databaser och bildläsare
- Outsourcad databasgenerering för stora geografiska områden runt om i världen
- Introspektionsstöd för kärnbibliotek, som gör det möjligt för externa applikationer att fråga, ta emot, ställa in och redigera alla klasser i scengrafen via ett generiskt gränssnitt
- Flertrådat och konfigurerbart stöd för flera CPU / flera GPU-maskiner
Funktioner i version 2.8.3
- Stöd för Mac OS X 10.6 (Snow Leopard)
- ImageIO-stöd på Mac OS X
- 3DS-filformat export och konvertering
- Integrerad Autodesk FBX-teknik
- Integrerat FFmpeg-stöd för visning av videofilinnehåll i 3D-applikationer
- Stöd för PLY-filformatet
Funktioner i version 2.8.4:
- VS2010 byggstöd
Funktioner i version 3.0.0:
- Stöd för OpenGL ES 1.1 och OpenGL ES 2.0
- Stöd för OpenGL 3.x och 4.x samt tillhörande OpenGL-tillägg
- Stöd för Android på surfplattor och telefoner
- Stöd för iOS på surfplattor och telefoner (slutanvändarapplikationer har redan accepterats i App Store )
- Introduktion av Present3D-applikationen för uppslukande 3D-presentationer
- Nya förlängningsbara serialiserare som tillhandahåller de nya inbyggda formaten .osgb binär, .osgt ascii och .osgx xml-fil
- Ny generaliserad serieiserbar metadataarkitektur
- Nytt osgQt-bibliotek som möjliggör enkel integration av! OpenSceneGraph med Qt, inklusive surfning via QWebKit.
- Nytt FBX-tillägg baserat på Autodesk FBX DSK som möjliggör läsning av .fbx 3D-redigerings- och utbytesformat
- Ny insticksprogram för regisshow för hantering av filmer i Windows
- Nytt pov-plugin för att exportera en scen till POV-Ray-format, vilket möjliggör användning av POV-Ray för fotorealistisk strålspårning
- Nytt lagertillägg för läsning av lagringsfiler
- Omdesignat 3ds-plugin för läsning och skrivning av .3ds-filer
- Reviderad dxf-plugin för läsning och skrivning av .dxf-filer
- Stöd för kakao och 64-bitars OSX-byggnad
arkitektur
Här är en översikt över OpenSceneGraph-arkitekturen: Biblioteksarkitekturen kan delas upp i tre huvuddelar - kärnan i OpenSceneGraph-biblioteket, osgViewer och ett antal NodeKits.
kärna
Grunden för OpenSceneGraph-biblioteket kan ytterligare delas in i fyra huvudmoduler.
Osg
Kärnan i OpenSceneGraph innehåller klasser och metoder för konstruktion och manipulation av scengrafen . Den innehåller klasser som representerar olika nodtyper , scengeometri, OpenGL- tillståndsabstraktion, geometriska transformationer och matematiska klasser för 2D- och 3D- vektor- och matrisoperationer . En avancerad minneshantering ingår också.
OpenThreads
OpenSceneGraph-projektet innehåller ett trådbibliotek, öppna trådar som en lätt, plattformig tråd - modell representerar. Det är avsett att ge ett minimalt och komplett objektorienterat (OO) trådgränssnitt för C ++ - programmerare. Den är löst baserad på Java thread API och POSIX thread standards.
Den arkitektur av OpenThreads är baserad på "utbytbara" trådmodeller som definieras i ett delat objekt bibliotek vid kompileringen . Det är viktigt att notera att även om en fabriksmönsterdesign kunde ha använts för att uppnå målet med ett generiskt gränssnitt , skulle detta dock kräva att programmeraren fick åtkomst till var och en av de fyra bastyperna (tråd, Mutex, barriär och tillstånd) som tilldelas till högen. På grund av kostnaden för högtilldelning av de underliggande konkreta implementeringarna av dessa konstruktioner på vissa plattformar ansågs en sådan tilldelning oacceptabel då biblioteket ursprungligen skrevs, och därför användes inte fabriksmönstret.
Istället valdes en något absurd - men effektiv - teknik för att dölja nödvändiga data / implementeringar. Denna teknik använder privata ogiltiga pekare för att inkapsla objektets privata data. Hålrumspekarna pekar faktiskt på specifika datastrukturer, men erbjuder ett enhetligt gränssnitt till dso.
Designmålet för OpenThreads är att skapa optimerade implementeringar som använder plattformsoptimerade multiprocessing-konstruktioner som: B. Sproc- metoderna och Windows-trådarna som används på IRIX .
OsgUtil
osgUtil inkluderar rendering - backend- funktionalitet och verktyg runt korsningen tar hand om scengrafen, renderingoptimeringen och transformeringen av scenen i en ström av OpenGL-samtal. Det ger också medel för grundläggande interaktion med scenen, såsom B. valet av objekt.
OsgDB
OpenSceneGraph levereras också med en stor samling databaslastare och många manipulatorer för 2D / 3D- dataformat . Mer än 50 olika format stöds - de vanligaste 3D-dataformaten som COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX ( .x) och många andra. OpenSceneGraph erbjuder också sitt eget ASCII -.osg-format. Det finns exportörer i .osg-format för Blender , Maya och 3D Studio MAX.
Bildformat som stöds är .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga och quicktime.
Denna modul erbjuder också abstraktion av I / O-enheter.
OsgViewer
OsgViewer-biblioteket erbjuder ett snabbt och enkelt sätt att visualisera den grafiska scenen. Det är också en plattformsoberoende abstraktion för olika fönstersystemgränssnitt .
NodeKits
Projektdistributionen innehåller också ett stort antal så kallade NodeKits. Dessa är lösningar på vanliga problem och vanliga, mer avancerade 3D-applikationskomponenter och grafikalgoritmer. De viktigaste inkluderar
- osgAnimation - Använda skelettmodeller, animering och morphing.
- osgFX - specialeffekter och efterbehandling.
- osgManipulator - Interaktiv 3D-scenmanipulation.
- osgParticle - Utökad användning av partikelsystemet .
- osgQt - Integration med Qt Toolkit och integration av QtGUI-element i OSG-applikationer.
- osgShadow - Framework för skuggåtergivningstekniker.
- osgTerrain - Omfattande terrängåtergivning.
- osgText - Högkvalitativa anti-aliasing-teckensnitt, stöd för TrueType- och FreeType-teckensnitt.
- osgVolume - Volym rendering och manipulation av volymuppgifter.
- osgWidget - Enkel skapande av GUI .
Individuella bevis
- ^ A 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 , pp. 370 ( google.com ).
- ↑ Martz, P.: OpenSceneGraph snabbstartsguide. Louisville, USA, 2007.
- ↑ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ↑ Vulkan Scenegraph Project. 11 december 2018, nås 29 april 2021 .
- ^ OSG-nyheter. (Inte längre tillgängligt online.) 19 februari 2010, arkiverat från originalet den 9 juni 2011 ; Hämtad 20 februari 2010 .
- ^ OpenSceneGraph lägger till nya funktioner i 3D-grafikapplikationer. 5 april 2010; Arkiverad från originalet den 15 april 2010 ; Hämtad 10 april 2010 .
