이 사이트의 콘텐츠는 인공지능(AI) 또는 기계 번역 기술을 사용하여 번역되었으며 오류가 있을 수 있습니다.

Skip to content

CubePart: 개방형 어휘를 지원하는 부분 제어 가능 3D 생성기

실전 게임에 바로 활용 가능한 자산 구축

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

최신 3D 생성 모델은 텍스트 프롬프트를 통해 아름답고 복잡한 3D 오브젝트를 생성할 수 있지만, 게임 개발자에게는 단일 덩어리 형태의 3D 모델은 유용하지 않습니다. 예를 들어, 자동차는 실제로 운전할 수 있어야 합니다. 바퀴는 각각 따로 회전해야 하고, 문은 열려야 하며, 헤드라이트는 켜져야 합니다. 

현재 3D 아티스트들은 생성된 모델을 수동으로 분할하고 각 부품에 이름을 붙여야 하는데, 이는 확장성이 매우 떨어지는 과정입니다. 우리의 획기적인 성과는 CubePart입니다. 이는 개방형 어휘를 사용하며 부품별로 제어 가능한 3D 메쉬 생성을 가능하게 하는 최초의 생성형 AI 프레임워크입니다. CubePart는 개발자의 프로그래밍 요구 사항에 바로 부합하는, 서로 구분되고 기능적이며 정확하게 라벨링된 메쉬 세트를 출력합니다.

CubePart는 4D Generation에서 소개한 고정 스키마의 개념을 확장하여, 크리에이터가 객체를 분해해야 할 부품 목록을 직접 정의할 수 있도록 지원합니다. CubePart가 생성한 메쉬 세트는 게임 엔진에 바로 적용될 수 있으며, 수동 정리 과정 없이도 애니메이션, 물리, 게임플레이 스크립트를 통해 제어할 수 있습니다. 저희는 arXiv에 CubePart 연구 결과를 게재하고, 부품별 제어가 가능한 생성을 지원하도록 오픈 소스 Cube 저장소를 업데이트했습니다. 올해 말에는 SIGGRAPH에서 연구 결과를 발표할 예정입니다. 

스키마: 인터랙티브 3D 에셋을 위한 API 계약

Roblox에서는 인터랙티브 동작이 자산의 특정 명명된 자식인 '파트'를 조작하는 스크립트로 구현됩니다. 비슷한 자산이라도 게임이나 상황에 따라 완전히 다른 파트가 필요할 수 있습니다. 고정된 분류 체계는 창의성과 기능을 제한할 수 있으므로, CubePart는 두 가지 입력 방식을 제공합니다: 

  1. 객체의 외관을 설명하는 전역 텍스트 프롬프트: 예: "해파리 테마의 레이싱카."
  2. 스키마라고 불리는, 필요한 파츠의 구체적이면서도 개방형 목록: 예: "앞좌측 바퀴", "앞우측 바퀴", "뒷좌측 바퀴", "뒷우측 바퀴", "총", "헤드라이트", "배기관", "차체". 

스키마는 에셋과 게임플레이 코드 간의 API 계약이며, CubePart를 통해 제작자는 이 계약을 준수하는 에셋을 생성할 수 있습니다. 이러한 개방형 어휘 제어 방식을 통해 CubePart는 Roblox 에셋과 경험의 다양성을 포착할 수 있습니다.

2단계 생성 

CubePart는 VecSet 잠재 형상 표현을 기반으로 구축된 2단계 확산 아키텍처입니다. 

아래 그림에서 사용자는 두 개의 프롬프트를 입력했습니다. 

  1. 전역 텍스트 프롬프트: "만화 같은 특징을 가진 견인차." 
  2. 스키마: “운전실”, “섀시”, “바퀴”, “지붕 경광등”, “견인 장치”.

1단계는 객체의 기초적인 형태(만화 같은 특징을 지닌 견인차)를 정의하는 역할을 합니다. 이 단계는 약 470만 개의 메쉬-텍스트 쌍으로 훈련된 Qwen-VL 텍스트 인코더를 사용하는 MMDiT 아키텍처를 통해 전체 객체에 대한 단일 잠재 변수를 생성합니다. 이 단계는 데이터 집약적인 단계입니다. 개방형 어휘 언어를 3D 지오메트리에 매핑하는 것은 생성형 3D의 어려운 부분이며, 이를 잘 수행하려면 방대하고 다양한 코퍼스가 필요합니다. 또한 1단계를 스키마를 인식하도록 미세 조정합니다. 

2단계는 1단계의 잠재 표현을 입력으로 받아 각 스키마 항목에 대해 하나의 부품 잠재 표현을 생성하여, 부품을 갖춘 객체를 재구성합니다. 만화풍 견인차 예시의 경우, 2단계는 운전실, 섀시, 바퀴, 지붕 경광등, 견인 장치에 대해 각각 별도의 부품 잠재 표현을 생성하여, 뚜렷하고 기능적인 부품을 갖춘 최종 견인차를 재구성합니다. 부품 라벨이 지정된 3D 데이터는 메쉬-텍스트 데이터보다 훨씬 더 희귀합니다. 1단계가 대규모 코퍼스에서 복잡한 텍스트-형상 매핑을 학습하므로, 2단계는 모델이 이미 이해하고 있는 객체 상에서 부품 경계가 어디에 위치하는지 학습하기만 하면 됩니다. 논문에서 제시된 제거 실험 결과는 이를 직접적으로 입증합니다. 1단계 사전 학습을 제거하면 2단계의 개방 어휘 일반화 성능이 현저히 저하됩니다. 요컨대, 1단계가 있어야 2단계가 일반화할 수 있는 것입니다. 
우리 아키텍처의 또 다른 중요한 혁신은 각 부분이 어떻게 소통하는지에 있습니다. 저희의 해결책은 기존 블록을 수정하는 대신 전용 크로스-파트 어텐션 블록을 삽입하는 것입니다. 이 블록들은 출력을 0으로 초기화하여 초기에는 아무런 작업을 수행하지 않는(no-op) 상태로 시작하며, 사전 훈련된 경로를 방해하지 않으면서 파트 간 통신을 학습합니다. 이 원리는 ControlNet을 접해본 독자라면 익숙할 것이며, 여기서는 3D 파트 분해에 적용되었습니다. 견인차 예시의 경우, 크로스-파트 어텐션 블록을 통해 운전실과 견인 장치가 섀시 및 바퀴에 대해 올바르게 위치하고 매끄럽게 통합되도록 보장합니다.

데이터셋 및 VLM 파이프라인 

CubePart를 훈련하기 위해, 우리는 기존 공개 데이터셋¹보다 11배 이상 큰 46만 개 이상의 자산과 202만 개의 부품을 포함한 데이터셋을 구축했습니다. 수동 라벨링 대신, 비전-언어 모델(VLM)을 활용한 자동화 파이프라인을 구축했습니다.

이 파이프라인은 텍스처가 적용된 이미지(의미적 맥락용)와 부품 색상이 적용된 이미지(정밀한 경계 추적용)를 짝지어 사용하는 방식을 통해 수천 개의 3D 모델을 다양한 각도에서 렌더링합니다. 두 이미지 모두 동일한 번호가 매겨진 마커가 표시되어 있어, VLM이 3D 공간에서 추론하고 각 부품을 클러스터링 및 명명할 수 있는 텍스트 기반 참조점을 제공합니다.

차량의 모든 바퀴를 단순히 "바퀴"로 라벨링했던 기존 데이터셋과 달리, 저희 데이터셋은 AI에게 공간적 구별 능력(예: "앞좌측 바퀴"와 "뒷우측 바퀴"를 구분하는 것)을 가르칩니다. 이러한 매칭 정확도는 바로 게임 엔진이 추구하는 바로 그 것입니다.

CubePart가 열어주는 가능성과 향후 계획

CubePart를 통해 제작자는 게임플레이 코드와 일치하며 기존 애니메이션, 물리, 스크립팅 워크플로우와 직접 호환되는 에셋을 생성할 수 있습니다. 또한 CubePart는 기존 아티스트 메쉬를 새로운 스키마로 분해할 수 있어, 단순히 새로운 에셋을 생성하는 것뿐만 아니라 레거시 에셋을 업그레이드하는 데에도 유용합니다.

아직 해야 할 일은 많습니다. CubePart는 리지드 바디 분해를 처리하지만, 유기적인 캐릭터 변형을 위한 스킨 적용 버텍스 가중치 작업도 진행 중입니다. 크로스 파트 어텐션은 중복을 획기적으로 줄여주지만 완전히 제거하지는 못합니다. "전면 좌측" 대 "후면 우측"과 같은 공간적 추론은 여전히 개선의 여지가 큽니다.

우리는 스키마 기반 생성을 모든 자산이 시뮬레이션에 참여하는 플랫폼에서 생성형 3D를 유용하게 만드는 단계로 보고 있습니다. 머지않아 이 기술은 Roblox 크리에이터들이 Roblox Studio 내에서 직접 이용할 수 있게 될 것입니다.

1PartVerseXL과 비교하여