Pontus Ryman 使用 RealityCapture 和 UE创建超写实 巴伦西亚风景 场景环境
Pontus Ryman 向我们介绍了他的摄影测量工作流程,谈到了适合扫描的天气条件,并解释了为什么在为 3D 模型运行图像时,RealityCapture 是他的首选软件。
介绍
你好!我是庞图斯·赖曼。我已经在 AAA 游戏开发行业担任环境美术师近 12 年了。
我从小就对视频游戏和 3D 图形感兴趣,自从迷上了 3D 艺术作品一直是我的目标。我很早就开始在旧的锤子编辑器中制作半条命 1 地图,然后继续为《战场 1942》制作纹理和模组,并最终在 Black Mesa 游戏中工作,当时它还是 Source 引擎中的模组。
最终,我学习了数字图形学,毕业后不久,我设法在 DICE 找到了一个 3D 艺术家的职位。

在 DICE 度过了我的前 8 年,并参与了战地 3,4 和 5 以及星球大战前线 1 和 2 等游戏。我很幸运多年来积累了很多经验,并且由于游戏严重依赖摄影测量,我有机会参与开发该领域的尖端技术和工作流程。
随着在前线 1 上建立完全基于摄影测量的环境,核心工作流程和原则从那时起并没有真正改变,只有工具和特定装备真正被改变以改进特定步骤。游戏中的摄影测量环境仍然受益于策划一组小型但精心构建的摄影测量内容的规则,这些内容可以覆盖多个地图上的整个生物群系核心视觉外观。在每张地图中混合一些特定元素,您可以为相同的内容添加趣味,以创建相同环境的子变体。

瓦伦西亚森林项目
瓦伦西亚森林项目是我上一个项目 Summer Archipelago 的后续项目。当时,我只是在休育儿假期间需要做点事情。与我们的宝宝共度时光令人难以置信,但是当我女儿睡着的时候,我必须在晚上做一些富有成效的事情。我父亲刚在西班牙买了房子,我们正要去那里度假。我想为什么不将假期旅行与摄影测量项目结合起来,其主题与上一个项目不同但遵循相同的框架?
在这个项目中,我想在瓦伦西亚地区重新创建我捕获内容的天然森林,因为我正在外面进行实际扫描。我还参考了很多关于植被的参考资料,还参考了照明、构图、资产放置甚至声音。
我以后会大量使用这些参考资料,将内容准确地组合成一个可信的世界。我的一些镜头甚至接近参考图像的 1:1,如果构图和照明足够醒目,这些图像几乎可以充当概念艺术。
与上一个在 Unreal Engine 4 中渲染的项目相比,我想切换到 5 来测试新功能,尤其是 Lumen,它产生了一些惊人的结果。

设备
我使用的设备是一套非常基本的相机和配套设备,并且基于我们在为我从事的 AAA 游戏进行摄影测量旅行时使用的套件。
主要套件包括:
佳能 6D MKII;
X-rite Color Checker 护照;
带图像稳定器的 24mm 镜头,适用于大部分扫描;
70-200mm镜头,带图像稳定器,用于参考和远距离扫描;
三脚架
我还有一块不反光的大白布,坚固且易于清洁,还有一块蓝色的小布,坚固且易于清洁。
这一次,我还带了一些额外的装备,这些装备我并不总是带,但有时可以派上用场:
佳能750D;
18-55 毫米镜头,带图像稳定器;
偏光镜盖;
大猩猩三脚架。

这是我使用的套件,但如今摄影测量可以使用任何类型的相机完成,并且使用该技术的成本明显低于几年前。
如果有任何一件我推荐的装备,那就是颜色图表,一旦您开始建立类似资产的库,为您的扫描资产提供正确的颜色参考是非常有价值的。

照明条件
扫描时的经验法则是始终避免在阳光下或雨天/潮湿天气下扫描。虽然在阳光下扫描是可能的,但它会在内容创建阶段引入大量清理工作,有时根本无法以良好的方式进行清理,并且会留下伪影。因此,如果可能,请完全避开阳光并坚持阴影!

潮湿的天气会引起不同角度的反射,应该避免,因为它会影响摄影测量软件的校准。在反射率中,潮湿的表面也比干燥的表面更暗,因为表面已经吸收了水,这并不能准确地代表平衡场景所需的正确值。
最好的情况是阴天,这将提供均匀的照明条件,而不会从任何附近的表面反射任何颜色。虽然您可以在阴凉处或临时云层覆盖期间进行扫描,但在阳光明媚的日子里,通过间接照明,物体上的偏色可能会发生变化。一般来说,这不是一个大问题,彩色图表图像可以帮助正确校准,但请记住这一点。
捕获内容
捕获摄影测量内容是一个相当简单的过程,基础知识也很容易理解:从现实生活对象的每个可能角度拍摄大量图像,以便摄影测量软件可以匹配图像以创建 3D 点云并生成网格 和它的纹理。
在我的过程中,我使用了我之前谈到的设备,而 RealityCapture 始终是我为 3D 模型运行图像时的首选软件。
在捕捉内容时,有一些关键的事情需要注意,虽然它们在概念上很容易,但各种情况的混合可能会使维护其中一些变得具有挑战性。

这些关键是:
保持您的图像尽可能清晰,具有高快门速度和高光圈值,最好是低 ISO;
用尽可能多的图像和角度覆盖资产;
确保捕获的资产不会在图像之间以任何方式移动;
检查直方图,以免达到绝对黑色或绝对白色,如果出现这种情况,图像的这些部分将不会收集任何信息,并且在运行之前校准图像时无法进行补偿;
始终使用您的资产拍摄颜色图表的图像。
清晰度对于图像的对齐非常重要,并且还会影响生成的高多边形网格的细节质量。一般来说,这意味着在扫描时拥有正确的焦点,并且让您的 F-stop 远离较低的数字。我通常尝试在佳能 6D 上保持在 9-11 之间。但是,很难将 F-stop 保持在较高水平,因为较低的数字可以让您在光线不足的情况下获得更亮的图像,而将其与较高的 ISO 平衡可能会引入噪点,这对您的图像不利。
较低的快门速度也可以为您提供更明亮的图像,因为它可以让更多的光线进入镜头,但这会带来清晰度损失的风险,因为您在拍摄图像时可能会出现手部的微动。如果在光线非常暗的情况下,建议使用可以帮助稳定低快门速度的三脚架。扫描物体可能需要更长的时间,但尽可能遵守锐度规则很重要。

对于手持扫描,我会避免低于 200 的快门速度,并且如果我需要将相机从可以通过镜头看到的位置移开(当我需要拍摄难以到达的地方时,例如高处头或低到地面)我尽量保持更高,因为保持相机稳定变得更加困难。
至少在对齐方面,可以通过大量图像覆盖/重叠来弥补较低清晰度的图像,但是如果其中许多图像仍然不清晰,那么较小的细节仍然不会正确显示。
请记住,如果正在扫描的资产的特征或形状不存在于任何照片中,则它永远不会存在于生成的 3D 网格中,这是一件好事,每个特征必须至少有几个图像为它被创建。RealityCapture 或其他摄影测量软件中的外推或程序解决方案不会“生成”任何独特的东西,只有拉伸的纹理和平坦的地理最多可以弥补缺失信息的空白。
扫描植被本身就是野兽,需要不同的方法。我将植被放在一块大白布上,因为它们将在引擎中用作 alpha 卡,以便直接扫描它们或将它们用作创建 alpha 卡的参考。

有时使用蓝色布片可能会很有效,因为它更容易在 Photoshop 中遮盖,但蓝色也会导致有问题的蓝光在放置在板上的植被上反弹。我经历了反复试验,选择了白色而不是蓝色或黑色床单,但这真的取决于这里的口味。黑色的纸张更容易被遮盖,并且不会将蓝色反射到主体上,但它会变得非常暗,反而使拍摄更加困难。
较大的叶子和较粗的棍子更容易直接扫描,因为摄影测量软件有更清晰的细节要对齐,所以我尝试直接从这些中获取 3D 网格扫描,这将节省大量时间并且质量总是更好但是当植被具有较薄的细节时,例如松树状的树木和灌木或草,扫描时它们在风中移动的风险或它们太薄会在最终的 3D 模型中产生很多问题。在这些情况下,我只使用自上而下的图像作为参考,然后在 Blender 中对分支进行高模建模。有时可以扫描分支,但分支的较细端效果不佳,在这些情况下,可以创建手动制作的高模,然后烘烤并与分支的扫描部分组合。
在现实捕获和清理中运行您的资产
从摄影测量扫描创建内容时,有几个步骤可以清理资产并准备好在引擎中使用。
清洁和准备的数量取决于扫描的好坏以及扫描的条件。在最好的情况下,几乎不需要进行任何清理。
第一步是根据您的颜色图表校准图像。最直接的方法是简单地对颜色图表上的白点进行白平衡,这是一种快速简便的方法,可以让您的资产处于良好的状态。但是,如果您想获得非常精确的校准,则首选针对整个颜色图表色板进行校准。
如果您的扫描中有复杂的颜色跨越多个资产,例如具有强烈颜色渐变的岩石,并且如果它们是在不同的照明条件下捕获的(即使在阴影中,周围的照明条件可以投射彩色反射光),精确校准可能很有价值。

校准图像后,就可以在摄影测量工具中运行资产了,在本例中为 RealityCapture。
在大多数情况下,我只是在对齐设置中运行中等图像重叠,如果资产由于某种原因没有对齐所有图像,测试不同的对齐选项可能很有用,并且还尝试使用 down-res 选项对于图像——它可以帮助对齐找到其他图像,有时可以解决问题并连接分离的组件。
如果这仍然不起作用,并且您在扫描附近的另一个资产时通过一些幸运的镜头设法在背景中获得了相同资产的额外图像,请尝试将这些额外的图像添加到混合中,这可能正是 RealityCapture 查找所需要的并对齐组件。
我在从点云到 3D 网格的高细节上运行我的模型,以充分利用资产,而正常和高之间的质量差异取决于您的扫描。为了安全起见,我通常在高处跑步。
高模型完成后,是时候修剪和过滤掉多余的不需要的地理了。这样做有两个原因:
导出网格时不需要几何成本,这可以减少数百万个三角形,也可以更轻松地在 RealityCapture 之外使用;
如果模型将进行 UV 贴图和纹理处理,则烘焙区域的 UV 空间越多越好。但是,如果您从顶点颜色烘焙,这一点并不重要。
过滤完成后,我将纹理烘焙到高多边形,或者作为 UVed 高多边形到实际图像纹理(以可能的最高分辨率)或顶点颜色,视情况而定,但我经常使用顶点颜色。如果顶点颜色是首选方法,有时在过滤之前烘焙可能会很有用,并且我不确定要过滤掉的位置和内容,如果需要,这会提供一些后退灵活性。
之后,我将其导出为 .PLY 并将其命名为 _HIGH,然后将模型抽取到 200-500k tris(对于需要表示的更复杂地理形状的资产,数字更高)并将其导出为 _MID.ply。如果我确切地知道我的低多边形会是什么样子,并且稍后将添加裙子扩展,可以在这里进行进一步的过滤。
这个 _MID 模型用作低多边形创建的参考,因为高多边形网格对于其他软件来说可能太大而无法处理。

在这个阶段,是时候制作一个低多边形来烘烤了。如何在 MID 上制作低多边形作为参考取决于用户——您可以选择 Houdini 中的程序解决方案,使用来自 RealityCapture 的细分网格,然后对其进行清理和 UV 映射,在其中进行低多边形首选的 3D 应用程序,或者在 TopGun 中使用更手动但更准确的方法。在方法的选择上没有对错之分。代表我们将烘烤到的形状的常规低多边形就是我们所追求的。我倾向于混合使用我在 Blender 中清理的 RealityCapture 抽取,具体取决于网格的复杂性。
我通常坚持“游戏友好”预算,而不是电影/VFX 预算,因为三角形计数成本相对于对象大小,虽然这个项目中的内容并不适用于任何特定的游戏或游戏类型,但我仍然保持在预算范围内从 AAA 经验中学习并查看资产的形状,并在几何更复杂的地方给出更多三角形。
创建低多边形后,值得查看资产,看看它是否需要盖帽(如果接近实心形状,则填充下方的空白点),或者在窗台或壁架的情况下是否需要裙边延伸岩壁。
这些裙边扩展旨在帮助将资产更好地合并到地形和其他资产中。裙子延伸的地方随后将通过平铺纹理在表面中进行人工纹理化。如果使用这种方法,这条裙子还可以用作虚拟纹理混合的桥接区域。我通常只是将裙子直接向后拉伸,或者尝试跟随地面在现实世界资产上延伸的角度。该区域不需要完美的几何图形,因为它通常被其他资产的其他几何图形覆盖,但也不应该有任何明显的网格问题。

如前所述,我经常将 .ply 用于模型,因为我会将顶点颜色烘焙到漫反射低多边形,而您可以获得的最高纹理质量是将纹理烘焙到高多边形模型上的 UV。据我所知,我仍然会选择带有 Vertex Color 的 .ply,接下来我将操纵纹理并将其调整到适合游戏的标准以及分层的细节纹理,从高多边形烘焙中获得的最高分辨率纹理因此,反照率将不会太明显。
但是,如果您追求单个资产的最高分辨率,则从 UV 高模烘焙是可行的方法。
我烘焙颜色、AO、高度、腔体和法线(切线,有时是对象空间法线,如果需要进行任何清理或特定于发动机外壳)。使用烘焙的低多边形,资产可以准备好导入引擎,也可以需要一些纹理清理。
清理时主要有两点需要注意。
第一个是网格上缺少信息的破碎/模糊点。这些区域通常很容易通过在 Substance 3D Painter 中设置克隆冲压层并简单地从网格上的另一个来源获取所有通道(反照率、高度、AO、法线等)并将其克隆冲压到破碎的和缺失的区域。
二是照明信息去除。如果空腔中有严重的 AO 黑暗,可以使用烘焙的 AO 作为遮罩来照亮最暗的点,或者如果资产具有均匀的颜色,您可以反转颜色并对其进行灰度化,并将其用作增亮遮罩,虽然这通常不是最好的方法,但如果 AO 与 Albedo 上的黑暗区域不匹配,则可以提供帮助。
对于纹理中的强光照(如果资产是在强烈的阳光下扫描的)——这是最难摆脱的光照伪影,并且可能需要相当多的工作——我推荐 Agisoft De-Lighter。它在寻找和取悦过强的阳光方面做得很好。然而,解决这个问题的最佳方法是根本没有在强烈的阳光下扫描。
使用游戏内的内容
清理完成后只需导出到虚幻引擎即可。在我项目的这个阶段,我从上一个项目中建立了主着色器和导入管道,并添加了一些小的更新和优化。
总的来说,这里的重要部分是达到主着色器满足您对集合中资产的需求的程度。例如,在自然环境中,所有岩石都将使用相同的一组详细纹理,如果存在,则使用裙边扩展材料。我的自然着色器还包括解包纹理和接触阴影调整选项。
有了主着色器,通过整个“扫描 - 实景捕捉 - 清理 - 导入”管道生成内容变得非常高效,您可以快速生成大量内容。
法线贴图和漫反射纹理通常会进行轻微的细节模糊处理,我会平滑最小的细节,因为细节纹理会替换这些细节,将它们留在里面会导致质量冲突,而模糊纹理实际上可以使它在与细节结合时看起来更好纹理。这里的胜利是纹理也可以缩小以节省纹理空间。
我在这个阶段进行纹理打包和细节纹理“切片”蒙版,我将颜色和蒙版打包到 RGB + A 中,将法线粗糙度和高度打包到 RG+B+A 设置中。

“切片”蒙版基本上只是一个黑白图像,其中灰度值会将纹理阵列中的细节纹理映射到特定表面。在我的窗台资产的情况下,白色将掩盖自上而下的松树表面层将掩盖的地方,这是在着色器中驱动的,它将夹住最高的白色并将白色以下的任何东西视为黑色,然后在松树中进行掩盖 表面。明亮的白色(不是全白,但接近它)、灰色和黑色将掩盖资产上的平滑、粗糙和非常粗糙的岩石细节纹理。

导入资产后,只需使用它!当资产进入时,我通常会尝试稍微测试一下形状,看看是否需要稍微弯曲资产以使其更有用,或者调整任何纹理以更好地与其他资产对齐。开始时的校准通常会使纹理非常接近正确的值,因此并不总是需要这样做,但是现实生活中的岩石可能仍然与为该组扫描的大多数其他岩石看起来有些不同,因此使它们更接近 彼此值得做,即使它可能会稍微偏离“实际”颜色。

结尾
在 RealityCapture 和 Unreal 中使用摄影测量和自然生物群落集时,总体而言最重要的方面是确保一切都适合。
从同一位置扫描所有内容,确保在相似的照明条件下扫描资产(首选阴天),始终使用颜色图表扫描每个资产以供参考,并捕获一组中不同大小的资产。
当在现场捕获一组好的资产时,建立一条生产线非常简单,该生产线通过校准、对齐、3D 网格和 RealityCapture 中的纹理移动资产,然后低多边形烘焙到引擎结果。如果已经为一项资产建立了每个步骤的基本设置和流程,那么您可以有效地为自然生物群系获取大量内容,从而使整个环境高效生产。


