Die Inhalte dieser Website wurden mithilfe künstlicher Intelligenz (KI) oder maschineller Übersetzungstechnologie übersetzt und können Fehler enthalten.

Skip to content

CubePart: Ein 3D-Generator mit offenem Vokabular und Teilsteuerung

Auf dem Weg zu funktionsfähigen, spielbereiten Assets

SEO image for CubePart: An Open-Vocabulary Part-Controllable 3D Generator

Moderne generative 3D-Modelle können anhand von Textvorgaben wunderschöne, komplexe 3D-Objekte erzeugen, doch für einen Spieleentwickler ist ein monolithisches 3D-Modell nicht von Nutzen. Ein Auto muss beispielsweise fahrbar sein. Die Räder müssen sich separat drehen, die Türen müssen sich öffnen und die Scheinwerfer müssen sich einschalten lassen. 

Derzeit müssen 3D-Künstler generierte Modelle manuell zerlegen und die Teile benennen – ein Prozess, der sich nur schlecht skalieren lässt. Unser Durchbruch ist CubePart: das erste generative KI-Framework, das die Erzeugung von 3D-Meshes mit offenem Vokabular und teilweiser Steuerbarkeit ermöglicht. CubePart liefert einen zusammengebauten Satz eindeutiger, funktionaler und genau beschrifteter Meshes, die den Programmieranforderungen des Entwicklers sofort entsprechen.

CubePart erweitert das Konzept der festen Schemata, das wir mit 4D Generation eingeführt haben, und ermöglicht es einem Entwickler, die Liste der Teile zu definieren, in die ein Objekt zerlegt werden soll. Die von CubePart generierten Meshes lassen sich direkt in die Spiel-Engine einbinden und können ohne manuelle Nachbearbeitung durch Animations-, Physik- und Gameplay-Skripte gesteuert werden. Wir haben unsere CubePart-Forschungsergebnisse auf arXiv veröffentlicht und unser Open-Source-Cube-Repository aktualisiert, um die teilstückweise steuerbare Generierung zu unterstützen. Im Laufe dieses Jahres werden wir unsere Ergebnisse auf der SIGGRAPH vorstellen. 

Schema: Der API-Vertrag für interaktive 3D-Assets

Auf Roblox wird interaktives Verhalten in Skripten implementiert, die auf Teilen basieren – spezifischen, benannten Unterelementen eines Assets. Selbst ähnliche Assets können je nach Spiel oder Situation völlig unterschiedliche Teile erfordern. Eine starre Taxonomie würde Kreativität und Funktionalität einschränken, daher bietet CubePart zwei Eingabemöglichkeiten: 

  1. Eine globale Textanforderung, die beschreibt, wie das Objekt aussieht: z. B. „ein Rennwagen im Quallen-Design“.
  2. Eine spezifische, offene Liste der erforderlichen Teile, die als Schema bezeichnet wird: z. B. „vorderes linkes Rad“, „vorderes rechtes Rad“, „hinteres linkes Rad“, „hinteres rechtes Rad“, „Kanone“, „Scheinwerfer“, „Auspuffrohr“, „Karosserie“. 

Das Schema ist der API-Vertrag zwischen dem Asset und dem Gameplay-Code, und CubePart ermöglicht es einem Entwickler, Assets zu generieren, die diesem Vertrag entsprechen. Diese Steuerung mit offenem Vokabular ermöglicht es CubePart, die Vielfalt der Roblox-Assets und -Erlebnisse zu erfassen.

Generierung in zwei Stufen 

CubePart ist eine zweistufige Diffusionsarchitektur, die auf einer latenten Formdarstellung von VecSet basiert. 

In den folgenden Abbildungen hat der Benutzer zwei Eingaben gemacht. 

  1. Die globale Textanfrage: „Ein Abschleppwagen mit cartoonartigen Merkmalen.“ 
  2. Das Schema: „Fahrerkabine“, „Fahrgestell“, „Räder“, „Dachleuchte“, „Abschleppvorrichtung“.

Stufe 1 ist für die Definition der grundlegenden Form des Objekts zuständig (ein Abschleppwagen mit cartoonartigen Merkmalen). Diese Stufe generiert eine einzige latente Darstellung für das gesamte Objekt unter Verwendung einer MMDiT-Architektur mit dem Qwen-VL-Text-Encoder, der auf etwa 4,7 Millionen Mesh-Text-Paaren trainiert wurde. Dies ist die datenintensive Stufe: Die Abbildung von Sprache mit offenem Vokabular auf 3D-Geometrie ist der schwierige Teil der generativen 3D-Erzeugung und erfordert einen großen, vielfältigen Korpus, um gute Ergebnisse zu erzielen. Wir optimieren Stufe 1 zusätzlich, damit sie schemabewusst ist. 

Stufe 2 nutzt die Latentdarstellung aus Stufe 1 und erzeugt für jeden Schemaeintrag eine Teil-Latentdarstellung, um das Objekt mit seinen Teilen zu rekonstruieren. Für unser Beispiel eines karikaturhaften Abschleppwagens generiert Stufe 2 separate Teil-Latentdarstellungen für die Fahrerkabine, das Fahrgestell, die Räder, die Dachleuchte und die Abschleppvorrichtung, um den fertigen Abschleppwagen mit eindeutigen, funktionalen Teilen zu rekonstruieren. 3D-Daten mit Teilbeschriftung sind weitaus seltener als Mesh-Text-Daten. Da Stufe 1 die komplexe Zuordnung von Text zu Form aus einem größeren Korpus aufnimmt, muss Stufe 2 nur noch lernen, wo die Teilegrenzen an einem Objekt verlaufen, das das Modell bereits versteht. Wir sehen die Ablation in der Veröffentlichung als direkten Beweis dafür: Das Entfernen des Vortrainings in Stufe 1 verschlechtert die Generalisierung von Stufe 2 bei offenem Vokabular messbar. Kurz gesagt: Stufe 1 ist es, die Stufe 2 die Generalisierung ermöglicht. 
Eine weitere entscheidende Neuerung in unserer Architektur betrifft die Art und Weise, wie die Teile miteinander kommunizieren. Unsere Lösung besteht darin, spezielle teileübergreifende Aufmerksamkeitsblöcke einzufügen, anstatt bestehende zu modifizieren, mit auf Null initialisierten Ausgabeprojektionen, sodass sie als No-Ops starten und die teileübergreifende Kommunikation erlernen, ohne den vortrainierten Pfad zu stören. Das Prinzip wird Lesern von ControlNet bekannt sein und wird hier auf die 3D-Teilezerlegung angewendet. Bei unserem Abschleppwagen-Beispiel stellen die teileübergreifenden Aufmerksamkeitsblöcke sicher, dass die Fahrerkabine und die Abschleppvorrichtung nahtlos integriert und korrekt relativ zum Fahrgestell und den Rädern positioniert sind.

Unser Datensatz und unsere VLM-Pipeline 

Um CubePart zu trainieren, haben wir einen Datensatz mit mehr als 460.000 Assets – über elfmal so groß wie bisherige öffentliche Datensätze1 – und 2,02 Millionen Teilen erstellt. Anstelle einer manuellen Beschriftung haben wir eine automatisierte Pipeline unter Verwendung von Vision-Language-Modellen (VLMs) aufgebaut.

Die Pipeline rendert Tausende von 3D-Modellen aus verschiedenen Blickwinkeln unter Verwendung eines gepaarten Ansatzes: ein texturiertes Bild (für den semantischen Kontext) und ein teilweise koloriertes Bild (für die präzise Begrenzungserkennung). Beide sind mit identisch nummerierten Markern versehen, wodurch das VLM einen textbasierten Anhaltspunkt erhält, um im 3D-Raum zu argumentieren und jedes Teil zu clustern und zu benennen.

Im Gegensatz zu zuvor veröffentlichten Datensätzen, in denen jedes Rad eines Fahrzeugs einfach als „Rad“ gekennzeichnet ist, lehrt unser Datensatz der KI räumliche Unterscheidung (z. B. die Unterscheidung zwischen einem „vorderen linken Rad“ und einem „hinteren rechten Rad“). Genau diese Abgleichgenauigkeit ist es, wonach Spiel-Engines suchen.

Was CubePart ermöglicht und wie es weitergeht

CubePart ermöglicht es Entwicklern, Assets zu generieren, die zu ihrem Gameplay-Code passen und direkt mit bestehenden Animations-, Physik- und Skript-Workflows kompatibel sind. CubePart kann auch bestehende Artist-Meshes in ein neues Schema zerlegen, was nicht nur für die Generierung neuer Assets, sondern auch für die Aufwertung älterer Assets nützlich ist.

Es gibt noch viel zu tun. CubePart bewältigt die Zerlegung von starren Körpern, aber wir arbeiten auch an Skinned-Vertex-Gewichten für die organische Charakterverformung. Die teileübergreifende Aufmerksamkeit reduziert Überschneidungen drastisch, beseitigt sie jedoch nicht vollständig. Das räumliche Denken – „vorne links“ versus „hinten rechts“ – bietet noch erheblichen Verbesserungsspielraum.

Wir sehen die schemagesteuerte Generierung als den Schritt, der generatives 3D auf einer Plattform nutzbar macht, auf der jedes Asset an einer Simulation teilnimmt. Bald wird diese Technologie für Roblox-Entwickler direkt in Roblox Studio verfügbar sein.

1Im Vergleich zu PartVerseXL