Visualizing Stereo Reconstruction (aka pointclouds in Blender)

Im Rahmen der Ausstellung +ultra. gestaltung schafft wissen habe ich ein Video zur Visualisierung des 3D Gesichtsreconstruktionsprozesses durch Stereophoto-grammetry erstellt. Es zeigt den Rekonstruktionsprozess im Computer - Ermittlung von Ort und Farbe von Punkten einer sog. Pointcoud durch mathematische Berechnungen - und parallel ein Bild der ermittelten 3D Farbpunkte , so wie sie in der Realität wahrgenommen werden würden. In diesem Blogeintrag will ich mich ein wenig zum Entstehungsprozess auslassen.

 

Sowohl für die 3D Scene als auch für die Komposition habe ich Blender verwendet - eine naheliegende Wahl für die 3D Scene. Gelernt habe ich jedoch, dass Blender nicht unbedingt die erste Wahl für die Visualisierung von pointclouds ist, sondern Animationen prinzipiell auf meshes beruhen. Das Problem fängt damit an, dass Blender im Regelfall die Polygone der meshes rendert - mit Haloeffekten ließe sich das Problem umgehen  -, und hört damit auf, dass Materialeigenschaften auf den Polygonen gespeichert werden und nur auf die Vertices extrapoliert werden. Da auch das Internet nur Patchlösungen kannte zu dem Zeitpunkt habe auch ich eine solche beigesteuert.

Die grundsätzliche Idee besteht darin für jeden Punkt eine Kugel/einen Würfel zu erstellen und diesen Punkten ein Material zuzuweisen. Diese Idee löst die obigen Probleme, wirft jedoch bei einer Blender Implementierung ein neues Problem auf: Blender ist nicht dafür ausgelegt tausende Objekte Stück für Stück zu laden. Es galt auch hier einem Nicht-Standard-Weg zu folgen, indem die Objekte erst einzeln erstellt und am Ende alle auf einmal mit der Blender Szene gelinkt wurden.

Bei Interesse am Code will ich diesen gern online zur Verfügung stellen. Bei der Google Recherche zum Thema bin ich des Weiteren auf CGCookies gestoßen - eine Lernplattform für Blender und andere Techniken. Rigging wurde sehr gut erklärt, vielleicht gilt das auch für andere Themenbereiche - Ausprobieren!

Kleinere Problemstellungen bei der Lösung waren:

- select object  and make it active

- mesh -> object

- custom data on vertices (only via bmesh)

- automated ply loading

- basic image to video composition using ffmpeg

Write a comment

Comments: 0