De content op deze site is vertaald met behulp van kunstmatige intelligentie (AI) of machinevertalingstechnologie en kan fouten bevatten.

Skip to content

CubePart: een 3D-generator met open vocabulaire en regelbare onderdelen

Werken aan functionele, spelklare assets

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

Moderne generatieve 3D-modellen kunnen prachtige, complexe 3D-objecten genereren op basis van tekstprompts, maar voor een gameontwikkelaar is een monolithisch 3D-model niet bruikbaar. Een auto moet bijvoorbeeld bestuurbare zijn. De wielen moeten afzonderlijk draaien, de deuren moeten openen en de koplampen moeten aangaan. 

Momenteel moeten 3D-artiesten gegenereerde modellen handmatig opsplitsen en de onderdelen een naam geven – een proces dat slecht schaalbaar is. Onze doorbraak is CubePart: het eerste generatieve AI-framework dat het genereren van 3D-meshes met een open vocabulaire en afzonderlijk aanstuurbare onderdelen mogelijk maakt. CubePart levert een samengestelde set van afzonderlijke, functionele en nauwkeurig gelabelde meshes op die direct aansluiten bij de programmeerbehoeften van de ontwikkelaar.

CubePart breidt het concept van vaste schema's uit dat we met 4D Generation hebben geïntroduceerd, zodat een maker zelf kan bepalen in welke onderdelen een object moet worden opgedeeld. De set meshes die door CubePart wordt gegenereerd, kan direct in de game-engine worden geïmporteerd en kan worden aangestuurd door animatie-, fysica- en gameplay-scripts zonder handmatige opschoning. We hebben ons onderzoek naar CubePart gepubliceerd op arXiv en onze open source Cube-repository bijgewerkt om generatie met afzonderlijk aanstuurbare onderdelen te ondersteunen. Later dit jaar zullen we onze bevindingen presenteren op SIGGRAPH

Schema: het API-contract voor interactieve 3D-assets

Op Roblox wordt interactief gedrag geïmplementeerd in scripts die werken op onderdelen – specifieke, benoemde onderliggende elementen van een asset. Zelfs vergelijkbare assets kunnen volledig verschillende onderdelen vereisen, afhankelijk van de game of situatie. Een vaste taxonomie zou creativiteit en functionaliteit beperken, dus biedt CubePart twee invoeropties: 

  1. Een algemene tekstprompt die beschrijft hoe het object eruitziet: bijv. "een raceauto met een kwallen-thema".
  2. Een specifieke, open lijst met vereiste onderdelen, een zogenaamd schema: bijv. "voorwiel links", "voorwiel rechts", "achterwiel links", "achterwiel rechts", "kanon", "koplampen", "uitlaatpijp", "carrosserie". 

Het schema is het API-contract tussen de asset en de gameplay-code, en met CubePart kan een maker assets genereren die aan het contract voldoen. Dankzij deze controle met open vocabulaire kan CubePart de diversiteit van Roblox-assets en -ervaringen vastleggen.

Generatie in twee fasen 

CubePart is een diffusiearchitectuur in twee fasen, gebouwd op een VecSet-representatie van latente vormen. 

In de onderstaande illustraties heeft de gebruiker twee prompts ingevoerd. 

  1. De algemene tekstprompt: "Een sleepwagen met cartooneske kenmerken." 
  2. Het schema: "cabine", "chassis", "wielen", "daklamp", "trekconstructie".

Fase 1 is verantwoordelijk voor het definiëren van de basisvorm van het object (een sleepwagen met cartooneske kenmerken). Deze fase genereert één latent voor het hele object met behulp van een MMDiT-architectuur met de Qwen-VL-tekstencoder, getraind op ongeveer 4,7 miljoen mesh-tekstparen. Dit is de data-intensieve fase: het toewijzen van open-vocabulaire taal aan 3D-geometrie is het moeilijke deel van generatieve 3D, en het vereist een groot, divers corpus om goed te presteren. We stemmen fase 1 bovendien af om schemabewust te zijn. 

Fase 2 neemt de latente gegevens uit fase 1 en produceert één latente onderdeel voor elke schema-invoer om het object met onderdelen te reconstrueren. Voor ons cartooneske voorbeeld van een sleepwagen genereert fase 2 een afzonderlijke latente onderdeel voor de cabine, het chassis, de wielen, het daklicht en de sleepinrichting om de uiteindelijke sleepwagen met afzonderlijke, functionele onderdelen te reconstrueren. 3D-gegevens met onderdeel-labels zijn veel schaarser dan mesh-tekstgegevens. Omdat fase 1 de complexe tekst-naar-vorm-toewijzing uit een groter corpus absorbeert, hoeft fase 2 alleen maar te leren waar de onderdeelgrenzen liggen op een object dat het model al begrijpt. We zien de ablatie in het artikel als direct bewijs hiervoor: het verwijderen van de voortraining van fase 1 verslechtert de generalisatie van fase 2 met open vocabulaire meetbaar. Kortom, fase 1 is wat fase 2 in staat stelt te generaliseren. 
Een andere cruciale innovatie in onze architectuur is de manier waarop onderdelen communiceren. Onze oplossing is om speciale cross-part attention-blokken in te voegen in plaats van bestaande te wijzigen, met op nul geïnitialiseerde outputprojecties, zodat ze beginnen als no-ops en de communicatie tussen onderdelen leren zonder het vooraf getrainde pad te verstoren. Het principe zal bekend zijn bij lezers van ControlNet, hier toegepast op 3D-onderdeelontleding. Voor ons voorbeeld van de sleepwagen zorgen de cross-part attention-blokken ervoor dat de cabine en de sleepconstructie naadloos worden geïntegreerd en correct worden gepositioneerd ten opzichte van het chassis en de wielen.

Onze dataset en VLM-pijplijn 

Om CubePart te trainen, hebben we een dataset gemaakt met meer dan 460.000 assets – meer dan 11 keer zo groot als eerdere openbare datasets1 – en 2,02 miljoen onderdelen. In plaats van handmatig te labelen, hebben we een geautomatiseerde pijplijn gebouwd met behulp van vision-language models (VLM's).

De pijplijn rendert duizenden 3D-modellen vanuit meerdere hoeken met behulp van een gepaarde aanpak: één afbeelding met textuur (voor semantische context) en één afbeelding met gekleurde onderdelen (voor nauwkeurige grensdetectie). Beide zijn voorzien van identieke genummerde markeringen, waardoor de VLM een tekstgebaseerde handle krijgt om te redeneren in de 3D-ruimte en elk onderdeel te clusteren en te benoemen.

In tegenstelling tot eerder gepubliceerde datasets, waarin elk wiel van een voertuig simpelweg als 'wiel' wordt gelabeld, leert onze dataset de AI ruimtelijke differentiatie (bijvoorbeeld het onderscheiden van een 'voorwiel links' van een 'achterwiel rechts'). Deze matchingprecisie is precies wat game-engines zoeken.

Wat CubePart mogelijk maakt en wat de volgende stap is

Met CubePart kunnen makers assets genereren die aansluiten bij hun gameplay-code en direct compatibel zijn met bestaande animatie-, fysica- en scripting-workflows. CubePart kan ook bestaande artist-meshes ontleden naar een nieuw schema, wat handig is voor het upgraden van legacy-assets, niet alleen voor het genereren van nieuwe.

Er is nog veel te doen. CubePart kan rigide-body-ontleding aan, maar we werken ook aan skinned vertex weights voor organische karaktervervorming. Cross-part attention vermindert overlapping drastisch, maar elimineert deze niet. Ruimtelijk redeneren – "voor-links" versus "achter-rechts" – kan nog flink verbeterd worden.

Wij zien schemagestuurde generatie als de stap die generatieve 3D bruikbaar maakt op een platform waar elke asset deelneemt aan een simulatie. Binnenkort zal deze technologie beschikbaar zijn voor Roblox-makers, rechtstreeks binnen Roblox Studio.

1Vergeleken met PartVerseXL