Treści na tej stronie zostały przetłumaczone przy użyciu sztucznej inteligencji (AI) lub technologii tłumaczenia maszynowego i mogą zawierać błędy.

Skip to content

CubePart: generator 3D z otwartym słownictwem i możliwością sterowania częściami

Tworzenie funkcjonalnych zasobów gotowych do wykorzystania w grze

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

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: 

  1. Globalny tekst opisujący, jak wygląda obiekt: np. „samochód wyścigowy o tematyce meduz”.
  2. 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. 

  1. Globalna prośba tekstowa: „Wciągarka charakteryzująca się cechami kreskówkowymi”. 
  2. 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. 

Etap 2 wykorzystuje ukryte dane z etapu 1 i generuje jeden ukryty element dla każdego wpisu schematu, aby zrekonstruować obiekt z częściami. W przypadku naszego przykładowego rysunkowego holownika etap 2 generuje oddzielny ukryty element dla kabiny, podwozia, kół, światła ostrzegawczego na dachu oraz zespołu holowniczego, aby zrekonstruować ostateczny holownik z odrębnymi, funkcjonalnymi częściami. Dane 3D z oznaczeniami części są znacznie rzadsze niż dane tekstowe siatki. Ponieważ etap 1 absorbuje złożone mapowanie tekstu na kształt z większego korpusu, etap 2 musi jedynie nauczyć się, gdzie przebiegają granice części na obiekcie, który model już rozumie. W artykule postrzegamy ablację jako bezpośredni dowód na to: usunięcie wstępnego szkolenia etapu 1 w wymierny sposób pogarsza uogólnienie otwartego słownika etapu 2. Krótko mówiąc, to etap 1 pozwala etapowi 2 na uogólnienie. 
Kolejną kluczową innowacją w naszej architekturze jest sposób komunikacji między częściami. Naszym rozwiązaniem jest wstawienie dedykowanych bloków uwagi między częściami zamiast modyfikowania istniejących, z zerowo zainicjowanymi projekcjami wyjściowymi, tak aby zaczynały jako operacje zerowe i uczyły się komunikacji między częściami bez zakłócania wstępnie wytrenowanej ścieżki. Zasada ta będzie znana czytelnikom ControlNet, zastosowana tutaj do dekompozycji części 3D. W przypadku naszego przykładu z lawetą bloki uwagi między częściami zapewniają, że kabina i zespół holowniczy są płynnie zintegrowane i prawidłowo ustawione względem podwozia i kół.

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.

1W porównaniu z PartVerseXL