CubePart: un generatore 3D a vocabolario aperto e controllabile per parti
Creazione di risorse funzionali pronte per il gioco

I moderni modelli generativi 3D sono in grado di generare oggetti 3D belli e complessi a partire da prompt di testo, ma per uno sviluppatore di videogiochi un modello 3D monolitico non è utile. Un'auto, ad esempio, deve essere guidabile. Le ruote devono ruotare separatamente, le portiere devono aprirsi e i fari devono accendersi.
Attualmente, gli artisti 3D devono smembrare manualmente i modelli generati e dare un nome alle parti: un processo che non è scalabile. La nostra innovazione è CubePart: il primo framework di IA generativa che consente la generazione di mesh 3D con vocabolario aperto e parti controllabili. CubePart produce un insieme assemblato di mesh distinte, funzionali e accuratamente etichettate che soddisfano immediatamente le esigenze di programmazione dello sviluppatore.
CubePart espande il concetto di schemi fissi che abbiamo introdotto con 4D Generation per consentire a un creatore di definire l'elenco delle parti in cui un oggetto dovrebbe essere suddiviso. L'insieme di mesh generate da CubePart viene inserito direttamente nel motore di gioco e può essere controllato da script di animazione, fisica e gameplay senza necessità di pulizia manuale. Abbiamo pubblicato la nostra ricerca su CubePart su arXiv e aggiornato il nostro repository open source Cube per supportare la generazione controllabile per parti. Entro la fine dell'anno presenteremo i nostri risultati al SIGGRAPH.
Schema: il contratto API per le risorse 3D interattive
Su Roblox, il comportamento interattivo è implementato in script che operano su parti specifiche, ovvero figli con un nome proprio di una risorsa. Anche risorse simili possono richiedere parti completamente diverse a seconda del gioco o della situazione. Una tassonomia fissa limiterebbe la creatività e la funzionalità, quindi CubePart offre due input:
- Un prompt di testo globale che descrive l'aspetto dell'oggetto: ad esempio, "un'auto da corsa a tema medusa".
- Un elenco specifico e aperto di parti richieste chiamato schema: ad esempio, "ruota anteriore sinistra", "ruota anteriore destra", "ruota posteriore sinistra", "ruota posteriore destra", "pistola", "fari", "tubo di scarico", "carrozzeria".
Lo schema è il contratto API tra l'asset e il codice di gioco, e CubePart consente a un creatore di generare asset conformi al contratto. Questo controllo a vocabolario aperto permette a CubePart di catturare la diversità degli asset e delle esperienze di Roblox.
Generazione in due fasi
CubePart è un'architettura di diffusione in due fasi basata su una rappresentazione latente delle forme VecSet.
Nelle illustrazioni sottostanti, l'utente ha inserito due prompt.
- Il prompt di testo globale: "Un carro attrezzi caratterizzato da tratti cartooneschi."
- Lo schema: "cabina", "telaio", "ruote", "lampeggiante sul tetto", "gancio di traino".
La fase 1 è responsabile della definizione della forma di base dell'oggetto (un carro attrezzi caratterizzato da tratti cartooneschi). Questa fase genera un unico latente per l'intero oggetto utilizzando un'architettura MMDiT con l'encoder di testo Qwen-VL, addestrato su circa 4,7 milioni di coppie mesh-testo. Questa è la fase che richiede molti dati: mappare un linguaggio a vocabolario aperto sulla geometria 3D è la parte difficile del 3D generativo e richiede un corpus ampio e diversificato per funzionare bene. Inoltre, ottimizziamo la Fase 1 affinché sia sensibile allo schema.



Il nostro dataset e la pipeline VLM
Per addestrare CubePart, abbiamo creato un dataset con oltre 460.000 risorse — più di 11 volte più grande dei precedenti dataset pubblici1 — e 2,02 milioni di parti. Invece di ricorrere all'etichettatura manuale, abbiamo costruito una pipeline automatizzata utilizzando modelli visione-linguaggio (VLM).
La pipeline rende migliaia di modelli 3D da più angolazioni utilizzando un approccio a coppie: un'immagine con texture (per il contesto semantico) e un'immagine con parti colorate (per un tracciamento preciso dei confini). Entrambe sono contrassegnate con marcatori numerati identici, fornendo al VLM un riferimento testuale per ragionare nello spazio 3D e raggruppare e denominare ogni parte.
A differenza dei set di dati pubblicati in precedenza, in cui ogni ruota di un veicolo è semplicemente etichettata come "ruota", il nostro set di dati insegna all'IA la differenziazione spaziale (ad esempio, distinguere una "ruota anteriore sinistra" da una "ruota posteriore destra"). Questa precisione di corrispondenza è esattamente ciò che cercano i motori di gioco.
Cosa sblocca CubePart e quali sono i prossimi passi
CubePart consente ai creatori di generare risorse che corrispondono al loro codice di gioco e sono direttamente compatibili con i flussi di lavoro esistenti di animazione, fisica e scripting. CubePart può anche scomporre le mesh esistenti degli artisti in un nuovo schema, il che è utile per aggiornare le risorse legacy, non solo per generarne di nuove.
C'è ancora molto da fare. CubePart gestisce la scomposizione dei corpi rigidi, ma stiamo anche lavorando sui pesi dei vertici skinned per la deformazione organica dei personaggi. L'attenzione cross-part riduce drasticamente la sovrapposizione, ma non la elimina. Il ragionamento spaziale — "anteriore sinistra" contro "posteriore destra" — ha ancora un margine di miglioramento significativo.
Consideriamo la generazione basata su schemi come il passo che rende il 3D generativo utile su una piattaforma in cui ogni risorsa partecipa a una simulazione. Presto questa tecnologia sarà disponibile per i creatori di Roblox direttamente all'interno di Roblox Studio.



