視覺效果超贊!隨意畫個草圖就能生成3D交互游戲場景!騰訊XR出品
文章鏈接:https://arxiv.org/pdf/2408.04567
項目地址:https://xrvisionlabs.github.io/Sketch2Scene/
亮點直擊
- 可控的、基于草圖指導的2D isometric圖像生成流程。
- 一個基底圖修補模型,通過在新數據集上進行逐步展開的去噪擴散訓練。
- 基于學習的組合式3D場景理解模塊。
- 一個程序化生成流程,用于使用上述場景理解模塊獲得的場景參數渲染互動3D場景。
3D內容生成是許多計算機圖形應用的核心,包括視頻游戲、電影制作、虛擬現實和增強現實等。本文提出了一種基于深度學習的創新方法,用于從用戶的隨意提示(如手繪草圖)自動生成互動和可玩的3D游戲場景。基于草圖的輸入提供了一種自然且便捷的方式,以傳達用戶在內容創作過程中的設計意圖。為了克服學習中的數據不足挑戰(即缺乏大量的3D場景訓練數據),
本文的方法利用了預訓練的2D去噪擴散模型來生成場景的2D圖像作為概念指導。在這個過程中,采用isometric投影模式來去除未知的相機姿態,同時獲取場景布局。通過生成的isometric圖像,使用預訓練的圖像理解方法將圖像分割成有意義的部分,如地面物體、樹木和建筑,并提取2D場景布局。這些分割和布局隨后被輸入到程序化內容生成(PCG)引擎中,如Unity或Unreal等3D視頻游戲引擎,以創建3D場景。生成的3D場景可以無縫集成到游戲開發環境中,并且可以直接進行游戲。廣泛的測試表明,我們的方法能夠高效地生成高質量和互動性強的3D游戲場景,其布局與用戶的意圖緊密相關。
方法
下圖2提供了流程的概述,該流程包括三個關鍵模塊:草圖指導的isometric生成、視覺場景理解和程序化3D場景生成。
A. 草圖指導的isometric生成
1)2D isometric圖像生成:從用戶的隨意草圖開始,首要任務是生成3D場景的2D概念圖。為此,本文提出使用預訓練的2D圖像(去噪)擴散模型,通過isometric投影模型生成3D場景的斜視圖。isometric投影是一種特殊的正交相機投影,其中具有相同維度的坐標軸長度相等,且每對坐標軸之間的角度為120°主要使用這種投影方式,因為它在處理遮擋時更為簡單。采用ControlNet來為用戶提供對生成場景布局的精確控制。ControlNet允許預訓練的文本到圖像擴散模型在去噪步驟中進行額外的空間條件化。用N通道的獨熱編碼進行草圖基礎條件化,其中每個通道對應一個獨特的草圖類別(例如建筑、道路、水體、橋梁等)。與更常用的RGB像素域條件化相比,獨熱表示具有較簡單的訓練復雜度,并且允許類別重疊。
本文的方法只需用戶提供一個包含任意數量類別的手繪草圖。一旦草圖提供后,本文的方法應該能夠用合適和兼容的內容填補空白區域。例如,如果用戶畫了一些房子,模型應該能夠生成與這些房子自然對齊的道路網絡和樹木,從而形成和諧的場景。為了使輸入草圖具備這種靈活性,模型應該使用具有多樣化組合的草圖進行訓練。例如,相同的水域圖可以與不同的道路關聯,或者相同的道路可以與不同的建筑結合。因此,進行了草圖類別過濾,通過隨機刪除每個類別來增強草圖。如下圖3所示,通過去除其他類別但保留道路,參考圖像的草圖被增強為新的草圖。
上述增強數據的訓練不能直接進行,因為所有增強的草圖都對應于相同的真實值,如上圖3所示。為了解決這個問題,本文引入了一個新的損失函數,即草圖感知損失(SAL)。為每個草圖創建一個soft-mask,并將其作為損失權重矩陣應用,以鼓勵ControlNet的監督關注草圖中的有效區域。權重通過使用高斯核卷積草圖mask 獲得,如上圖3中間列所示。這意味著靠近用戶草圖的區域應用更高的權重,反之亦然。設ω,最終的mask 被納入到以下損失中。
2) 2D 空白地形提取:為了恢復場景中對應的 3D 地形,需要一張干凈的空白地形參考圖像(即“基底圖”)。在生成的 2D isometric圖像中,由于前景物體的存在,仍然有一些地形的遮擋區域。例如,建筑物遠側的地面不可見。與一般的修補任務不同,這一任務具有挑戰性,因為修補區域不得包含任何前景物體。現有的基于上下文的修補方法由于缺乏先驗知識而難以填補如此大的ma s k。盡管基于擴散的生成修補方法展現了潛力,當前的最先進(SOTA)方法,如 RePaint、EditBench 和 Stable Diffusion XL Inpaint (SDXL-Inpaint),即使使用精心設計的提示,也未能產生令人滿意的結果。(參見下圖6)
為了解決這個問題,本文對 SDXL-Inpaint 進行 LoRA 微調,以學習基底圖和前景mask 的分布。為了克服缺乏isometric基底數據集進行訓練的障礙,從三種類型的數據源中收集了訓練數據集:具有前景物體的isometric圖像、空白地形的透視圖像和地形紋理圖像。在使用具有前景物體的isometric圖像進行訓練時,修補mask 的設計要求與前景物體沒有重疊。另一方面,另外兩種類型的訓練數據使用從其他isometric圖像中隨機提取的前景mask ,與隨機形狀交叉。
a) 訓練目標:原始的 SDXL-Inpaint 構建自一個 9 通道輸入的 UNet,損失函數定義為:
其中
在修補模型的訓練階段,所有三種類型的訓練數據都會被徹底打亂并隨機抽樣。
另一個阻礙修補性能的障礙是訓練和推理之間去噪分布的偏移。這種偏移有兩種表現方式:在訓練期間,mask區域是背景,而在推理期間,mask區域是前景。此外,盡管通過將偽前景mask與隨機形狀相交來模擬真實的前景mask,但仍存在輕微的差異。Step-Unrolled Denoising (SUD) 擴散技術旨在解決這個問題。在修補過程中適配了這一技術,如下面算法1所述。需要注意的是,SUD 步驟僅在訓練的后期階段應用,因為它僅在預測能夠產生合理結果時有效。
B. 視覺場景理解
將3D場景分解為三個主要組成部分:地形高度圖、紋理貼圖圖和前景物體。高度圖控制地形的形狀。紋理貼圖圖及其相應的紋理磚塊決定地形的紋理和顏色。貼圖圖通常在游戲引擎中使用,作為瓦片紋理的透明合成,以獲得紋理化的地形。前景物體的實例和姿態確定了放置在場景中的3D物體的類型、位置和方向。
1)地形高度圖:在基底圖修補之后,場景中仍有一些區域部分被遮擋,例如山的背面。從修補后的2D地形圖中重建一個粗略但密封的3D地形網格。這個網格將成為解析游戲地形參數的基礎,使得在游戲環境中生成高保真場景成為可能。與依賴增量場景重建的先前方法不同,本文的方法利用了isometric視角,這提供了環境的全面概述,最小化了遮擋。這能夠僅使用一張圖像恢復場景的大部分顏色和深度信息。為了推斷場景深度,采用 Depth-Anything 方法,然后將 RGB-D 圖像重新投影到空間中以獲得有色點云。接著,使用 Poisson 重建技術重建完整的網格。
粗略的顏色參考還包括水域區域,這些區域按前述方法進行分割。對于水域類別,不僅在場景中添加水體資產,還降低這些區域的地形高度,以確保地形位于水位以下。
2)紋理貼圖圖:粗略的地形網格在旋轉到 BEV 時提供了粗略的顏色參考。然而,直接使用這圖像作為地形的紋理將導致游戲中視覺效果模糊、質量低下。流行的游戲引擎(例如 Unity、UE)使用 N 種紋理磚塊和 N 通道貼圖圖來處理地形紋理,其中貼圖圖作為對應紋理磚塊的透明合成。具體來說,通過使用 Segment Everything 對 BEV 中地形網格的渲染 RGB 圖像進行分割來獲取紋理貼圖圖,并使用 Osprey 為每個分割mask(例如草地、巖石、道路)獲得語義類別。然后,我們從相應類別的紋理磚塊列表中自動挑選,并將其分配給地形。這確保了地形紋理即使在近距離查看時也保持清晰。
C. 程序化 3D 場景生成
通過利用前一模塊中獲得的語義和幾何理解,我們可以結合程序生成技術進行場景創建,使用 3D 資產檢索或生成。最后,3D 場景在現成的 3D 游戲引擎(如 Unity 或 Unreal Engine)中組成并渲染。在此工作中,使用 Unity 游戲引擎來構建3D 互動環境,因為 Unity 提供了寶貴的優化功能,用于地形、植被和動畫,確保優化的運行時性能。其他游戲引擎或 3D 平臺(如 Blender)也可以輕松使用。
鑒于高度圖、貼圖圖和選定的紋理磚塊,可以輕松將它們應用到 Unity 地形資產中。這提供了一個具有高分辨率紋理的基本 3D 地形。根據紋理類型,可以指定可以在其上放置或生長的植被和小物體。例如,草地紋理可能包括草、花和巖石等資產,這些資產使用已建立的程序內容生成技術遍布地形。對于較大的物體,使用前景物體的分割實例(例如建筑物、橋梁)來執行物體檢索或 3D 物體生成。對于前者,通過比較 CLIP 分數,從 Objaverse 數據集中搜索最相似的 3D 物體實例。對于后者,使用最新的 2D 到 3D 資產生成 AI 模型(如 LRM 或其他 [3]、[38]、[39])生成 3D 資產。這些生成的 3D 物體然后按照前面步驟中估計的前景物體姿態放置到場景中,完成 3D 場景。
結果
A. 訓練和推理細節
研究者們收集了數據集分別訓練ControlNet和修復模型。ControlNet數據集包括10,000個由SDXL生成的isometric視角游戲場景圖像,這些圖像與來自InstructBlip的相應文本提示和相關草圖配對。這些草圖是通過結合多個StoA基礎模型的結果生成的,包括Grounding DINO、Segment Anything和Osprey。由于沒有isometric底圖作為真實值,從三個來源策劃了一個修復數據集:5,000張帶有前景物體的isometric圖像,4,000張手動過濾的空地透視圖像,以及1,000張純紋理圖像。
B. isometric2D圖像生成
下圖5展示了使用ControlNet和修復模型在多種用戶草圖和提示下生成的代表性結果。這些結果展示了ControlNet準確跟隨草圖布局并應用提示指示的場景風格的能力。即使前景mask 覆蓋了圖像的大部分區域,修復模型也生成了與完整的isometric圖像一致的干凈底圖。
如圖5所示,ControlNet為用戶的草圖提供了靈活性,可以適應如圖5a和5b中的單一水類場景,以及圖5c中的三種不同類別場景。在使用相同草圖的情況下,圖5a和5b通過應用不同的文本風格生成了不同的場景。如何平衡草圖條件和文本提示指導的影響是關鍵。SAL增強版ControlNet通過允許不精確的用戶草圖簡化了這一平衡過程。它偶爾會添加額外的物體或擴展區域,以實現用戶的設計意圖。例如,在圖5b中,河流和瀑布自然地結合在一起,滿足了文本和草圖的要求。在圖5c中,增加了八棟建筑,以符合“擁有許多建筑的城鎮”這一短語,同時尊重了用戶繪制的原始草圖。
C. 修復對比
我們將修復結果與SDXL-Inpaint在前面圖6中的isometric圖像進行了對比。本文使用的正向提示是“一個空的地形圖,表面上沒有任何突出的東西。這是一片沒有建筑物、植被或橋梁的景觀。”負向提示為“建筑物、植被、樹木、橋梁、偽影、低質量”。我們的模型成功生成了干凈且一致的底圖,而SDXL-Inpaint則傾向于用偽影替代建筑物和樹木。
D. 視覺場景理解
在給定2Disometric圖和空白底圖的情況下,視覺場景理解模塊恢復了前景物體的實例級語義分割,估算了isometric深度,恢復了粗略的地形網格,渲染了鳥瞰高度圖和彩色圖像,分割了紋理圖,并恢復了前景物體的位置。下圖7顯示了生成的高度圖、鳥瞰物體位置和提取的物體參考圖像的示例。
E. 程序化3D場景生成
下圖8展示了從前面圖1、圖5a和圖5c的isometric圖像生成的三個3D場景。結果顯示,這些3D場景的布局和紋理風格與相關的草圖和isometric圖像高度一致。第一個場景中的物體是從Objaverse中檢索的,而第二個和第三個場景中的物體是通過使用從isometric圖像提取的物體實例圖像生成的。這些物體不僅與場景的紋理風格和諧匹配,而且根據鳥瞰圖(BEV)的足跡在3D場景中自動且準確地縮放、定向和定位。需要注意的是,由于材質組成和光照動態的變化,導致3D場景的渲染圖像與參考圖像之間存在輕微的顏色差異。更多示例結果見圖9和圖10。
F. 局限性
本文目前的實現采用了一個多階段的pipeline,涉及許多中間階段。錯誤很容易累積,有時需要用戶從不同的噪聲種子重新開始。一種潛在的解決方案是同時生成多種模式,如RGB、語義、深度、表面材質和物體足跡,并融合這些中間結果,直到獲得連貫的最終結果。同時生成前景和背景層也是一個可能的解決方案,例如應用新提出的LayerDiffusion方法。目前,在本文的pipeline中,地形紋理和地形材料僅通過檢索地形數據庫獲得,這限制了地形紋理的多樣性。未來計劃開發基于擴散的紋理生成模型,類似于[45]、[46]。
結論
本文提出了一種名為Sketch2Scene的新方法,用于根據用戶的隨意草圖和文本提示生成3D互動場景。為了解決3D場景缺乏大規模訓練數據的主要挑戰,利用并改進了預訓練的大規模2D擴散模型。為現有的擴散模型提供了兩個創新:(1) SAL增強的ControlNet,(2) 逐步展開的擴散修復。與其他用于3D場景生成的最新生成技術(例如,使用SDS損失或直接三平面回歸)相比,本文的方法生成了高質量的互動3D場景,并且可以將生動的3D資產無縫集成到現有的游戲引擎中,為許多下游應用做好準備。
本文轉自 AI生成未來 ,作者:Yongzhi Xu等
