使用摄影测量技术在UE4中创建自然场景

1. 概述

摄影测量技术(Photogrammetry)是一种借助照相技术对真实世界物体进行3D模型数据重建的数据扫描技术。90年代末由好莱坞电影工业最先应用在影视特效行业,近年来随着商业摄影测量软件的普及和游戏引擎实时渲染能力的提升,摄影测量技术逐渐被欧美3A游戏工作室引入了游戏工业,成为了制作高品质写实风格数字资产(Digital Assets)的必备技术。

图1:EA DICE工作室研发Star Wars Battlefront时大量使用了拍照测量技术

在GDC 2016的一篇演讲中,EA DICE工作室介绍了他们使用寒霜引擎(Frostbite Engine)在Star Wars Battlefront项目中使用摄影测量的经验。我们以这篇文章中介绍的流程为基础,经过反复实验,终于成功使用UE4引擎实践了这套工作流程。
图2:使用摄影测量技术和UE4制作的峡谷场景(场景制作:李征 技术指导:孙彻)

图3:使用摄影测量技术和UE4制作的峡谷场景局部

图4:UE4引擎G-buffer(Render Elements示例)

UE4的PBR延迟渲染器类似于迪士尼GGX BRDF的高光反射模型,向美术人员暴露了基于金属度-粗糙度贴图的微表面shader材质工作流程,这和CG行业主流离线渲染器(如Chaos Group V-Ray)的材质工作流程有一些区别,本文中我们会以PBR岩石素材材质制作为例,分享我们使用这套工作流程的开发经验。

2. 工作流程

我们的摄影测量工作流程如图5所示,主要包含了原始数据采集,3D数据重建,UE4引擎材质和场景制作等步骤。

图5:摄影测量工作流程

2.1 原始照片数据采集

我们的照片拍摄流程参照了Epic Games官方Blog给出的拍摄指南,设备清单和注意事项如下:
首要目标:
        1. 被摄物体和背景同时清晰,不要背景虚化;
        2. 被摄物体表面光影变化不强,最好不要有太阳直射,有利于PBR材质BaseColor贴图去光;
        3. 对被摄物体拍摄20-30张多角度照片,尽量覆盖全部表面区域(近景重要物体最多可能要40-50张);
我们使用的设备:
        1. 全幅数码相机(Canon 5D Mark 2/4);
        2. Canon 24-70 F2.8/24-105 F4 变焦镜头, Sigma 8mm鱼眼镜头;
        3. 独脚架和三脚架;
        4. X-Rite ColorChecker Passport;
        5. 64G相机存储卡和备用电池;
        6. Gray/Chrome ball rig,3D全景云台;
拍摄时注意事项:
        1. 尽量选择阴天多云的天气,如果是晴天,最好选太阳照射不强烈的阴影背光区域;
        2. 照相机切换到手动模式,同一个被摄物体的所有照片使用统一参数,设置如下:
                1) 关闭自动白平衡,设置到一个固定值,比如晴天,或者阴天预设,或者4800k色温;
                2) 固定ISO,越低越好,晴天100,阴天200-640;
                3) 光圈范围F10-F14,为了避免背景虚化;
                4) 根据被摄物体远近,用合适的焦段,为了避免背景虚化;
                5) 拍摄前拍摄带有白平衡卡的被摄物体,为了后期白平衡校准;
                6) 合适的曝光,注意相机测光标尺的位置;
                7) 使用相机的标准风格,关闭各项色彩调整功能,拍摄用raw格式;
        3. 拍摄时360度围绕被摄物体,拍摄2到3个机位高度,15-30度角的平移旋转增量,尽量覆盖完全

图6:使用X-rite色卡护照记录被摄物体附近的入射光强度和白平衡信息

图7:使用独脚架,确保拍摄出清晰的照片

图8:使用Gray/Chrome ball rig记录入射光方向和强度,用于后期HDR灯光Look Dev

图9:用Adobe Lightroom对原始照片进行白平衡和光照强度校准

去光:
我们尝试了Epic Games Kite Demo中使用灰球/铬球配合HDR IBL的材质去光方式,这种方式可以用于CG影视级别的精准PBR材质还原。但是对我们来说,无论是逐模型对象HDR IBL采集过程还是后期去光流程,都比较繁琐。因此目前我们采用的是类似于EA DICE工作室的基于模型世界空间法线和AO贴图的去光流程。主要包括两个阶段:使用Adobe Lightroom进行前期去光,使用Substance Designer进行后期去光
图10:阶段一,Lightroom前期去光

图11:阶段二,在Substance Designer中使用世界空间法线和AO贴图进行后期去光

后期去光的原理是使用Substance Painter烘培出模型的世界空间法线和AO贴图,利用世界空间法线可以产生世界空间方向性遮罩,对BaseColor贴图进行方向性插值去光。同理,使用AO贴图对物体表面缝隙和沟壑区域生成遮罩,并进行插值去光,去光结果如图12所示。
图12:使用Substance Designer进行后期去光前后的模型BaseColor贴图

2.2 原始模型重建

我们同时使用了Agisoft PhotoscanReality Capture两款摄影测量3D模型重建软件。两者的重建品质都非常出色。Reality Capture的用户界面更加美观简洁,GPU加速计算速度更快一些。Reality Capture使用过程中的截图如下所示:

图13:使用Reality Capture生成原始3D模型点云

点云生成结果的好坏取决于照片序列清晰程度以及照片数量。对于岩石素材,我们使用Reality Capture的一般品质(Normal Detail)选项生成点云,生成速度根据具体GPU性能而异,一般在5-10分钟内完成。
图14:照片投射生成模型贴图

2.3 模型修复

我们使用Zbrush对原始点云生成的高模进行修复。主要使用Dynamesh和ZRemesher对原始模型进行重新拓扑。同时,使用UVMaster在Zbrush中进行模型UV展开。最终我们从ZBrush导出重新拓扑后的低面数模型用于UE4实时渲染。如下所示:

图15:尚未修复的原始高面数模型

图16:修复完成并重新拓扑后的低面数模型

图17:修复完成并重新拓扑后的高面数模型

2.4 PBR材质重建

为了获取UE4所需的模型BaseColor贴图,我们首先使用Reality Capture导入并重新投射在Zbrush中修复的高面数模型。之后,使用Substance Painter烘培模型法线,世界空间法线,曲率图和AO图,然后使用其图章克隆工具修复缺失部分的BaseColor贴图。Substance Painter在应对这种修复工作的时候非常好用

图18:在Substance Painter中修复模型的BaseColor贴图

对模型BaseColor图进行后期去光后,我们在Substance Designer中翻转BaseColor红色通道用于生成PBR材质的粗糙度贴图,我们把PBR材质的粗糙度,金属度和AO图合并到一起并从Substance Designer中导出给UE4:
图19:从Substance Designer中导出合并后的粗糙度,金属度,AO图给UE4

2.5 在UE4中制作岩石PBR材质

目前我们在UE4中为每个摄影测量素材使用三张基础贴图(BaseColor,合并后的粗糙度/金属度/AO,整体法线)。同时,仿照EA DICE工作室的材质实现思路,为了实现近距离观看模型表面细节,叠加了岩石和树木的可替换细节平铺贴图。如下所示:

图20:UE4摄影测量素材主材质的BaseColor,粗糙度/金属度/AO,以及整体法线贴图

图21:细节贴图的平铺次数,旋转,法线强度控制

当模型距离摄像机距离变远时,细节贴图会引入不必要的高频信息,因此通过像素距离遮罩去掉远距离的细节贴图,之后通过逐顶点/像素法线计算的积累脏迹遮罩实现物体表面落土效果:
图22:在材质函数MF_DetailDistanceFade中实现远距离物体细节贴图渐隐效果

最终实现的UE4摄影测量素材效果如下所示:
图23:UE4中的摄影测量素材预览效果

3. UE4自然场景制作

我们采用模块化场景制作理念,将山体和地表岩石拆分成可拼接素材模块。对于灯光方案,我们使用Lightmass烘培灯光,这样对于结构性场景,可以获取到非常漂亮的全局光照效果。我们尽量制作出中小规模(如100米*100米)尺寸的场景,原因在于我们希望通过摄影测量素材尽量表现近景区域的丰富细节,同时也想控制住整体贴图资源量不超预算。

图24:在UE4中使用模块化素材拼接场景,并使用Lightmass烘培场景灯光

4. 关于Mountain View工作室


Mountain View工作室是天镜科技旗下,专注于使用UE4实时渲染引擎,实现高品质实时渲染和制作自然场景素材的团队。在今后的一段时间里我们会在Epic Games虚幻引擎商场陆续推出中国自然风光为主题的小尺寸实时渲染素材包,希望有兴趣的UE4爱好者关注并支持我们。