„OpenSceneGraph“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Aka (Diskussion | Beiträge) K Halbgeviertstrich, Links normiert, Kleinkram Markierung: Zurückgesetzt |
→Geschichte: Aus dem Englischen übersetzt Markierung: Zurückgesetzt |
||
Zeile 21: | Zeile 21: | ||
}} |
}} |
||
'''OpenSceneGraph''' ist ein [[quelloffen]]es [[Szenengraph]]system (SG), das in [[Echtzeit]]-Grafikanwendungen wie z. B. [[FlightGear]] eingesetzt wird. |
'''OpenSceneGraph''' ist ein [[quelloffen]]es [[Szenengraph]]system (SG)<ref name=springer>{{Literatur|Titel=Headway in Spatial Data Handling:13th International Symposium on Spatial Data Handling|Autor=Anne Ruas, Christopher Gold|Verlag=Springer|Datum=2008|Seiten=370|ISBN=9783540685661|Online=https://books.google.com/books?id=wc5gMNG3dIcC&q=OpenSceneGraph&pg=PA370}}</ref>, 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 [[Betriebssystem]]en, unter anderem [[Microsoft Windows]], [[Mac OS X]], [[Linux]], [[IRIX]], [[Solaris (Betriebssystem)|Solaris]] und [[FreeBSD]]. |
OpenSceneGraph wurde in [[C++]] geschrieben, verwendet [[OpenGL]]<ref name=springer/> 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. |
||
== Geschichte == |
|||
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. |
|||
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> |
|||
== Architektur == |
== Architektur == |
||
Zeile 76: | Zeile 85: | ||
* osgVolume – [[Volumengrafik|Volumen]]-Rendering und Manipulation volumetrischer Daten. |
* osgVolume – [[Volumengrafik|Volumen]]-Rendering und Manipulation volumetrischer Daten. |
||
* osgWidget – Einfache [[Grafische Benutzeroberfläche|GUI]]-Erstellung. |
* osgWidget – Einfache [[Grafische Benutzeroberfläche|GUI]]-Erstellung. |
||
== Einzelnachweise == |
|||
<references responsive /> |
|||
== Weblinks == |
== Weblinks == |
Version vom 29. April 2021, 00:26 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)[1], das in Echtzeit-Grafikanwendungen wie z. B. FlightGear eingesetzt wird.
OpenSceneGraph wurde in C++ geschrieben, verwendet OpenGL[1] 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.
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.[2]
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.[3]
Im Jahr 2019 wurde das Projekt in eine Wartungsphase überführt, wobei die Hauptentwicklungsarbeit in das Nachfolgeprojekt VulkanSceneGraph verlagert wurde.[4]
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 Szenengraphen bereit. Er enthält Klassen, die verschiedene Knotentypen, Szenengeometrie, OpenGL-Zustandsabstraktion, geometrische Transformationen sowie mathematische Klassen für 2D- und 3D-Vektor- und 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-Modell darstellt. Es soll eine minimale und vollständige objektorientierte (OO) Thread-Schnittstelle für C++-Programmierer bieten. Es ist lose an die Java-Thread-API und die POSIX-Thread-Standards angelehnt.
Die Architektur von OpenThreads basiert auf "austauschbaren" Thread-Modellen, die zur Kompilierzeit in einer Shared Object Library definiert werden. Es ist wichtig anzumerken, dass zwar ein 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, 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 Sproc-Methoden und Windows-Threads.
osgUtil
osgUtil enthält Rendering-Backend-Funktionalität und Dienstprogramme, die sich um die 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-Datenformate. Es werden mehr als 50 verschiedene Formate unterstützt – die gängigsten 3D-Datenformate, wie COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) und viele andere. OpenSceneGraph bietet auch ein eigenes natives ASCII-.osg-Format. Für Blender, Maya und 3D Studio MAX gibt es Exporter in das .osg-Format.
Unterstützte Bildformate sind .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds, .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 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 Partikelsystems.
- osgQt – Integration mit 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 – Volumen-Rendering und Manipulation volumetrischer Daten.
- osgWidget – Einfache GUI-Erstellung.
Einzelnachweise
- ↑ 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, S. 370 (google.com).
- ↑ Martz, P.: OpenSceneGraph Quick Start Guide. Louisville, USA, 2007.
- ↑ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ↑ VulkanSceneGraph Project. 11. Dezember 2018, abgerufen am 29. April 2021.