CubePart: Um gerador 3D com vocabulário aberto e controle de partes
Criação de recursos funcionais prontos para uso em jogos

Modelos generativos 3D modernos podem gerar objetos 3D bonitos e complexos a partir de prompts de texto, mas, para um desenvolvedor de jogos, um modelo 3D monolítico não é útil. Um carro, por exemplo, precisa ser dirigível. As rodas precisam girar separadamente, as portas precisam abrir e os faróis precisam acender.
Atualmente, os artistas 3D precisam dividir manualmente os modelos gerados e nomear as partes — um processo que não é escalável. Nossa inovação é o CubePart: a primeira estrutura de IA generativa que permite a geração de malhas 3D com vocabulário aberto e partes controláveis. O CubePart gera um conjunto montado de malhas distintas, funcionais e rotuladas com precisão que atendem às necessidades de programação do desenvolvedor prontas para uso.
O CubePart expande o conceito de esquemas fixos que introduzimos com a 4D Generation para capacitar um criador a definir a lista de partes nas quais um objeto deve ser dividido. O conjunto de malhas geradas pelo CubePart é inserido diretamente no motor de jogo e pode ser controlado por scripts de animação, física e jogabilidade sem a necessidade de limpeza manual. Publicamos nossa pesquisa sobre o CubePart no arXiv e atualizamos nosso repositório de código aberto Cube para oferecer suporte à geração com controle de partes. Ainda este ano, apresentaremos nossas descobertas na SIGGRAPH.
Esquema: o contrato de API para ativos 3D interativos
No Roblox, o comportamento interativo é implementado em scripts que operam em partes — filhos específicos e nomeados de um ativo. Mesmo ativos semelhantes podem exigir partes completamente diferentes, dependendo do jogo ou da situação. Uma taxonomia fixa limitaria a criatividade e a funcionalidade, por isso o CubePart oferece duas entradas:
- Um prompt de texto global que descreve a aparência do objeto: por exemplo, “um carro de corrida com tema de água-viva”.
- Uma lista específica e aberta de partes necessárias, chamada de esquema: por exemplo, “roda dianteira esquerda”, “roda dianteira direita”, “roda traseira esquerda”, “roda traseira direita”, “arma”, “faróis”, “tubo de escape”, “carroceria”.
O esquema é o contrato de API entre o recurso e o código de jogabilidade, e o CubePart permite que um criador gere recursos que estejam em conformidade com o contrato. Esse controle de vocabulário aberto permite que o CubePart capture a diversidade de recursos e experiências do Roblox.
Geração em duas etapas
O CubePart é uma arquitetura de difusão em duas etapas construída sobre uma representação de forma latente do VecSet.
Nas ilustrações abaixo, o usuário inseriu dois prompts.
- O prompt de texto global: “Um caminhão de reboque caracterizado por traços caricaturais.”
- O esquema: “cabine”, “chassi”, “rodas”, “luz de teto”, “conjunto de reboque”.
A Etapa 1 é responsável por definir a forma básica do objeto (um caminhão de reboque caracterizado por traços caricaturais). Esta etapa gera um único latente para todo o objeto usando uma arquitetura MMDiT com o codificador de texto Qwen-VL, treinado em aproximadamente 4,7 milhões de pares de malha-texto. Esta é a etapa que consome muitos dados: mapear linguagem de vocabulário aberto para geometria 3D é a parte difícil da geração 3D e requer um corpus grande e diversificado para funcionar bem. Além disso, ajustamos a Etapa 1 para que seja sensível ao esquema.



Nosso conjunto de dados e pipeline VLM
Para treinar o CubePart, criamos um conjunto de dados com mais de 460.000 ativos — mais de 11 vezes maior do que os conjuntos de dados públicos anteriores¹ — e 2,02 milhões de peças. Em vez da rotulagem manual, construímos um pipeline automatizado usando modelos de visão-linguagem (VLMs).
O pipeline renderiza milhares de modelos 3D a partir de vários ângulos usando uma abordagem emparelhada: uma imagem texturizada (para contexto semântico) e uma imagem com partes coloridas (para rastreamento preciso de limites). Ambas são marcadas com marcadores numerados idênticos, dando ao VLM um identificador endereçável por texto para raciocinar no espaço 3D e agrupar e nomear cada parte.
Ao contrário de conjuntos de dados publicados anteriormente, nos quais todas as rodas de um veículo são simplesmente rotuladas como “roda”, nosso conjunto de dados ensina à IA a diferenciação espacial (por exemplo, distinguir uma “roda dianteira esquerda” de uma “roda traseira direita”). Essa precisão de correspondência é exatamente o que os motores de jogos procuram.
O que o CubePart possibilita e o que vem a seguir
O CubePart permite que os criadores gerem ativos que correspondam ao seu código de jogabilidade e tenham compatibilidade direta com fluxos de trabalho existentes de animação, física e script. O CubePart também pode decompor malhas de artistas existentes em um novo esquema, o que é útil para atualizar ativos legados, não apenas para gerar novos.
Ainda há muito a ser feito. O CubePart lida com a decomposição de corpos rígidos, mas também estamos trabalhando em pesos de vértices com skin para a deformação orgânica de personagens. A atenção entre partes reduz drasticamente a sobreposição, mas não a elimina. O raciocínio espacial — “dianteira esquerda” versus “traseira direita” — ainda tem espaço significativo para melhorias.
Vemos a geração orientada por esquemas como o passo que torna o 3D generativo útil em uma plataforma onde todos os ativos participam de uma simulação. Em breve, essa tecnologia estará disponível para os criadores do Roblox diretamente dentro do Roblox Studio.



