CubePart : un générateur 3D à vocabulaire ouvert et contrôlable par parties
Vers la création d'actifs fonctionnels prêts à l'emploi

Les modèles génératifs 3D modernes peuvent créer de superbes objets 3D complexes à partir de consignes textuelles, mais pour un développeur de jeux, un modèle 3D monolithique n’est pas utile. Une voiture, par exemple, doit pouvoir rouler. Les roues doivent tourner séparément, les portes doivent s’ouvrir et les phares doivent s’allumer.
Actuellement, les artistes 3D doivent découper manuellement les modèles générés et nommer les pièces, un processus peu évolutif. Notre avancée majeure est CubePart : le premier framework d'IA générative permettant la génération de maillages 3D à vocabulaire ouvert et contrôlables par partie. CubePart produit un ensemble assemblé de maillages distincts, fonctionnels et étiquetés avec précision, qui répondent immédiatement aux besoins de programmation du développeur.
CubePart étend le concept de schémas fixes que nous avons introduit avec 4D Generation pour permettre à un créateur de définir la liste des parties dans lesquelles un objet doit être décomposé. L'ensemble des maillages générés par CubePart s'intègre directement dans le moteur de jeu et peut être contrôlé par des scripts d'animation, de physique et de gameplay sans nettoyage manuel. Nous avons publié nos recherches sur CubePart sur arXiv et mis à jour notre dépôt open source Cube pour prendre en charge la génération contrôlable par partie. Plus tard cette année, nous présenterons nos résultats à SIGGRAPH.
Schéma : le contrat API pour les ressources 3D interactives
Sur Roblox, le comportement interactif est implémenté dans des scripts qui opèrent sur des parties — des enfants spécifiques et nommés d’un actif. Même des actifs similaires peuvent nécessiter des parties complètement différentes selon le jeu ou la situation. Une taxonomie fixe limiterait la créativité et la fonctionnalité ; c’est pourquoi CubePart propose deux entrées :
- Une invite de texte globale décrivant l'apparence de l'objet : par exemple, « une voiture de course sur le thème des méduses ».
- Une liste spécifique et ouverte des parties requises, appelée schéma : par exemple, « roue avant gauche », « roue avant droite », « roue arrière gauche », « roue arrière droite », « canon », « phares », « pot d'échappement », « carrosserie ».
Le schéma est le contrat API entre l’élément et le code de gameplay, et CubePart permet à un créateur de générer des éléments conformes à ce contrat. Ce contrôle à vocabulaire ouvert permet à CubePart de refléter la diversité des éléments et des expériences Roblox.
Génération en deux étapes
CubePart est une architecture de diffusion en deux étapes reposant sur une représentation de forme latente VecSet.
Dans les illustrations ci-dessous, l'utilisateur a saisi deux invites.
- La requête textuelle globale : « Une dépanneuse caractérisée par des traits caricaturaux. »
- Le schéma : « cabine », « châssis », « roues », « gyrophare », « dispositif de remorquage ».
L'étape 1 est chargée de définir la forme de base de l'objet (une dépanneuse aux traits caricaturaux). Cette étape génère une seule représentation latente pour l'ensemble de l'objet à l'aide d'une architecture MMDiT avec l'encodeur de texte Qwen-VL, entraîné sur environ 4,7 millions de paires maillage-texte. C'est l'étape qui nécessite le plus de données : le mappage d'un langage à vocabulaire ouvert sur une géométrie 3D est la partie la plus difficile de la 3D générative, et cela nécessite un corpus vaste et diversifié pour obtenir de bons résultats. Nous affinons en outre l'étape 1 pour qu'elle tienne compte du schéma.



Notre ensemble de données et notre pipeline VLM
Pour entraîner CubePart, nous avons créé un ensemble de données comprenant plus de 460 000 ressources — soit plus de 11 fois la taille des ensembles de données publics précédents¹ — et 2,02 millions de pièces. Au lieu d’un étiquetage manuel, nous avons mis au point un pipeline automatisé utilisant des modèles vision-langage (VLM).
Le pipeline génère des milliers de modèles 3D sous plusieurs angles en utilisant une approche par paires : une image texturée (pour le contexte sémantique) et une image avec des pièces colorées (pour un suivi précis des contours). Les deux sont marquées de repères numérotés identiques, ce qui donne au VLM un repère textuel pour raisonner dans l'espace 3D, regrouper et nommer chaque pièce.
Contrairement aux ensembles de données publiés précédemment, où chaque roue d'un véhicule est simplement étiquetée « roue », notre ensemble de données enseigne à l'IA la différenciation spatiale (par exemple, distinguer une « roue avant gauche » d'une « roue arrière droite »). Cette précision de correspondance est exactement ce que recherchent les moteurs de jeux.
Ce que CubePart rend possible et les prochaines étapes
CubePart permet aux créateurs de générer des ressources qui correspondent à leur code de gameplay et qui sont directement compatibles avec les workflows existants d’animation, de physique et de script. CubePart peut également décomposer les maillages existants créés par les artistes selon un nouveau schéma, ce qui est utile pour mettre à niveau des ressources héritées, et pas seulement pour en générer de nouvelles.
Il reste encore beaucoup à faire. CubePart gère la décomposition des corps rigides, mais nous travaillons également sur les poids de sommets skinnés pour la déformation organique des personnages. L'attention inter-pièces réduit considérablement les chevauchements, mais ne les élimine pas. Le raisonnement spatial — « avant gauche » par opposition à « arrière droit » — peut encore être considérablement amélioré.
Nous considérons la génération pilotée par schéma comme l’étape qui rend la 3D générative utile sur une plateforme où chaque ressource participe à une simulation. Bientôt, cette technologie sera mise à la disposition des créateurs Roblox directement dans Roblox Studio.



