Visualisierungsbibliothek - Visualization Library
| Erstveröffentlichung | 7. Mai 2007 |
|---|---|
| Stabile Version | 1.0.0 / 16. Mai 2012
|
| Geschrieben in | C ++ |
| Betriebssystem | Plattformübergreifend |
| Art | 3D-Grafiken |
| Lizenz | Vereinfachte BSD-Lizenz |
| Webseite | visualizationlibrary |
Visualization Library ( VL ) ist eine Open-Source-C ++ - Middleware für 2D / 3D-Grafikanwendungen auf Basis von OpenGL 4, mit der tragbare Anwendungen für die Betriebssysteme Microsoft Windows , Linux und Mac OS X entwickelt werden können.
Designziele
Die Visualisierungsbibliothek wurde entwickelt, um:
- Implementieren Sie einen intuitiven, dünnen und portablen C ++ - Wrapper um OpenGL 4.
- Seien Sie vollständig kompatibel mit älteren Versionen von OpenGL (1.x, 2.x und 3.x).
- Stellen Sie die Funktionen und Leistungen moderner GPUs auch für Nicht-Gaming-Anwendungen wie Virtual Reality, wissenschaftliche und medizinische Visualisierung, Simulatoren, Schulungen usw. bereit.
- Stellen Sie ein generisches und feinkörniges Framework bereit, mit dem benutzerdefinierte Rendering-Techniken zusammengestellt werden können.
- Vermeiden Sie die architektonischen Einschränkungen des Paradigmas der Über-Szenen-Graphen.
- Geben Sie dem Programmierer so viel Kontrolle wie möglich, während Sie sich um die schmutzigen Details kümmern.
Internes Design
Das Design der Visualisierungsbibliothek basiert auf der Spezialisierung und Trennung von Algorithmen und Datenstrukturen, im Gegensatz zu vielen anderen 3D-Frameworks, die Teil der sogenannten "Uber Scene Graph " -Familie sind, dh den 3D-Engines, die alle Rendering-Informationen in einer einzigen hierarchischen Struktur speichern . Daher verwendet die Visualisierungsbibliothek unterschiedliche Datenstrukturen (möglicherweise hierarchisch), um jede bestimmte Domäne der Rendering-Pipeline zu verwalten.
Beispielsweise wird der Transformationsbaum in einer separaten Baumgraph-Datenstruktur gespeichert, und der Objektteil der Szene ("Akteure" in der Sprache der Visualisierungsbibliothek) kann sich frei auf einen Knoten des Transformationsbaums beziehen.
Akteure werden in ihrer eigenen Szenenpartitionierungsdatenstruktur gehalten, aus der ihre Sichtbarkeit gegen den Ansichtsstumpf getestet wird und aus der sie schließlich zum Rendern extrahiert werden, um Teil der Renderwarteschlange zu sein. Dies ermöglicht es VL, von praktisch jeder Art von Szenenverwaltungstechnik wie PVS, Portal / Sektor, KdTree , Quadtrees , Octrees usw. unabhängig zu sein und diese zu nutzen .
Shader sind auch ein Konzept, das vom Rest der Logik unabhängig gehalten wird und keine hierarchische Datenstruktur erfordert, die von einem Akteur verwendet werden muss. VL bietet jedoch eine ShaderNode-Klasse als High-Level-Service, mit der der Benutzer Shader hierarchisch aktualisieren und verwalten kann, indem er Vererbungsregeln verwendet, die denen ähneln, die üblicherweise in Frameworks auf der Basis von Über-Szenendiagrammen verfügbar sind. Die Rendering-Pipeline folgt einem ähnlichen modularen Ansatz, sodass hochgradig angepasste Rendering-Techniken durch Zusammenstellen und Wiederverwenden von VL-Komponenten implementiert werden können.
Haupteigenschaften
- OpenGL-Unterstützung: 1.x, 2.x, 3.x, 4.x.
- Betriebssystemunterstützung: Windows XP, Vista, 7, Mac OS, Linux
- GUI-Bindungen: Win32, MFC, Qt4, wxWidgets, SDL, GLUT.
- 3D-Dateiformate: 3DS, OBJ, PLY (binär und ASCII), STL (binär und ASCII), AC3D, MD2. Weitere können angeschlossen werden.
- Unterstützte Bilddateiformate: JPG, PNG, TGA, TIFF, BMP, DDS, DICOM. Weitere können angeschlossen werden.
- Volumenvisualisierung: Raycast-Volumen-Rendering (Übertragungsfunktionen, Isofläche usw.), bildschirmausgerichtete Schichten, effiziente Implementierung von Marschwürfeln.
- Texturierung: 1D / 2D / 3D-Texturen, Cubemaps, Multitexturierung, Texturarrays, Texturrechtecke, Rendering to Texture, Texturkoordinatengenerierung, Texturkombinierer, Mipmapping und Mipmapsgenerierung, anisotrope Filterung, komprimierte Texturen, Tiefenstrukturen, ganzzahlige Texturen, nicht normalisierte Texturen, Texturpuffer, Multisample-Texturen.
- OpenGL Shading Language 1.x bis 4.x unterstützt einschließlich Geometrie- und Tessellation-Shader.
- Automatisches Transparenzmanagement.
- Automatische Sortierung des Renderzustands und Minimierung des Setups.
- Automatische Verwaltung von Vertex-Pufferobjekten.
- Umfangreiche Unterstützung für Framebuffer-Objekte.
- Bereitgestellte Szenenmanager: generischer hierarchischer Volumenbaum, KdTree, portalbasiertes Szenendiagramm.
- Hochwertige Unicode-Textwiedergabe- und Textmanipulationsfunktionen und -klassen.
- GLSL-basierte erweiterte C ++ - Vektor- / Matrixbibliothek.
- Geometrieoptimierungsfunktionen, Dreiecksreduzierung / -dezimierung, Entfernung von Doppelscheitelpunkten usw.
- Molekulare Visualisierung.
- Extrusionserzeugung.
- Lineare und Catmull-Rom-Pfadinterpolation.
- Bikubische Bézier-Oberflächen.
- Kanten- und Silhouettenverbesserung.
- Virtuelles Dateisystem: Abstraktes Dateisystem, das den transparenten Zugriff auf Datenträgerdateien, Speicherdateien, ZIP-Dateien und GZ-Dateien ermöglicht.
- Erweiterbares Ressourcensystem zur Unterstützung neuer Ressourcentypen und Dateiformate.
- Viel Dokumentation und viele Beispiele.
Entwicklungsstatus
Die erste öffentliche Veröffentlichung der Visualization Library erfolgte am 7. Mai 2007.
Die Visualisierungsbibliothek befindet sich derzeit in ihrer zweiten stabilen Version, VL 2011.05.1140, die auf die erste Version, VL 2009.07.640, folgt. Während das Design im Wesentlichen gleich blieb, unterscheidet sich die neueste stabile Version von ihrer Vorgängerin hauptsächlich durch: Unterstützung von OpenGL 3 und 4 und insbesondere von Tessellation-Shadern, einheitlichen Variablen mit doppelter Genauigkeit, neuen Texturformaten wie Multisample-Texturen und Texturobjekten, umfassender Unterstützung von Framebuffer-Objekten und Eine bessere Abstimmung für Anwendungen, die neben vielen anderen Verbesserungen GLSL stark nutzen .