15. Dezember 2023

3D Gaussian Splatting

Radiance-Field-Methoden haben in jüngster Zeit die Synthese von Ansichten aus Szenen, die mit mehreren Fotos oder Videos erfasst wurden, revolutioniert. Für eine hochwertige Visualisierung sind jedoch nach wie vor neuronale Netze erforderlich, deren Training und Rendering teuer und langsam sind.

Hier kommt 3D Gaussian Splatting ins Spiel – ein Verfahren, das verspricht, eine 3D-Szene in Echtzeit zu rendern. Hier finden Sie alle Details!

Was ist 3D Gaussian Splatting?

Gaussian Splatting ist eine Rendering-Technik, die in den 90er-Jahren im wissenschaftlichen Umfeld entstand. Ihre jüngste Anwendung auf die Echtzeitvisualisierung von Szenen, vorgestellt im vergangenen August auf der SIGGRAPH 2023, hat sie jedoch wieder in den Fokus gerückt.

Gaussian Splatting ist eine Rasterisierungstechnik zur Echtzeit-3D-Rekonstruktion und zum Rendering von Bildern, die aus mehreren Blickwinkeln aufgenommen wurden.

Der 3D-Raum wird als Menge von Gauß-Funktionen definiert, deren Parameter jeweils per maschinellem Lernen berechnet werden. Das bedeutet:

  • Daten haben, die die Szene beschreiben.
  • Die Daten auf dem Bildschirm zeichnen.

Das Verfahren ist damit vergleichbar mit der Dreiecksrasterisierung in der Computergrafik, mit der viele Dreiecke auf dem Bildschirm gezeichnet werden. Statt Dreiecken werden hier jedoch Gauß-Funktionen gezeichnet. Eine solche wird durch folgende Parameter beschrieben:

  • Position: wo sie sich befindet (XYZ)
  • Kovarianz: wie sie gestreckt/skaliert ist (3×3-Matrix)
  • Farbe: RGB
  • Alpha: ihre Transparenz (α)

Hier ein Beispiel

*Raster-Dreieck – Gauß-Funktion

Wie funktioniert Gaussian Splatting?

3D Gaussian Splatting stellt eine 3D-Szene als Millionen von Partikeln (Gauß-Funktionen) dar. Jede 3D-Gauß-Funktion besitzt eine Position, Ausrichtung und Skalierung sowie eine Deckkraft und eine Farbe.

Um diese Partikel zu rendern, werden sie in den 2D-Raum überführt und anschließend für ein effizientes Rendering angeordnet. Die Schritte sind:

  1. Structure from Motion: Zunächst wird mit dem Structure-from-Motion-Verfahren (SfM) aus Bildern eine Punktwolke erzeugt. Dies kann mit COLMAP erfolgen.
  2. Umwandlung in Gauß-Funktionen: Jeder Punkt wird in eine Gauß-Funktion umgewandelt, wodurch die Rasterisierung möglich wird. Aus den SfM-Daten lassen sich jedoch nur Position und Farbe ableiten.
  3. Training: Damit eine Darstellung hochwertige Ergebnisse liefert, muss sie trainiert werden. Dazu wird – ähnlich wie bei einem neuronalen Netz – der stochastische Gradientenabstieg (Stochastic Gradient Descent) verwendet.
    1. Gauß-Funktionen mittels differenzierbarer Gauß-Rasterisierung in ein Bild rasterisieren.
    2. Den Verlust anhand der Differenz zwischen dem gerasterten Bild und dem realen Referenzbild berechnen.
    3. Die Gauß-Parameter entsprechend dem Verlust anpassen.
    4. Automatische Verdichtung anwenden.
  4. Differenzierbare Gauß-Rasterisierung: Dabei muss jede 2D-Gauß-Funktion aus der Kameraperspektive projiziert und nach Tiefe sortiert werden; anschließend werden für jedes Pixel alle Gauß-Funktionen von vorne nach hinten durchlaufen und kombiniert.

Photogrammetrie vs. NeRF

Die Photogrammetrie ist ein Verfahren, um aus Bildern mehrerer Blickwinkel 3D-Polygone zu erzeugen. Obwohl sie sich sehr gut zum Scannen von Objekten eignet, kann sie weder Szenen ohne Konturen wie den Himmel noch feine Details in weit entfernten Szenen darstellen. Zudem lassen sich in manchen Fällen, etwa bei Spiegelungen oder transparenten Elementen, keine präzisen 3D-Polygone erzeugen.

Um diese Einschränkungen zu überwinden, wurde NeRF (Neural Radiance Field) entwickelt. Auch dieses Verfahren rendert eine 3D-Szene aus Bildern verschiedener Blickwinkel, nutzt jedoch KI, um offene Szenen sowie spiegelnde oder durchscheinende Oberflächen präzise darzustellen. Der einzige Nachteil: Für das Echtzeit-Rendering einer Szene wird sehr leistungsstarke Hardware benötigt.

3D Gaussian Splatting ist ein weiterer Ansatz zur Lösung desselben Problems, benötigt jedoch deutlich weniger Rechenleistung, um eine Szene in Echtzeit zu rendern. Zwar erfordert das Training der Gauß-Parameter maschinelles Lernen, das Rendering selbst ist jedoch nicht rechenintensiv und kann in Echtzeit erfolgen.

Wie wir es bei Plain Concepts umsetzen

Bei Plain Concepts arbeiten wir daran, die 3D-Gaussian-Splatting-Technologie in unsere 3D-Engine Evergine zu integrieren. Auch wenn es sich um eine neue Technologie handelt, die sich ständig weiterentwickelt, sind wir bei Plain Concepts der Meinung, dass sie reif für den Einsatz in realen Projekten ist, und wir sind überzeugt, dass sie schon bald in unseren nächsten Projekten zum Einsatz kommen wird.

 

 

Die Zukunft der Grafik

Rund um Gaussian Splatting gibt es noch einige offene Fragen, insbesondere ob sich die Gauß-Funktionen animieren lassen, wie sich bestimmte visuelle Artefakte vermeiden lassen und wie Kollisionen gehandhabt werden, die über ein zugehöriges geometrisches Modell gelöst werden.

Doch wie bereits erwähnt, werden wir 3D Gaussian Splatting voraussichtlich bald vollständig in Produktionsumgebungen sehen.

Außerdem wird eingebettete KI ein Schlüsselfaktor in der 3D-Forschung sein. Klar ist jedoch: Diese neue Technik wird hochwertige fotorealistische Szenen und eine schnelle Echtzeit-Rasterisierung ermöglichen und sich relativ schnell trainieren lassen.

Autor
Elena Canorea
Copywriter & Content Specialist