Implementierung
- Graphische Benutzeroberfläche:
Das Verfahren wurde in einem eigenständigen Programm in C++ implementiert, das eine mittels Qt geschriebene Benutzeroberfläche bietet.
- Stanford-Ply Dateiformat:
3D Daten können aus dem Stanford-Ply Dateiformat ausgelesen werden, sowohl in der ASCII- als auch als binär-Variante.
- Picking von Vertices:
Zum Auswählen von Punkten auf der Oberfläche des Objekt wurde ein Picking Algorithmus implementiert, womit einzelne Vertices mit der Maus ausgewählt werden können.
- Clustering Algorithmus:
Für das Clustern der Farbwerte wird ein K-means Algorithmus verwendet. Er ermöglicht das Finden einer einstellbaren Anzahl an Clustern.
- Hardware-Unterstützung:
Cg (C for graphics) wird benutzt um das Lichtmodell und die Vertexfarben zu berechnen und darzustellen.
- Modularer Aufbau:
Einzelne Funktionalitäten des Programms sind nach Möglichkeit (in Klassen) getrennt, sodass Erweiterungen oder Änderungen leichter zu implementieren sind. Auch Funktionalität und Benutzeroberfläche sind voneinander getrennt.
Bei der Implementierung wurde versucht Funktionalität möglichst in einzelne Komponenten zu kapseln um Änderungen und Erweiterungen einfacher zu gestalten und eine Trennung von Funktionalität und Oberfläche zu erhalten. Eine Exportfunktion für bearbeitete Daten ist leider noch nicht implementiert, und daher grau im Bild dargestellt.
Darstellung zum Vertex Picking. Klickt der Nutzer auf dem Bildschrim auf den Punkt p, wird das Vertex gewählt, das der Geraden (Kamera - p) am nächsten liegt.
Quelle: http://schabby.de/picking-opengl-ray-tracing/ (Datum 14.02.2013)