„OpenSceneGraph“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
GünniX (Diskussion | Beiträge) K Tippfehler korrigiert Markierung: Zurückgesetzt |
Arilou (Diskussion | Beiträge) Revert: vmtl. URV (nicht lizenz-konforme Übersetzung; siehe WP:Übersetzungen) Markierung: Rückgängigmachung |
||
Zeile 21: | Zeile 21: | ||
}} |
}} |
||
'''OpenSceneGraph''' ist ein [[quelloffen]]es [[Szenengraph]]system (SG) |
'''OpenSceneGraph''' ist ein [[quelloffen]]es [[Szenengraph]]system (SG), das in [[Echtzeit]]-Grafikanwendungen wie z. B. [[FlightGear]] eingesetzt wird. |
||
OpenSceneGraph wurde in [[C++]] geschrieben, verwendet [[OpenGL]] |
OpenSceneGraph wurde in [[C++]] geschrieben, verwendet [[OpenGL]] als Grundlage für die 3D-Grafik und läuft auf einer Vielzahl von [[Betriebssystem]]en, unter anderem [[Microsoft Windows]], [[Mac OS X]], [[Linux]], [[IRIX]], [[Solaris (Betriebssystem)|Solaris]] und [[FreeBSD]]. |
||
Obwohl es einen ähnlichen Namen trägt wie das Szenengraphsystem [[OpenSG]] und etwa zur gleichen Zeit begonnen wurde, handelt es sich um zwei verschiedene und voneinander unabhängige Projekte. |
Obwohl es einen ähnlichen Namen trägt wie das Szenengraphsystem [[OpenSG]] und etwa zur gleichen Zeit begonnen wurde, handelt es sich um zwei verschiedene und voneinander unabhängige Projekte. |
||
Die Entwicklung von OpenSceneGraph begann im Jahre 1998 durch Don Burns. 1999 stieß Robert Osfield dazu. Das Projekt erfasst keine Downloadraten und besitzt keine Möglichkeit die Anzahl der aktiven Benutzer zu messen. Jedoch ist die Anzahl der Abonnenten der OSG-Mailing-List auf mehr als 1500 Leser im Jahr 2006 gestiegen. |
|||
== Geschichte == |
|||
Das OpenSceneGraph-Projekt wurde 1998 von Don Burns initiiert. Robert Osfield trat dem Projekt im Laufe des Jahres 1999 bei und arbeitete an der Portierung der fertigen Komponenten für Microsoft Windows. Das Projekt wurde im September 1999 Open Source und die offizielle Projekt-Website wurde erstellt. Gegen Ende des Jahres übernahm Osfield das Projekt und begann mit einem umfangreichen Refactoring der bestehenden Codebasis, wobei er den Schwerpunkt auf die Modernisierung legte und moderne C++-Standards und Design Patterns einbezog. |
|||
Im April 2001 gründete Robert Osfield unter Berücksichtigung der wachsenden Nutzergemeinde und des öffentlichen Interesses die OpenSceneGraph Professional Services, die kommerziellen Support, Beratung und Schulungen anbieten. Dies markiert die vollständige Professionalisierung des Projekts. |
|||
Die erste offizielle stabile Version von OpenSceneGraph war Version 1.0, die 2005 veröffentlicht wurde. Eine erweiterte Version 2.0 folgte 2007 und fügte Unterstützung für Multicore- und Multi-GPU-Systeme, mehrere wichtige NodeKits und die Verwendung des einheitlichen Multiplattform-Build-Systems [[CMake]] hinzu. Bücher und Benutzerhandbücher wurden eingeführt.<ref name="quickstart">Martz, P.: OpenSceneGraph Quick Start Guide. Louisville, USA, 2007.</ref> |
|||
Seitdem wächst das Projekt schnell und wird immer beliebter. Es gibt mehr als 530 Mitwirkende, die unter der aktuellen stabilen Version unterzeichnet sind, und die offizielle Mailingliste enthält Tausende von Namen.<ref name="History">http://www.openscenegraph.org/projects/osg/wiki/Support/History</ref> |
|||
Im Jahr 2019 wurde das Projekt in eine Wartungsphase überführt, wobei die Hauptentwicklungsarbeit in das Nachfolgeprojekt VulkanSceneGraph verlagert wurde.<ref name="VulkanSceneGraph">{{Internetquelle | url=http://www.openscenegraph.org/index.php/8-news/232-vulkan-vkscenegraph-project | titel=VulkanSceneGraph Project | datum=2018-12-11 | abruf=2021-04-29}}</ref> |
|||
== Merkmale == |
|||
Funktionen in Version 1.0:<ref>{{Internetquelle |url=http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.6/NEWS.txt | titel=OSG News | datum=2010-02-19 | abruf=2010-02-20 | archiv-url=https://web.archive.org/web/20110609185828/http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.6/NEWS.txt | archiv-datum=2011-06-09 | offline=1}}</ref> |
|||
* Eine funktionsreiche und weit verbreitete [[Szenengraphe]]n-Implementierung |
|||
* Unterstützung für leistungssteigernde Features |
|||
# View [[Frustum]], Small Feature und [[Sichtbarkeitsproblem|Occlusion Culling]] |
|||
# [[Level of Detail|Detaillierungsgrad]] |
|||
# Zustandssortierung und träge Zustandsaktualisierung |
|||
# Schnelle OpenGL-Pfade und neueste Erweiterungen |
|||
# Multi-Threading und Datenbank-Optimierung |
|||
* Unterstützung für OpenGL, von 1.1 bis 2.0 einschließlich der neuesten Erweiterungen |
|||
* Eng gekoppelte Unterstützung für OpenGL Shading Language, entwickelt in Zusammenarbeit mit 3Dlabs |
|||
* Unterstützung für eine Vielzahl von 2D-Bild- und 3D-Datenbankformaten, mit Ladeprogrammen für Formate wie OpenFlight, TerraPage, [[Wavefront OBJ|OBJ]], 3DS, [[JPEG]], [[Portable Network Graphics|PNG]] und [[GeoTIFF]] |
|||
* [[Partikelsystem|Partikel]]-Effekte |
|||
* Unterstützung für Anti-Aliased [[TrueType]]-Text |
|||
* Nahtlose Unterstützung für [[Framebuffer]]-Objekte, pbuffers und Framebuffer-Render-to-Texture-Effekte |
|||
* Multi-Threaded-Datenbank-Paging-Unterstützung, die in Verbindung mit allen 3D-Datenbank- und Bildladern verwendet werden kann |
|||
* Ausgelagerte Datenbankgenerierung für große geografische Terrains auf der ganzen Erde |
|||
* Introspektionsunterstützung für Kernbibliotheken, die es externen Anwendungen ermöglicht, über eine generische Schnittstelle alle Klassen im Szenegraphen abzufragen, zu erhalten, zu setzen und zu bearbeiten |
|||
* Multi-Thread- und konfigurierbare Unterstützung für mehrere CPU-/Mehrfach-GPU-Maschinen |
|||
Funktionen in Version 2.8.3<ref>{{Internetquelle | url=http://www.openscenegraph.org/projects/osg/wiki/News/Press/OSG2.8.3 | titel=OpenSceneGraph Adds New Features to 3D Graphics Applications | datum=2010-04-05 | abruf=2010-04-10 | archiv-url=https://web.archive.org/web/20100415145935/http://www.openscenegraph.org/projects/osg/wiki/News/Press/OSG2.8.3 | archiv-datum=2010-04-15}}</ref> |
|||
* Unterstützung von [[Mac OS X Snow Leopard|Mac OS X 10.6]] (Snow Leopard) |
|||
* ImageIO-Unterstützung unter [[macOS|Mac OS X]] |
|||
* 3DS-Dateiformatexport und Dateikonvertierung |
|||
* Integrierte Autodesk FBX-Technologie |
|||
* Integrierte FFmpeg-Unterstützung für die Anzeige von Videodateiinhalten in 3D-Anwendungen |
|||
* Unterstützung des PLY-Dateiformats |
|||
Funktionen in Version 2.8.4: |
|||
* VS2010-Build-Unterstützung |
|||
Funktionen in Version 3.0.0: |
|||
* Unterstützung von OpenGL ES 1.1, und OpenGL ES 2.0 |
|||
* Unterstützung von OpenGL 3.x und 4.x sowie der zugehörigen OpenGL-Erweiterungen |
|||
* Unterstützung für Android auf Tablets und Telefonen |
|||
* Unterstützung für [[iOS (Betriebssystem)|iOS]] auf [[Tabletcomputer|Tablets]] und Telefonen (Anwendungen für Endanwender wurden bereits im [[App Store]] akzeptiert) |
|||
* Einführung der Anwendung Present3D für immersive 3D-Präsentationen |
|||
* Neue erweiterbare Serialisierer, die die neuen nativen Formate .osgb binary, .osgt ascii und .osgx xml file bereitstellen |
|||
* Neue generalisierte serialisierbare Metadaten-Architektur |
|||
* Neue osgQt-Bibliothek, die eine einfache Integration von !OpenSceneGraph mit Qt ermöglicht, einschließlich Web-Browsing über QWebKit. |
|||
* Neues FBX-Plugin basierend auf dem Autodesk FBX DSK, das das Lesen des .fbx 3D-Authoring- und Interchange-Formats ermöglicht |
|||
* Neues directshow-Plugin für den Umgang mit Filmen unter Windows |
|||
* Neues pov-Plugin zum Exportieren einer Szene in das POV-Ray-Format, das die Verwendung von POV-Ray für fotorealistisches Raytracing ermöglicht |
|||
* Neues ply-Plugin zum Lesen von ply-Dateien |
|||
* Überarbeitetes 3ds-Plugin zum Lesen und Schreiben von .3ds-Dateien |
|||
* Überarbeitetes dxf-Plugin für das Lesen und Schreiben von .dxf-Dateien |
|||
* Unterstützung für Cocoa und 64bit OSX build |
|||
== Architektur == |
== Architektur == |
||
[[Datei:Architecture of OpenSceneGraph.jpg|miniatur|600px|Eine Übersicht der OpenSceneGraph Architektur]] |
|||
Hier ist eine Übersicht der OpenSceneGraph-Architektur: |
Hier ist eine Übersicht der OpenSceneGraph-Architektur: |
||
Die Architektur der Bibliothek kann in drei Hauptteile unterteilt werden – die Kernbibliothek OpenSceneGraph, osgViewer und eine Reihe von NodeKits. |
|||
=== Kern === |
|||
Die Basis der OpenSceneGraph-Bibliothek kann weiter in vier Hauptmodule unterteilt werden. |
|||
==== Osg ==== |
|||
Der Kern von OpenSceneGraph stellt Klassen und Methoden zur Konstruktion und Manipulation des [[Szenengraph]]en bereit. Er enthält Klassen, die verschiedene [[Knoten (Graphentheorie)|Knotentypen]], Szenengeometrie, [[OpenGL]]-Zustandsabstraktion, [[Koordinatentransformation|geometrische Transformationen]] sowie mathematische Klassen für 2D- und 3D-[[Vektor]]- und [[Matrix (Mathematik)#Addition und Multiplikation|Matrixoperationen]] repräsentieren. Eine erweiterte [[Speicherverwaltung]] ist ebenfalls enthalten. |
|||
==== OpenThreads ==== |
|||
Das OpenSceneGraph-Projekt enthält eine Threading-Bibliothek, OpenThreads, die ein leichtgewichtiges, plattformübergreifendes [[Thread (Informatik)|Thread]]-[[Computersimulation|Modell]] darstellt. Es soll eine minimale und vollständige objektorientierte (OO) Thread-Schnittstelle für [[C++]]-Programmierer bieten. Es ist lose an die [[Java (Programmiersprache)|Java]]-Thread-API und die POSIX-Thread-Standards angelehnt. |
|||
Die [[Softwarearchitektur|Architektur]] von OpenThreads basiert auf "austauschbaren" Thread-Modellen, die zur [[Übersetzungszeit|Kompilierzeit]] in einer [[Programmbibliothek#Dynamische Bibliotheken|Shared Object Library]] definiert werden. Es ist wichtig anzumerken, dass zwar ein [[Fabrikmethode|Factory-Pattern-Design]] hätte verwendet werden können, um das Ziel einer generischen [[Schnittstelle]] zu erreichen, aber dies hätte erfordert, dass der Programmierer jeden der 4 grundlegenden Typen (Thread, Mutex, Barrier und Condition) auf dem Heap zuweist. Aufgrund der Kosten, die mit der Heap-Allokation der zugrundeliegenden konkreten Implementierungen dieser Konstrukte auf einigen Plattformen verbunden sind, wurde eine solche Allokation zu der Zeit, als diese Bibliothek ursprünglich geschrieben wurde, als inakzeptabel erachtet, und daher wurde das Factory Pattern nicht verwendet. |
|||
Stattdessen wurde eine etwas abstruse – aber effektive – Technik gewählt, um die notwendigen Daten/Implementierungen zu verstecken. Diese Technik verwendet private Void-[[Zeiger (Informatik)|Zeiger]], um die privaten Daten des Objekts zu kapseln. Die Void-Pointer zeigen eigentlich auf konkrete Datenstrukturen, bieten aber eine einheitliche Schnittstelle zum dso. |
|||
Das Designziel von OpenThreads ist es, optimierte Implementierungen zu erstellen, die plattformoptimierte Multiprocessing-Konstrukte verwenden, wie z. B. die auf IRIX verwendeten [[Gespeicherte Prozedur|Sproc]]-Methoden und Windows-Threads. |
|||
==== OsgUtil ==== |
|||
osgUtil enthält [[Bildsynthese|Rendering]]-[[Front-End und Back-End|Backend]]-Funktionalität und Dienstprogramme, die sich um die [[Suchverfahren#Suche in Graphen|Durchquerung]] des Szenengraphen, die Rendering-Optimierung und die Umwandlung der Szene in einen Strom von OpenGL-Aufrufen kümmern. Es bietet auch Mittel zur grundlegenden Interaktion mit der Szene, wie z. B. die Auswahl von Objekten. |
|||
==== OsgDB ==== |
|||
OpenSceneGraph kommt auch mit einer großen Sammlung von Datenbankladern und vielen Manipulatoren für 2D/3D-[[Dateiformat|Datenformate]]. Es werden mehr als 50 verschiedene Formate unterstützt – die gängigsten 3D-Datenformate, wie [[Collada (Speicherformat)|COLLADA]] (.dae), [[LightWave 3D|LightWave]] (.lwo), [[Wavefront OBJ|Wavefront]] (.obj), OpenFlight (.flt), [[3ds Max|3D Studio Max]] (.3ds), [[DirectX]] (.x) und viele andere. OpenSceneGraph bietet auch ein eigenes natives [[American Standard Code for Information Interchange|ASCII]]-.osg-Format. Für [[Blender (Software)|Blender]], [[Maya (Software)|Maya]] und 3D Studio MAX gibt es Exporter in das .osg-Format. |
|||
Unterstützte Bildformate sind .rgb, [[Graphics Interchange Format|.gif]], [[JPG|.jpg]], [[Portable Network Graphics|.png]], [[Tagged Image File Format|.tiff]], .pic, [[Windows Bitmap|.bmp]], [[DirectDraw Surface|.dds]], [[Targa Image File|.tga]] und quicktime. |
|||
Dieses Modul bietet auch die Abstraktion von I/O-Geräten. |
|||
=== OsgViewer === |
|||
Die osgViewer-Bibliothek bietet eine schnelle und einfache Möglichkeit zur [[Informationsvisualisierung|Visualisierung]] der Grafikszene. Es ist auch eine plattformunabhängige Abstraktion für verschiedene [[Fenstersystem]]-Schnittstellen. |
|||
=== NodeKits === |
|||
Die Projektdistribution enthält auch eine Vielzahl von sogenannten NodeKits. Dabei handelt es sich um Lösungen für häufige Probleme und häufig verwendete, fortgeschrittenere 3D-Anwendungskomponenten und Grafikalgorithmen. Zu den wichtigsten gehören |
|||
* osgAnimation – Verwendung von Skelettmodellen, Animation und Morphing. |
|||
* osgFX – Spezialeffekte und Bildnachbearbeitung. |
|||
* osgManipulator – Interaktive 3D-Szenenmanipulation. |
|||
* osgParticle – Erweiterte Nutzung des [[Partikelsystem]]s. |
|||
* osgQt – Integration mit [[Qt (Bibliothek)|Qt-Toolkit]] und Einbindung von QtGUI-Elementen in OSG-Anwendungen. |
|||
* osgShadow – Framework für Schatten-Rendering-Techniken. |
|||
* osgTerrain – Umfangreiches Terrain-Rendering. |
|||
* osgText – Hochwertige Antialiasing-Schriften, Unterstützung von TrueType- und FreeType-Schriften. |
|||
* osgVolume – [[Volumengrafik|Volumen]]-Rendering und Manipulation volumetrischer Daten. |
|||
* osgWidget – Einfache [[Grafische Benutzeroberfläche|GUI]]-Erstellung. |
|||
[[Datei:Architecture of OpenSceneGraph.jpg|miniatur|zentriert|600px|Eine Übersicht der OpenSceneGraph Architektur]] |
|||
== Einzelnachweise == |
|||
<references responsive /> |
|||
== Weblinks == |
== Weblinks == |
Version vom 17. November 2021, 10:57 Uhr
OpenSceneGraph
| |
---|---|
![]() | |
![]() | |
Basisdaten
| |
Entwickler | Robert Osfield |
Aktuelle Version | 3.6.5 (31. Januar 2020) |
Betriebssystem | Cross-platform |
Programmiersprache | C++ |
Kategorie | Wissenschaftliche Visualisierung, Programmbibliothek |
Lizenz | OpenSceneGraph Public License (LGPL-basiert) |
deutschsprachig | nein |
www.openscenegraph.org |
OpenSceneGraph ist ein quelloffenes Szenengraphsystem (SG), das in Echtzeit-Grafikanwendungen wie z. B. FlightGear eingesetzt wird.
OpenSceneGraph wurde in C++ geschrieben, verwendet OpenGL als Grundlage für die 3D-Grafik und läuft auf einer Vielzahl von Betriebssystemen, unter anderem Microsoft Windows, Mac OS X, Linux, IRIX, Solaris und FreeBSD.
Obwohl es einen ähnlichen Namen trägt wie das Szenengraphsystem OpenSG und etwa zur gleichen Zeit begonnen wurde, handelt es sich um zwei verschiedene und voneinander unabhängige Projekte.
Die Entwicklung von OpenSceneGraph begann im Jahre 1998 durch Don Burns. 1999 stieß Robert Osfield dazu. Das Projekt erfasst keine Downloadraten und besitzt keine Möglichkeit die Anzahl der aktiven Benutzer zu messen. Jedoch ist die Anzahl der Abonnenten der OSG-Mailing-List auf mehr als 1500 Leser im Jahr 2006 gestiegen.
Architektur
Hier ist eine Übersicht der OpenSceneGraph-Architektur:
