本網站內容使用人工智慧(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 發表相關研究成果。 

Schema:互動式 3D 資產的 API 合約

在 Roblox 平台上,互動行為是透過作用於「部件」的腳本來實現的——這些部件是資產中特定且具名稱的子元件。即使是相似的資產,根據遊戲或情境的不同,也可能需要完全不同的部件。固定的分類體系會限制創意與功能,因此 CubePart 提供兩項輸入: 

  1. 描述物件外觀的全域文字提示:例如「水母主題的賽車」。
  2. 一份稱為「架構」的特定、開放式必備部件清單:例如「左前輪」、「右前輪」、「左後輪」、「右後輪」、「槍」、「頭燈」、「排氣管」、「車身」。 

此「架構」是資產與遊戲程式碼之間的 API 契約,而 CubePart 讓創作者能生成符合該契約的資產。這種開放詞彙的控制機制,使 CubePart 能完整涵蓋 Roblox 資產與體驗的多樣性。

兩階段生成 

CubePart 是一種基於 VecSet 潛在形狀表示的兩階段擴散架構。 

在下方的示意圖中,使用者輸入了兩個提示。 

  1. 全局文字提示:「一輛具有卡通風格特徵的拖車。」 
  2. 結構化提示:「駕駛艙」、「底盤」、「輪子」、「車頂警示燈」、「拖車裝置」。

第一階段負責定義物體的基礎形狀(一輛具有卡通風格特徵的拖車)。 此階段使用搭載 Qwen-VL 文字編碼器的 MMDiT 架構,針對約 470 萬組網格-文字對進行訓練,為整個物件生成單一潛在向量。這是個飢渴於數據的階段:將開放詞彙的語言映射至 3D 幾何結構是生成式 3D 的难点,且需要龐大且多樣化的語料庫才能表現出色。我們還對第一階段進行微調,使其具備結構感知能力。 

第二階段採用第一階段的潛在向量,針對每個模式條目生成一個部件潛在向量,藉此重建包含各部件的物體。以我們卡通風格的拖車範例而言,第二階段會分別為駕駛艙、底盤、車輪、車頂警示燈及拖曳裝置生成獨立的部件潛在向量,從而重建出具備明確功能部件的最終拖車模型。帶有部件標籤的 3D 數據遠比網格文本數據稀缺。 由於第一階段已從更龐大的語料庫中吸收了複雜的「文字到形狀」對應關係,第二階段只需學習模型已理解之物體上各部件的邊界位置。我們在論文中觀察到的剝除實驗結果,正是對此的直接證據:移除第一階段的預訓練會顯著降低第二階段在開放詞彙表下的泛化能力。簡而言之,正是第一階段賦予了第二階段泛化能力。 
我們架構中的另一項關鍵創新在於各部分之間的通訊方式。 我們的解決方案是插入專用的跨部件注意力區塊,而非修改現有區塊,並採用初始化為零的輸出投影,使其起初作為無操作(no-ops),在學習跨部件溝通的同時,不干擾預訓練的路徑。此原理對 ControlNet 的讀者而言應不陌生,此處將其應用於 3D 部件分解。以我們的拖車範例而言,跨部件注意力區塊確保駕駛艙與拖車組件能無縫整合,並相對於底盤與車輪正確定位。

我們的資料集與 VLM 處理流程 

為了訓練 CubePart,我們建立了一個包含超過 46 萬個資產(規模比先前公開的資料集大 11 倍以上¹)以及 202 萬個零件的資料集。我們捨棄人工標註,轉而利用視覺語言模型(VLM)建構了一套自動化流程。

該流程採用配對方法,從多角度渲染數千個 3D 模型:一張帶有紋理的圖像(用於語義上下文)和一張局部著色的圖像(用於精確邊界追蹤)。兩者均標有相同的編號標記,使 VLM 能夠透過文字索引在 3D 空間中進行推理,並對每個部件進行聚類與命名。

有別於先前發布的資料集(其中車輛上的每個輪子僅被簡單標記為「輪子」),我們的資料集教導 AI 進行空間區分(例如,區分「左前輪」與「右後輪」)。這種匹配精準度正是遊戲引擎所追求的。

CubePart 解鎖的潛能與未來展望

CubePart 讓創作者能生成與遊戲程式碼相符的資產,並能直接與現有的動畫、物理及腳本工作流程相容。CubePart 還能將現有的美術網格分解為新架構,這不僅適用於生成新資產,對於升級舊有資產也十分有用。

仍有許多工作待完成。CubePart 目前處理剛體分解,但我們也正在研究用於有機角色變形的蒙皮頂點權重。跨部件注意力機制雖大幅減少了重疊,但並未完全消除。空間推理——例如「前左」與「後右」的區分——仍有顯著的改進空間。

我們認為,在每個資產都參與模擬的平台上,以架構驅動的生成技術正是讓生成式 3D 真正發揮實用價值的關鍵一步。這項技術即將在 Roblox Studio 內直接提供給 Roblox 創作者使用。

1與 PartVerseXL 相比