In der 3D-Messtechnik wird eine intuitiv erfassbare Darstellung der Messergebnisse immer wichtiger. Aus den umfangreichen multidimensionalen Datenströmen müssen die relevanten Informationen ausgewählt und aufbereitet werden. Wir entwickeln Softwarebausteine zur anwendungsspezifischen Visualisierung von 3D-Daten mit Metainformationen.
GPU-Programmierung für interaktive 3D-Anwendungen
Die 3D-Datenerfassung bietet einen hohen Mehrwert, beispielsweise wenn es um die Inspektion und das Monitoring baulicher Infrastruktur geht. Die Mensch-Maschine-Schnittstelle ist dabei in der Regel noch immer ein Bildschirm, kombiniert mit interaktiven Eingabegeräten wie Maus oder Tastatur. Technologien aus den Bereichen Augmented oder Virtual Reality (AR/VR) bieten inzwischen die technologische Voraussetzung für die 3D-Visualisierung von Messdaten. So wird das intuitive Erfassen relevanter Messparameter möglich. Was die Bedienung für den Betrachtenden erleichtern soll, erfordert auf Seiten der Entwicklung umfangreiches Know-how in der spezifischen Prozessierung von Daten und algorithmischen Visualisierungstechniken.
Damit der Mensch die Darstellung als angenehm empfindet, muss sie ruckelfrei erfolgen. Dies ist ab einer Bildfolge von mindestens 20 Hertz der Fall. 3D-Datensätze aus messtechnischen Anwendungen bestehen üblicherweise aus mehreren hunderttausend 3D-Punkten. Diese müssen für jedes einzelne zu generierende 2D-Bild zunächst in den Bildraum transformiert werden. Dann erfolgt für jedes Pixel des Ergebnisbilds eine komplexe Berechnung von Farbwerten, Schatten und Texturen. Hierzu ist eine enorme Rechenleistung nötig. Getriggert von der Gaming-Industrie sind heute extrem leistungsfähige GPUs (Graphical Processing Unit) mit sehr hohen Rechenleistungen verfügbar. Mit diesen GPUs der neuen Generation ist eine enorme Parallelisierung von Bild-Rechenprozessen möglich. Die effiziente Nutzung der GPU bildet die Grundlage unserer Arbeiten zur 3D-Datenvisualisierung. Dabei setzen wir auf plattformunabhängigen Source-Code.
Daten für die Echtzeitvisualisierung vorbereiten
3D-Daten liegen im Rohformat zunächst als Punktwolken vor. Dies sind große, ungeordnete Punktmengen ohne jegliche Zusatzinformation, etwa über Nachbarschaftsverhältnisse oder Zugehörigkeit zu Flächen. Während in 2D-Bildern in jedem Pixel Information steckt, die für das menschliche Auge in geordneter Form erscheint, weisen 3D-Punktwolken viele Lücken auf. Das macht sie für den Menschen schwer zu interpretieren. Deshalb vermaschen wir in unserer Visualisierungssoftware zunächst die Daten, bilden also Oberflächen, die die Lücken füllen. Hierzu werden Beziehungen zwischen benachbarten Einzelpunkten in der Punktwolke gesucht und es werden Flächen gebildet, die von zusammengehörigen Punkten aufgespannt werden. Oft bestehen die Flächen aus triangulierten Quadraten, die jeweils wiederum aus zwei zusammengesetzten Dreiecken bestehen. Die Kantenlänge der Dreiecke bestimmt dabei die Maschenweite des entstehenden Gitters. Diesen Dreiecken wird dann wiederum eine Farbe zugeordnet, die repräsentativ für das Oberflächenstück ist.
Während der Vermaschung findet bereits eine erste Reduktion der Datenmenge statt, da auf einer Fläche liegende Punkte nun nicht mehr einzeln vorliegen, sondern bereits in das Dreieck mit der Information über Größe und Lage im Raum aufgegangen sind. Für die Echtzeit-3D-Darstellung sind vermaschte 3D-Geometrien deshalb besonders günstig. Hier liegen neben verhältnismäßig wenigen Punkten (begrenzt auf mehrere Hunderttausend) zusätzlich Informationen vor, wie die Punkte miteinander zu Flächen verbunden sind.