CubePart: generator 3D z otwartym słownictwem i możliwością sterowania częściami
Tworzenie funkcjonalnych zasobów gotowych do wykorzystania w grze

Nowoczesne generatywne modele 3D potrafią tworzyć piękne, złożone obiekty 3D na podstawie poleceń tekstowych, ale dla twórcy gier monolityczny model 3D nie jest przydatny. Na przykład samochód musi dać się prowadzić. Koła muszą się obracać osobno, drzwi muszą się otwierać, a reflektory muszą się włączać.
Obecnie graficy 3D muszą ręcznie dzielić wygenerowane modele i nazywać poszczególne części — proces ten jest mało skalowalny. Naszym przełomowym rozwiązaniem jest CubePart: pierwsza generatywna platforma AI, która umożliwia generowanie siatek 3D z otwartym słownictwem i kontrolą poszczególnych części. CubePart generuje zestaw złożonych, funkcjonalnych i dokładnie oznaczonych siatek, które od razu odpowiadają potrzebom programistycznym twórców.
CubePart rozszerza koncepcję stałych schematów, którą wprowadziliśmy wraz z 4D Generation, aby umożliwić twórcy zdefiniowanie listy części, na które obiekt powinien zostać podzielony. Zestaw siatek wygenerowanych przez CubePart trafia bezpośrednio do silnika gry i może być kontrolowany przez animacje, fizykę i skrypty rozgrywki bez konieczności ręcznego czyszczenia. Opublikowaliśmy nasze badania dotyczące CubePart na arXiv i zaktualizowaliśmy nasze repozytorium open source Cube, aby obsługiwało generowanie z możliwością sterowania częściami. Jeszcze w tym roku zaprezentujemy nasze wyniki na SIGGRAPH.
Schemat: umowa API dla interaktywnych zasobów 3D
W Roblox interaktywne zachowania są implementowane w skryptach, które działają na częściach — konkretnych, nazwanych elementach podrzędnych zasobu. Nawet podobne zasoby mogą wymagać zupełnie innych części w zależności od gry lub sytuacji. Stała taksonomia ograniczyłaby kreatywność i funkcjonalność, dlatego CubePart oferuje dwa rodzaje danych wejściowych:
- Globalny tekst opisujący, jak wygląda obiekt: np. „samochód wyścigowy o tematyce meduz”.
- Konkretną, otwartą listę wymaganych części zwaną schematem: np. „przednie lewe koło”, „przednie prawe koło”, „tylne lewe koło”, „tylne prawe koło”, „broń”, „reflektory”, „rura wydechowa”, „karoseria”.
Schemat jest umową API między zasobem a kodem rozgrywki, a CubePart pozwala twórcy generować zasoby zgodne z tą umową. Ta kontrola oparta na otwartym słowniku pozwala CubePart uchwycić różnorodność zasobów i doświadczeń Roblox.
Generowanie w dwóch etapach
CubePart to dwuetapowa architektura dyfuzyjna oparta na reprezentacji ukrytych kształtów VecSet.
Na poniższych ilustracjach użytkownik wprowadził dwa polecenia.
- Globalna prośba tekstowa: „Wciągarka charakteryzująca się cechami kreskówkowymi”.
- Schemat: „kabina”, „podwozie”, „koła”, „światło ostrzegawcze na dachu”, „zespół holowniczy”.
Etap 1 odpowiada za zdefiniowanie podstawowego kształtu obiektu (laweta o cechach kreskówkowych). Ten etap generuje pojedynczy model ukryty dla całego obiektu przy użyciu architektury MMDiT z kodowaniem tekstowym Qwen-VL, wytrenowanym na około 4,7 mln par siatki-tekst. Jest to etap wymagający dużej ilości danych: mapowanie języka o otwartym słowniku na geometrię 3D jest trudną częścią generatywnego 3D i wymaga dużego, zróżnicowanego korpusu, aby działało dobrze. Dodatkowo dostosowujemy etap 1, aby uwzględniał schemat.



Nasz zbiór danych i proces VLM
Aby wyszkolić CubePart, stworzyliśmy zbiór danych zawierający ponad 460 000 zasobów — ponad 11 razy większy niż poprzednie publiczne zbiory danych1 — oraz 2,02 miliona części. Zamiast ręcznego oznaczania, zbudowaliśmy zautomatyzowany proces wykorzystujący modele wizualno-językowe (VLM).
Pipeline renderuje tysiące modeli 3D pod różnymi kątami, wykorzystując podejście oparte na parach: jeden obraz z teksturą (dla kontekstu semantycznego) i jeden obraz z kolorowymi częściami (dla precyzyjnego śledzenia granic). Oba są opatrzone identycznymi, ponumerowanymi znacznikami, co daje VLM adresowalny tekstowo uchwyt do rozumowania w przestrzeni 3D oraz grupowania i nazywania poszczególnych części.
W przeciwieństwie do wcześniej opublikowanych zbiorów danych, w których każde koło w pojeździe jest po prostu oznaczone jako „koło”, nasz zbiór danych uczy sztuczną inteligencję rozróżniania przestrzennego (np. odróżniania „przedniego lewego koła” od „tylnego prawego koła”). Ta precyzja dopasowania jest dokładnie tym, czego szukają silniki gier.
Co oferuje CubePart i co będzie dalej
CubePart pozwala twórcom generować zasoby, które pasują do ich kodu rozgrywki i są bezpośrednio kompatybilne z istniejącymi procesami animacji, fizyki i skryptowania. CubePart może również rozkładać istniejące siatki artystyczne na nowy schemat, co jest przydatne nie tylko do generowania nowych zasobów, ale także do ulepszania starszych.
Wciąż jest wiele do zrobienia. CubePart obsługuje dekompozycję ciał sztywnych, ale pracujemy również nad wagami wierzchołków skórowanych w celu uzyskania organicznej deformacji postaci. Uwaga między częściami znacznie zmniejsza nakładanie się, ale go nie eliminuje. Rozumowanie przestrzenne — „przednie lewe” kontra „tylne prawe” — wciąż wymaga znacznej poprawy.
Postrzegamy generowanie oparte na schematach jako krok, który sprawia, że generatywne 3D staje się użyteczne na platformie, gdzie każdy zasób uczestniczy w symulacji. Wkrótce ta technologia będzie dostępna dla twórców Roblox bezpośrednio w Roblox Studio.



