OpenSceneGraph - OpenSceneGraph

OpenSceneGraph
Osglogo2.0.png
Stabil udgivelse
3.6.5 / 31. januar 2020 ; 18 måneder siden ( 2020-01-31 )
Depot Rediger dette på Wikidata
Skrevet i C ++
Operativ system På tværs af platforme
Type 3D grafik
Licens OpenSceneGraph Public License ( LGPL -baseret)
Internet side www .openscenegraph .org
www .openscenegraph .com

Openscenegraph er en open-source 3D-grafik application programming interface (bibliotek eller rammer), der bruges af applikationsudviklere på områder som visuel simulation , computerspil , virtual reality , videnskabelig visualisering og modellering .

Værktøjssættet er skrevet i standard C ++ ved hjælp af OpenGL og kører på en række forskellige operativsystemer, herunder Microsoft Windows , macOS , Linux , IRIX , Solaris og FreeBSD . Siden version 3.0.0 understøtter OpenSceneGraph også applikationsudvikling til mobile platforme, nemlig iOS og Android .

Som 2021 efterfølges projektet af VulkanSceneGraph-projektet, et Vulkan-baseret bibliotek. OpenSceneGraph er i vedligeholdelsesfase siden 2019.

Historie

OpenSceneGraph -projektet blev igangsat af Don Burns i 1998. Robert Osfield sluttede sig til projektet i løbet af 1999 og arbejdede på at overføre færdige komponenter til Microsoft Windows. Projektet gik open source i september 1999, og det officielle projektwebsted blev oprettet. Mod slutningen af ​​året overtog Osfield projektet og begyndte omfattende ombygning af den eksisterende kodebase med vægt på modernisering, omfavnelse af moderne C ++ - standarder og designmønstre .

I april 2001 skabte Robert Osfield, under hensyntagen til det voksende fællesskab af brugere og offentlighedens interesse, OpenSceneGraph Professional Services, der leverede kommerciel support, rådgivning og uddannelsestjenester. Dette markerer fuld professionalisering af projektet.

Den første officielle stabile version af OpenSceneGraph var version 1.0, udgivet i 2005. En udvidet version 2.0 fulgte i 2007 og tilføjede understøttelse af multi-core- og multi-gpu-systemer, flere vigtige NodeKits og brug af et samlet multiplatform-byggesystem CMake . Bøger og brugerhåndbøger blev introduceret.

Projektet er siden vokset hurtigt og blevet mere populært. Der er mere end 530 bidragydere underskrevet under den nuværende stabile version, og den officielle mailingliste indeholder tusindvis af navne.

I 2019 blev projektet flyttet til en vedligeholdelsesfase, hvor den vigtigste udviklingsindsats blev dirigeret til dets efterfølgerprojekt VulkanSceneGraph.

Funktioner

Image
Oversigt over den åbne scenegrafarkitektur.

Funktioner i version 1.0:

  • En feature-rige og bredt vedtaget scene graf implementering
  • Understøttelse af præstationsforøgende funktioner
    1. Se frustum , lille funktion og okklusionsslagtning
    2. Detaljeringsniveau
    3. Statssortering og doven tilstandsopdatering
    4. OpenGL hurtige stier og nyeste udvidelser
    5. Multi-threading og databaseoptimering
  • Understøttelse af OpenGL, fra 1.1 til 2.0 inklusive de nyeste udvidelser
  • Tæt koblet support til OpenGL Shading Language, udviklet sammen med 3Dlabs
  • Understøttelse af en bred vifte af 2D -billed- og 3D -databaseformater, med læssere til formater som OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG og GeoTIFF
  • Partikeleffekter
  • Understøttelse af anti-aliaset TrueType- tekst
  • Problemfri understøttelse af rammebufferobjekter , pbuffere og rammebuffer-gengivelse-til-tekstur-effekter
  • Multi-threaded database personsøgningsunderstøttelse, som kan bruges sammen med alle 3D-databaser og billedlæsere
  • Generering i stor skala af geospatialt terræn i hele jorden med databasegenerering
  • Introspektionsstøtte til kernebiblioteker, der gør det muligt for eksterne applikationer at forespørge, hente, indstille og betjene alle klasser i scenediagrammet via en generisk grænseflade
  • Multi-threaded og konfigurerbar support til flere CPU/flere GPU-maskiner

Funktioner i version 2.8.3

  • Mac OS X 10.6 (Snow Leopard) support
  • Support af ImageIO på Mac OS X
  • 3DS -filformateksport og filkonvertering
  • Integreret Autodesk FBX -teknologi
  • Integreret FFmpeg -understøttelse til visning af videofilindhold i 3D -applikationer.
  • Understøttelse af PLY -filformat

Funktioner i version 2.8.4:

  • VS2010 build support

Funktioner i version 3.0.0:

  • OpenGL ES 1.1 og OpenGL ES 2.0 support
  • OpenGL 3.x og 4.x understøtter sammen med tilhørende OpenGL -udvidelser
  • Understøttelse af Android på tablets og telefoner
  • Understøttelse af IOS på tablets og telefoner (slutbrugerprogrammer er allerede accepteret i App Store)
  • Introduktion af Present3D -applikation til fordybende 3D -præsentationer
  • Nye udvidelige serialiserere, der leverer nye .osgb binære, .osgt ascii og .osgx xml fil native formater
  • Ny generaliseret serialiserbar metadataarkitektur
  • Nyt osgQt -bibliotek, der gør det ligetil at integrere! OpenSceneGraph med Qt, herunder webbrowsing via QWebKit.
  • Nyt FBX -plugin baseret på Audodesk FBX DSK, der muliggør læsning af .fbx 3D -redigerings- og udvekslingsformat
  • Nyt plugin til direkte show til håndtering af film under Windows
  • Nyt pov-plugin til eksport af en scene til POV-Ray-format, der gør det muligt at bruge POV-Ray til fotorealistisk strålesporing
  • Nyt ply -plugin til læsning af ply -filer
  • Renoveret 3ds -plugin til læsning og skrivning af .3ds -filer
  • Renoveret dxf -plugin til læsning og skrivning af .dxf -filer
  • Understøttelse af kakao og 64bit OSX build

Stabil versionversionshistorik

Version Udgivelses dato
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. maj 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

Biblioteksarkitektur kan adskilles i tre hovedundersæt - kernen OpenSceneGraph -bibliotek, osgViewer og et sæt NodeKits.

Kerne

Basen i OpenSceneGraph -biblioteket kan yderligere opdeles i fire hovedmoduler.

osg

Kernen i openscenegraph tilbyder klasser og fremgangsmåder til konstruktion og manipulering af scenen grafen . Den indeholder klasser, der repræsenterer forskellige typer noder , scene geometri, OpenGL -tilstandsabstraktion, geometriske transformationer samt matematiske klasser til 2D- og 3D -vektor- og matrixoperationer . Avanceret hukommelsesstyring er også inkluderet.

OpenThreads

Den openscenegraph Projektet indeholder en gevindskæring bibliotek, OpenThreads , hvilket er en letvægts cross-platform tråd model . Det er beregnet til at give en minimal og komplet objektorienteret (OO) trådgrænseflade til C ++- programmører. Det er løst modelleret på Java thread API og POSIX Threads -standarderne .

Den arkitektur af OpenThreads er designet omkring "swap" tråd modeller, som er defineret ved compile-tid i et delt objekt bibliotek . Det er vigtigt at bemærke, at selvom et fabriksmønsterdesign kunne have været brugt til at nå målet om generisk grænseflade , ville det have krævet, at programmereren allokerede hver af de 4 grundlæggende typer (tråd, Mutex, barriere og tilstand) på bunke . På grund af omkostningerne forbundet med tildeling af bunke af de underliggende konkrete implementeringer af disse konstruktioner på nogle platforme, blev en sådan fordeling anset for uacceptabel på det tidspunkt, hvor dette bibliotek oprindeligt blev skrevet, og derfor blev fabriksmønsteret ikke brugt.

I stedet blev en lidt abstrakt - men effektiv - teknik valgt til at give de nødvendige data/implementering skjul . Denne teknik bruger private tomrumspunkter til at indkapsle objektdata. Tomrumspunkterne peger faktisk på konkrete datastrukturer, men giver en ensartet grænseflade til DSO.

Designmålet med OpenThreads er at konstruere optimerede implementeringer ved hjælp af platformoptimerede multi-bearbejdningskonstruktioner, såsom sproc- metoderne, der bruges på IRIX og Windows-tråde.

osgUtil

osgUtil indeholder rendering backend -funktionalitet og hjælpeprogrammer, der tager sig af scenediagramoverskridelser , gengiver optimering og omdanner scenen til en strøm af OpenGL API -opkald. Det giver også midler til grundlæggende interaktion med scene, såsom objektplukning.

osgDB

Dette bibliotek har til opgave at indlæse 3D -modelfiler. Det understøtter mange 2D / 3D data formater manipulatorer. Mere end 50 forskellige formater understøttes - mest almindelige er 3D -dataformater , såsom COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) og mange andre. OpenSceneGraph har også sit eget native ASCII .osg -format. Der er eksportører til .osg -format til rådighed for Blender , Maya og 3D Studio MAX.

Understøttede billedformater omfatter .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga og quicktime .

Dette modul giver også I/O -enhedens abstraktion. De andre filformat loader-plugins er registreret hos osgDB.

osgGA

Dette er et GUI -abstraktionsbibliotek, der kræves til forskellige platforme.

osgViewer

osgViewer Library giver en hurtig og nem måde at visualisere grafikscenen . Det er også en platformuafhængig abstraktion til forskellige vinduessystemgrænseflader .

osgProducer

OSG'en leveres også med en osgProducer, som kun er en platformuafhængig fremviser, der understøtter flere grafiske sammenhænge og multi-threading.

NodeKits

Projektdistribution indeholder også en række såkaldte NodeKits . Disse er løsninger på almindelige problemer og ofte anvendte mere avancerede 3D -applikationskomponenter og grafikalgoritmer. Blandt de mest betydningsfulde er

  • osgAnimation - Brug af skeletmodeller, animationer og morphing.
  • osgFX - Specialeffekter og billede efterbehandling.
  • osgManipulator - Interaktiv 3D -scenemanipulation.
  • osgParticle - Avanceret partikelsystembrug .
  • osgQt - Integration med Qt -værktøjskasse og inkorporering af QtGUI -elementer i OSG -applikationer.
  • osgShadow - Ramme til skyggegengivelsesteknikker.
  • osgTerrain - Omfattende terrengengivelse .
  • osgText - Kvalitet antialiaserede skrifttyper, understøttelse af TrueType og FreeType skrifttyper.
  • osgVolume - Volume rendering og volumetrisk data manipulation.
  • osgWidget - Enkel oprettelse af GUI .

Modtagelse og adoption

OpenSceneGraph giver ikke nogen funktionalitet til højere "gaming" logik, det er et værktøj, der kun er gengivelse. Der er flere full-skala motorer til computerspil (eller såkaldte seriøse spil ) oprettelse ved hjælp af OSG som en base for grafisk gengivelse, den mest almindelige ramme er Delta3D .

Der er et stort udvalg af softwareprodukter bygget oven på OpenSceneGraph; blandt andre Virtual Terrain Project og ViewTec TerrainView . Liste over OSG -brugere indeholder virksomheder som Boeing , NASA , FlightGear , Norcontrol og mange andre.

På opensource -fællesskabsplan har flere projekter vedtaget OSG som gengivelse af backend:

  • FlightGear (Flight Simulation software)
  • OpenMW (Opensource engine for Morrowind)

OpenSceneGraph har modtaget en javascript/WebGL -implementering kaldet OSG.JS , der bruges af mange online 3D -scenevisere, herunder Sketchfab og Clara.io .

En indpakning fra C ++ til javascript gennem Emscripten OGStudio er også i øjeblikket udviklet.

Blandt andre produkter, der bruger OSG, skal nævnes:

Se også

Referencer

eksterne links