Point Based Rendering mit Integration in OpenSG
Diplomarbeit von Lars Hillebrand
Motivation
Punktbasiertes Rendern
Die Leistung der 3D-Hardware ist in letzter Zeit stark gestiegen, moderne Grafikkarten verarbeiten ca. 350 Millionen Dreiecke pro Sekunde. Das hat dazu geführt, dass die darzustellenden Szenen zunehmend komplexer und die einzelnen Dreiecke immer kleiner werden. Häufig entfallen nur wenige Pixel auf ein Dreieck, bei extrem komplexer Geometrie, wie dem Modell der David-Statue von Michelangelo, entfallen sogar mehrere hundert Dreiecke auf ein einzelnes Pixel. Auch die Visualisierung von Terrain und Pflanzen benötigt große Mengen an Geometriedaten. Das detailierte Modell eines Baumes kann leicht über 1 Millionen Dreiecke umfassen. Soll gar eine Landschaft mit viel Vegetation in Echtzeit dargestellt werden, sind heutige Rechner schnell überfordert. Der Overhead für die Berechnung der Geometrie nimmt immer mehr zu. Eine mögliche Lösung ist die Verwendung grafischer Primitive, die sich einfacher und effizienter rendern lassen als Dreiecke.
Viele moderne Geräte zum digitalisieren dreidimensionaler Objekte liefern als Ergebnis Punktwolken zurück, ohne jede Information über die Beziehungen zwischen den Punkten. Sollen diese Daten mit herkömmlichen Verfahren dargestellt werden, muss aus diesen Rohdaten erst ein Dreieckgitter erzeugt werden, was schwierig und zeitaufwendig ist. Viel eleganter währe es, diese Rohdaten direkt visualisieren zu können.
Diese Ansprüche könnten Punkte als Primitive erfüllen.
OpenSG
OpenSG ist ein frei verfügbares Szenengraphsystem, welches auf der SIGGRAPH 1999 von Dirk Reiners, Allen Bierbaum und Kent Watsen ins Leben gerufen wurde. Das Projekt ist inzwischen sehr weit fortgeschritten und bietet einen großen Funktionsumfang. Es ist portabel, flexibel und gut erweiterbar. Außerdem unterstützt es Multi-Threading und erlaubt es Szenen in einem Cluster zu rendern, wodurch sich preisgünstige PC-Hardware für High-End Anwendungen, wie z.B. eine Cave, nutzen läßt.
Aufgabenstellung
Im Rahmen dieser Diplomarbeit soll die Technik des Punktbasierten Renderns ausführlich erläutert sowie die Vor- und Nachteile gegenüber Polygonnetzen dargelegt werden. Dazu gehört auch eine Untersuchung, wie weit aktuelle 3D-Hardware für Punktbasiertes Rendern nutzbar ist. Es wird ein allgemeiner Überblick über OpenSG gegeben, wobei die zur Implementierung benötigten bzw. veränderten Komponenten ausführlicher behandelt werden. Schließlich wird in der Implementierung OpenSG um die Möglichkeit des Punkbasierten Renderns ergänzt und diese Erweiterung dokumentiert.
Ziel der Arbeit
Die während der Recherchen gewonnenen Erkenntnisse sollen benutzt werden, um das Szenengraphsystem OpenSG um die Fähigkeit zu erweitern, punktbasierte Geometrie zu rendern. OpenSG wurde von Anfang an so entworfen, dass eine Erweiterung um neue Komponenten sehr einfach möglich ist. Die Realisierung als Erweiterung von OpenSG bietet außerdem die interressante Möglichkeit, eine Szene aus herkömmlichen Polygonmodelle und Punktmodelle zu gestalten. Auch ein gemischtes LOD mit texturierten Polygonen im Nahbereich und Punktmodellen in größeren Entfernungen ist dann machbar.
Realisierung
Die Erweiterung wurde als neuer OpenSG-Knotentyp realisiert, der sich wie jeder andere Knotentyp in einen Szenengraphen einbinden läßt. Dadurch lassen sich Punktmodelle innerhalb einer Szene beliebig mit anderen Modellen, z.B. Polygonmodelle oder Volumendaten, kombinieren. Da die unterschiedlichen Modellarten ihre eigenen Vor- und Nachteile haben, ist besonders diese Kombinationsmöglichkeit interressant.
Das Renderverfahren selbst ist and das sogenannte Surface-Splatting angelehnt. Dieses bietet eine sehr gute Bildqualität mit Anti-Aliasing und läßt sich gut durch Shaderprogramme umsetzen.
Links
OpenSG
Insightdigital, Quelle des Statuenmodells
The Digital Michelangelo Project
Umfangreiche Linksammlung zum Thema Point Based Rendering
Für weitere Informationen bitte E-Mail an hillar[a@web.de.