Feifei Li öffnet den "Schlagtrupp" ihrer Weltmodelltechnologie als Open Source. 3D-Szenen auf Webseiten können in Sekundenschnelle geladen werden, und Handys können problemlos mit einer Punktwolke von 100 Millionen Punkten umgehen.
Zhidongxi berichtete am 15. April. Heute hat das Weltmodell-Team World Labs von "AI-Mutter" Fei-Fei Li den dynamischen 3D-Gaussian-Splatting (3DGS)-Renderer Spark 2.0 Open-Source gemacht.
▲ Offizielle Ankündigung der Open-Source-Veröffentlichung von Spark 2.0 (Quelle: X)
Fei-Fei Li selbst kommentierte sofort nach der Veröffentlichung dieses Ergebnisses: "Spark 2.0 kann jetzt über 100 Millionen Gaussian Splatting auf beliebigen Geräten streamen! Wir sind äußerst stolz darauf, einen Beitrag zur Open-Source-Ökosystem für 3DGS-Rendering auf Webseiten leisten zu können!"
▲ Kommentar von Fei-Fei Li (Quelle: X)
Das Spark-Modell-System wurde erstmals im vergangenen Jahr veröffentlicht. Es ist ein dynamischer 3D-Gaussian-Splatting (3DGS)-Renderer, der speziell für Webseiten entwickelt wurde. Es ist mit dem beliebtesten 3D-Framework THREE.js auf der Webseite integriert und nutzt WebGL2, um auf jedem Gerät mit einem Webbrowser, einschließlich Desktop-Computern, iOS-, Android- und VR-Geräten, zu funktionieren.
Im Vergleich zur vorherigen Version hat Spark 2.0 ein neues Level-of-Detail (LoD)-System hinzugefügt, das es ermöglicht, riesige 3DGS-Welten auf beliebigen Geräten zu streamen und zu rendern.
▲ Freies Erkunden eines Kinders Zimmers mit klaren Details der Gegenstände (Quelle: World Labs Blog)
Darüber hinaus verwendet die neue Version das .RAD-3DGS-Dateiformat, das ein progressives Refinement beim Streamen unterstützt. Das virtuelle Splatting-Pagingsystem ermöglicht den Zugang zu unendlichen Splatting-Welten durch eine feste GPU-Speicherzuweisung. Mit anderen Worten, es kann unendlich große 3D-Szenen rendern.
▲ Eine Hütte in einer Höhle auf der Wiese ohne Verzerrung bei der Szenenwechsel (Quelle: World Labs Blog)
Wie wird ein so flüssiger und kohärenter Effekt erreicht? Um das Problem der Skalierbarkeit für große Szenen zu lösen, verwendet Spark 2.0 drei Grafik- und Systemtechniken: Level-of-Detail-Optimierung, progressives Streamen und virtuelles Grafikspeichermanagement.
Das Team von Fei-Fei Li hat in einem Blog-Post die drei Techniken hinter Spark 2.0 detailliert erläutert. Im Folgenden eine Zusammenfassung:
01. Anwendung eines kontinuierlichen Level-of-Detail-Systems für eine stabile Renderung von Millionen von Splatting
In der Computergrafik wird oft ein Level-of-Detail-System verwendet, um große 3D-Szenen zu verarbeiten. Dieses System passt automatisch die Detailstufe der Renderung an die Entfernung zwischen dem Objekt und dem Betrachter an.
Verschiedene Level-of-Detail-Methoden liegen zwischen diskreten und kontinuierlichen Ansätzen und bilden ein Spektrum von Techniken. Bei der Verwendung eines diskreten Level-of-Detail (LoD)-Systems muss das System mehrere Versionen des Splatting-Effekts erstellen, von einer vereinfachten bis zu einer detaillierten Version, und dann zwischen diesen Versionen wechseln, basierend auf der Entfernung zwischen der Kamera und der Näherungsgrenze jeder Version.
Das frühere Spark-System unterstützte den diskreten Modus, hatte jedoch deutliche Mängel: Wenn der Benutzer in der Szene bewegt wird und zwischen verschiedenen Versionen wechselt, tritt ein deutlicher Bildsprung auf. Darüber hinaus sind nach der Gruppierung der Splatting-Effekte in Blöcke deutliche Grenzen sichtbar.
Das LoD-Design von Spark 2.0 verwendet eine kontinuierliche LoD-Methode. Alle Splatting befinden sich in einer hierarchischen Struktur, dem LoD-Splatting-Baum. Spark 2.0 wählt die Splatting entlang einer Schnittfläche des Baums aus, um die Details der Splatting im Viewport zu optimieren.
▲ LoD-Splatting-Baum (Quelle: World Labs Blog)
Jeder innere Knoten im Baum ist eine Version mit niedriger Auflösung seiner Kindknoten. Durch das Zusammenführen mehrerer Splatting der Kindknoten zu einem neuen Splatting wird die Form und Farbe der Splatting der Kindknoten angenähert. Dieser Prozess wird bis zum Wurzelknoten des Baums fortgesetzt - einem einzigen, großen Splatting, das die gesamte Form und Farbe aller Splatting in diesem Objekt aggregiert.
Mithilfe dieses LoD-Splatting-Baums berechnet Spark 2.0 einen "Schnitt" durch den Baum, um die besten N Splatting für den aktuellen Viewport auszuwählen und zu rendern. Indem ein maximaler Splatting-Budget N festgelegt wird (üblicherweise zwischen 500.000 und 2,5 Millionen Splatting, abhängig von der Gerätetyp), wird sichergestellt, dass nur eine konstante Anzahl von Splatting pro Frame gerendert wird, um eine stabile und hochframeratige Renderleistung zu erzielen. Durch das Anpassen des Werts von N kann zwischen Framerate und Splatting-Details gewogen werden.
▲ Ein Fahrrad im Park mit realistischen Details und starker Konsistenz (Quelle: World Labs Blog)
Spark 2.0 erweitert diesen Algorithmus, indem es mehrere Instanzen des LoD-Splatting-Baums gleichzeitig durchläuft. Im Gegensatz zu einer Traversierung, die nur von der Wurzelknoten beginnt, fügt der erweiterte Algorithmus für jedes 3DGS-Objekt seine Bildschirmgröße und die Splatting-Knoten (dm0, Sm0) in die initiale Prioritätswarteschlange ein. Der restliche Ablauf bleibt identisch mit der ursprünglichen Logik und ermöglicht die synchrone Auswahl der zu verfeinernden Detailstufen für alle 3DGS-Objekte in der Szene.
Dieses Design vereinfacht und beschleunigt die Erstellung von großen zusammengesetzten Welten: Indem einfach 3DGS-LoD-Objekte an beliebigen Orten im Raum platziert werden, kann Spark 2.0 automatisch die optimale globale Teilmenge aller LoD-Splatting berechnen, die pro Frame gerendert werden müssen.
02. Entwurf eines neuen Dateiformats für die schnelle Öffnung großer 3D-Welten auf Webseiten
Spark 2.0 definiert ein neues Dateiformat .RAD (für RADiance-Feld), das 3DGS-Daten komprimieren und einen Random-Access-Streamen unterstützt, um ein progressives Refinement während der Übertragung der Daten über das Netzwerk zu ermöglichen.
Die zwei gängigsten 3DGS-Daten-Dateiformate sind .PLY und .SPZ, die zwei verschiedene Datenkodierungsarten repräsentieren: Zeilenweise und spaltenweise Speicherung.
.PLY-Dateien werden zeilenweise gespeichert und zeigen die Splatting sofort nach dem Empfang der Daten an, um ein progressives Laden zu ermöglichen. Sie sind jedoch nicht komprimiert und die Kodierungsgenauigkeit wird verschwendet. .SPZ-Dateien speichern ähnliche Datentypen spaltenweise zusammen, um eine bessere Komprimierungsrate zu erzielen. Leider kann kein progressives Laden durchgeführt werden, da die gesamte Datei empfangen werden muss, bevor ein Splatting alle seine Attribute erhält.
Um eine effiziente Komprimierung und Streamen von 3DGS-Daten zu ermöglichen, hat das Team von Fei-Fei Li das neue .RAD-Dateiformat entwickelt. Dieses Format ist einfach zu kodieren und zu dekodieren, gut erweiterbar, die Kodierungsgenauigkeit ist einstellbar und es unterstützt Random Access.
▲ .RAD-Dateiformat (Quelle: World Labs Blog)
Die Dateistruktur ist sehr klar: Sie beginnt mit dem Dateikopf RAD0, gefolgt von der Länge der Metadaten des Kopfes, den Metadaten im JSON-Format und einem oder mehreren Datenblöcken, die jeweils 64.000 Splatting enthalten. Die Metadaten des Kopfes speichern die Offset-Adressen und die Bytegröße aller Datenblöcke, um den Inhalt der Datenblöcke in beliebiger Reihenfolge lesen zu können.
Ein einzelner Datenblock hat eine ähnliche Struktur: Er beginnt mit dem Blockkopf RADC, gefolgt von der Länge der Blockmetadaten, den Blockmetadaten im JSON-Format und schließlich den komprimierten Daten der 64.000 Splatting. Die Attribute der Splatting werden spaltenweise gespeichert und können jeweils eine benutzerdefinierte Kodierungsmethode verwenden. Ähnliche Daten werden zusammen gespeichert und dann mit Gzip komprimiert, um eine hervorragende Komprimierungsrate zu erzielen.
Der Kopf wird im JSON-Format kodiert, um die zukünftige Erweiterung über das Versionsfeld und zusätzliche optionale Felder sicherzustellen. Die Kodierung der Datentypen und die Komprimierungsalgorithmen werden als Zeichenketten in den Metadaten angegeben, um die einfache Erweiterung neuer Typen zu ermöglichen.
03. Verwendung von virtueller Arbeitsspeichertechnologie für die Schaffung eines festen Grafikspeichers für 16 Millionen Splatting
Virtueller Arbeitsspeicher ist eine Arbeitsspeichermanagementtechnik, die auf einer festen Größe von physischem Arbeitsspeicher basiert und einem Programm einen großen virtuellen Adressraum zur Verfügung stellt. Die Zuordnung zwischen virtuellen und physischen Adressen wird über eine Seitentabelle in Blöcken fester Größe, sogenannten Seiten, verwaltet.
Spark 2.0 wendet diesen Ansatz auf das 3DGS-Rendering an. Genauer gesagt, hat das Team von Fei-Fei Li auf der GPU einen festen Grafikspeicher geschaffen, der 16 Millionen Splatting aufnehmen kann. Die Zuordnung zwischen "Speicherseiten" von jeweils 64.000 Splatting in der GPU und den entsprechenden virtuellen Datenblöcken in der .RAD-Datei wird automatisch verwaltet.
▲ Virtueller Arbeitsspeicher (Quelle: World Labs Blog)
Datenblöcke werden in der Reihenfolge der LoD-Traversierung in freie Seiten geladen. Wenn die Seitentabelle voll ist und ein neuer Datenblock eine höhere Priorität hat, wird ein alter Datenblock nach der Least Recently Used (LRU)-Strategie entfernt.
Spark 2.0 unterstützt das gleichzeitige Laden mehrerer .RAD-Dateien und die gemeinsame Nutzung einer einzigen Seitentabelle. Für jede Datei werden die Zuordnung der Datenblöcke zur Seitentabelle und die umgekehrte Zuordnung von der Seitentabelle zur entsprechenden Datei und den Daten aufgezeichnet.
Beim Traversieren mehrerer LoD-Splatting-Bäume wird die Zugriffsreihenfolge der Datenblöcke und Dateien aufgezeichnet, um eine globale Prioritätsreihenfolge zu erstellen. Dadurch wird die Lade- und Speicherstrategie für die Splatting aller 3DGS-Objekte in der Szene optimiert.
04. Fazit: Spark 2.0 senkt die Schwellen für die Schaffung von räumlicher KI und kämpft um die Definition von Infrastrukturstandards
Von seiner ersten Präsentation im Jahr 2025 bis zur aktuellen Version 2.0 spiegelt sich in der Entwicklung von Spark in gewissem Maße die Reifungskurve der 3DGS-Technologie wider.
Die Bereitstellung von 3D-Inhalten wird seit langem von zwei Problemen behindert: Einerseits sind die Assets zu groß, mit Dateigrößen im GB-Bereich, was die Webseite nicht bewältigen kann. Andererseits ist das Rendering zu teuer, da nur hochwertige GPUs die Szenen flüssig rendern können, während Mobiltelefonbrowser nur zuschauen können.
Mit dem kontinuierlichen LoD-System, dem .RAD-Format und der virtuellen Grafikspeicherverwaltung ermöglicht Spark 2.0 es, dass hochwertige 3D-Inhalte wie normale Bilder und Videos frei im Internet fließen und sofort angezeigt werden können.
Das Team von Fei-Fei Li hat sich entschieden, diese Technologie Open Source zu machen, um die Schwellen für die Schaffung von räumlicher KI zu senken und gleichzeitig um die Definition der Infrastruktur