OpenSceneGraph - OpenSceneGraph
![]() | |
| Versiune stabila | 3.6.5 / 31 ianuarie 2020
|
|---|---|
| Repertoriu |
|
| Scris in | C ++ |
| Sistem de operare | Cross-platform |
| Tip | Grafică 3D |
| Licență | Licență publică OpenSceneGraph ( bazată pe LGPL ) |
| Site-ul web |
www www |
OpenSceneGraph este o interfață de programare a aplicațiilor grafice 3D open-source (bibliotecă sau cadru), utilizată de dezvoltatorii de aplicații în domenii precum simularea vizuală , jocurile pe computer , realitatea virtuală , vizualizarea științifică și modelarea .
Setul de instrumente este scris în C ++ standard folosind OpenGL și rulează pe o varietate de sisteme de operare, inclusiv Microsoft Windows , macOS , Linux , IRIX , Solaris și FreeBSD . De la versiunea 3.0.0, OpenSceneGraph acceptă, de asemenea, dezvoltarea de aplicații pentru platformele mobile, și anume iOS și Android .
În 2021, proiectul este urmat de proiectul VulkanSceneGraph, o bibliotecă bazată pe Vulkan. OpenSceneGraph se află în faza de întreținere din 2019.
Istorie
Proiectul OpenSceneGraph a fost inițiat de Don Burns în 1998. Robert Osfield s-a alăturat proiectului în 1999, lucrând la portarea componentelor finite pentru Microsoft Windows. Proiectul a devenit open source în septembrie 1999 și a fost creat site-ul oficial al proiectului . Spre sfârșitul anului, Osfield a preluat proiectul și a început refactorizarea extinsă a bazei de cod existente, punând accent pe modernizare, îmbrățișând standardele C ++ moderne și modelele de proiectare .
În aprilie 2001, ținând cont de creșterea comunității de utilizatori și de interesul publicului, Robert Osfield a creat OpenSceneGraph Professional Services, oferind servicii de asistență comercială, consultanță și instruire. Aceasta marchează profesionalizarea deplină a proiectului.
Prima versiune oficială stabilă a OpenSceneGraph a fost versiunea 1.0, lansată în 2005. A urmat o versiune extinsă 2.0 în 2007, adăugând suport pentru sistemele multi-core și multi-gpu, câteva NodeKits importante și utilizarea sistemului de construire multiplatformă CMake . Au fost introduse cărți și manuale de utilizare.
Proiectul a crescut rapid și a devenit mai popular de atunci. Există mai mult de 530 de colaboratori semnați sub versiunea stabilă actuală, iar lista oficială de corespondență conține mii de nume.
În 2019, proiectul a fost mutat într-o fază de întreținere, principalul efort de dezvoltare fiind direcționat către proiectul său succesor VulkanSceneGraph.
Caracteristici
Funcții din versiunea 1.0:
- O implementare grafică de scenă bogată în caracteristici și adoptată pe scară largă
- Suport pentru funcții de creștere a performanței
- Vizualizați frustum , caracteristică mică și eliminarea ocluziei
- Nivelul de detaliu
- Sortarea statelor și actualizarea stării leneșe
- Căi rapide OpenGL și cele mai recente extensii
- Multi-threading și optimizarea bazei de date
- Suport pentru OpenGL, de la 1.1 la 2.0, inclusiv cele mai recente extensii
- Suport strâns cuplat pentru OpenGL Shading Language, dezvoltat împreună cu 3Dlabs
- Suport pentru o gamă largă de imagini 2D și formate de baze de date 3D, cu încărcătoare disponibile pentru formate precum OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG și GeoTIFF
- Efecte asupra particulelor
- Suport pentru text TrueType antialias
- Suport perfect pentru obiecte framebuffer , pbuffers și buffer de cadre pentru efectele de redare la textură
- Suport de paginare a bazelor de date cu mai multe fire, care poate fi utilizat împreună cu toate încărcătoarele de baze de date și imagini 3D
- Teren geospațial terestru la scară largă, generarea bazei de date paginate
- Suport de introspecție pentru bibliotecile de bază, permițând aplicațiilor externe să interogheze, să obțină, să seteze și să opereze pe toate clasele din graficul scenei, printr-o interfață generică
- Suport multi-thread și configurabil pentru mai multe mașini CPU / GPU multiple
Funcții din versiunea 2.8.3
- Suport pentru Mac OS X 10.6 (Snow Leopard)
- Suport ImageIO pe Mac OS X
- Exportul formatului de fișiere 3DS și conversia fișierelor
- Tehnologie integrată Autodesk FBX
- Suport FFmpeg integrat pentru afișarea conținutului fișierelor video în aplicații 3D.
- Suport pentru formatul de fișier PLY
Funcții din versiunea 2.8.4:
- Suport pentru construirea VS2010
Funcții din versiunea 3.0.0:
- Suport OpenGL ES 1.1 și OpenGL ES 2.0
- Suport OpenGL 3.x și 4.x împreună cu extensiile OpenGL asociate
- Suport pentru Android pe tablete și telefoane
- Suport pentru IOS pe tablete și telefoane (aplicațiile utilizatorilor finali au fost deja acceptate în App Store)
- Introducerea aplicației Present3D pentru prezentări 3D captivante
- Noi serializatoare extensibile care oferă noi formate native de fișiere .osgb binary, .osgt ascii și .osgx xml
- Noua arhitectură generalizată de metadate serializabile
- Noua bibliotecă osgQt care face ca integrarea să fie simplă! OpenSceneGraph cu Qt, inclusiv navigarea pe web prin QWebKit.
- Noul plugin FBX bazat pe Audodesk FBX DSK care permite citirea formatului de autorizare și schimbare .fbx 3D
- Noul plugin directshow pentru gestionarea filmelor sub Windows
- Noul plugin POV pentru exportul unei scene în format POV-Ray, permițând utilizarea POV-Ray pentru a face urmărirea foto-realistă a razelor
- Noul plugin pentru ply pentru citirea fișierelor ply
- Plugin 3ds renovat pentru citirea și scrierea fișierelor .3ds
- Plugin dxf renovat pentru citirea și scrierea fișierelor .dxf
- Suport pentru Cocoa și 64 bit OSX build
Istoricul versiunilor versiunii stabile
| Versiune | Data de lansare |
|---|---|
| 3.0 | 5 februarie 2013 |
| 3.2 | 24 iulie 2013 |
| 3.4 | 20 iulie 2015 |
| 3.4.1 | 28 august 2017 |
| 3.6 | 7 aprilie 2018 |
| 3.6.1 | 28 mai 2018 |
| 3.6.2 | 29 iunie 2018 |
| 3.6.3 | 14 septembrie 2018 |
| 3.6.4 | 26 iulie 2019 |
| 3.6.5 | 31 ianuarie 2020 |
Arhitectură
Arhitectura bibliotecii poate fi separată în trei subseturi principale - biblioteca OpenSceneGraph de bază, osgViewer și un set de NodeKits.
Miezul
Baza bibliotecii OpenSceneGraph poate fi împărțită în patru module principale.
osg
Nucleul OpenSceneGraph oferă clase și metode pentru construirea și manipularea graficului de scenă . Conține clase care reprezintă diferite tipuri de noduri , geometrie scenă, abstractizare a stării OpenGL , transformări geometrice , precum și clase matematice pentru operații vectoriale și matrice 2D și 3D . De asemenea, este inclusă gestionarea avansată a memoriei .
OpenThreads
Proiectul OpenSceneGraph conține o bibliotecă de filetare, OpenThreads , care este un ușor cross-platform fir de model . Acesta este destinat să furnizeze o interfață de thread minimă și completă orientată obiect (OO) pentru programatorii C ++ . Este modelat pe API-ul Java thread și pe standardele POSIX Threads .
Arhitectura de OpenThreads este conceput în jurul valorii de modele „swappable“ filet , care sunt definite în timpul compilării într - o bibliotecă de obiecte partajate . Este important să rețineți că, în timp ce un model de fabrică ar fi putut fi folosit pentru a atinge obiectivul interfeței generice , ar fi cerut programatorului să aloce fiecare dintre cele 4 tipuri fundamentale (Thread, Mutex, Barrier și Condition) pe grămadă . Datorită costului asociat cu alocarea heap a implementărilor concrete subiacente ale acestor construcții pe unele platforme, o astfel de alocare a fost considerată inacceptabilă în momentul în care a fost scrisă inițial această bibliotecă și, prin urmare, modelul fabricii nu a fost utilizat.
În schimb, a fost aleasă o tehnică oarecum abstrusă - dar eficientă - pentru a oferi ascunderea necesară a datelor / implementării . Această tehnică folosește indicatoare private de gol pentru a încapsula datele private ale obiectelor. Indicatorii de gol indică de fapt către structuri de date concrete, dar oferă o interfață uniformă la dso.
Scopul de proiectare al OpenThreads este de a construi implementări optimizate utilizând construcții multi-procesare optimizate de platformă, cum ar fi metodele sproc utilizate pe firele IRIX și Windows.
osgUtil
osgUtil conține funcționalități de back - end și utilități care se ocupă de traversarea graficului de scenă , de optimizare a redării și de transformare a scenei într-un flux de apeluri API OpenGL . De asemenea, oferă mijloace de interacțiune de bază cu scena, cum ar fi alegerea obiectelor.
osgDB
Această bibliotecă are sarcina de a încărca fișiere model 3D. Suportă multe manipulatoare de formate de date 2D / 3D . Sunt acceptate peste 50 de formate diferite - cele mai frecvente sunt formate de date 3D, precum COLLADA (.dae), LightWave (.lwo), Wavefront ( .obj ), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) și multe altele. OpenSceneGraph oferă, de asemenea, propriul său format ASCII .osg nativ . Există exportatori în format .osg disponibile pentru Blender , Maya și 3D Studio MAX.
Formatele de imagine acceptate includ .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga și quicktime .
Acest modul oferă, de asemenea, abstractizarea dispozitivelor I / O. Celelalte plugin-uri de încărcare în format fișier sunt înregistrate cu osgDB.
osgGA
Aceasta este o bibliotecă de abstracție GUI necesară pentru diferite platforme.
osgViewer
Biblioteca osgViewer oferă o modalitate rapidă și ușoară de a vizualiza scena grafică. Este, de asemenea, o abstracție independentă de platformă pentru diverse interfețe de sistem de ferestre .
osgProducer
OSG este livrat, de asemenea, cu un osgProducer, care este doar un vizualizator independent de platformă, care acceptă contexte grafice multiple și multi-threading.
NodeKits
Distribuția proiectului conține, de asemenea, o varietate de așa-numitele NodeKits . Acestea sunt soluții de probleme obișnuite și sunt utilizate frecvent componente mai avansate ale aplicațiilor 3D și algoritmi grafici. Printre cele mai semnificative se numără
- osgAnimation - Utilizarea, animarea și transformarea modelelor scheletice.
- osgFX - Efecte speciale și postprocesare a imaginii.
- osgManipulator - Manipularea interactivă a scenei 3D.
- osgParticle - Utilizare avansată a sistemului de particule .
- osgQt - Integrarea cu setul de instrumente Qt și încorporarea elementelor QtGUI în aplicațiile OSG.
- osgShadow - Cadru pentru tehnici de redare a umbrelor.
- osgTerrain - Redare extinsă a terenului .
- osgText - Fonturi antialiasate de calitate, suport pentru fonturi TrueType și FreeType.
- osgVolume - Redarea volumului și manipularea volumetrică a datelor.
- osgWidget - Creație simplă GUI .
Primirea și adoptarea
OpenSceneGraph nu oferă nicio funcționalitate pentru logica „de joc” superioară, este un instrument de redare. Există mai multe motoare la scară completă pentru crearea de jocuri pe computer (sau așa-numitele jocuri serioase ) folosind OSG ca bază de redare grafică, cel mai comun cadru fiind Delta3D .
Există o mare varietate de produse software construite deasupra OpenSceneGraph; printre altele, Virtual Terrain Project și ViewTec TerrainView . Lista utilizatorilor OSG conține companii precum Boeing , NASA , FlightGear , Norcontrol și multe altele.
La nivel de comunitate open source, mai multe proiecte au adoptat OSG ca backend de redare:
- FlightGear (software de simulare a zborului)
- OpenMW (motor Opensource pentru Morrowind)
OpenSceneGraph a primit o implementare javascript / WebGL numită OSG.JS care este utilizată de mulți vizualizatori de scene 3D online, inclusiv Sketchfab și Clara.io .
În prezent se dezvoltă și o împachetare de la C ++ la javascript prin Emscripten OGStudio .
Printre alte produse care utilizează OSG trebuie menționate:
- Remo 3D OSG Scene Editor
- http://www.palomino3d.org/
Vezi si
- OSG.JS
- OpenGL
- CĂPCĂUN
- Delta3D
- Motorul Irrlicht
- Spațiul de cristal
- Biblioteca de vizualizare
- OpenSG
- ossimPlanet
- Grome
- Deschideți inventatorul
- Unity (motor de joc)
Referințe
linkuri externe
-
www
.openscenegraph - site-ul oficial al proiectului.org - Binare AlphaPixel OSG - Windows, Mac și Linux x86 și x64 precompilate.
- SigmaOSG - Tutoriale OpenSceneGraph (conține tot materialul anterior OSGHelp de pe site-ul pensionat OSGHelp)
- Scenegraphs și Openscenegraph pentru dezvoltarea software-ului 3D
- OpenSceneGraph - pagina de informații despre bibliotecă pe www.OpenGL.org (una din cele patru biblioteci promovate)
