视觉效果超赞!随意画个草图就能生成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等