点击上方蓝字CG世界 关注CG我们
“ 感知CG · 感触创意 · 感受艺术 · 感悟心灵 ”
中国最具影响力CG领域自媒体
在我之前发布的文章中曾经无数次提到过摄影测量技术,那么很多伙伴可能对于这个技术了解不是那么透彻,到底什么摄影测量,到底如何应用呢?今天,请这方面的专业级大神孙彻为大家讲讲其中的知识点。
作者介绍:
孙彻,1999年9月至2003年7月, 北京工业大学(BJUT),取得计算机专业本科学位
2013年8月至2015年12月, 美国伍斯特理工学院(WPI),取得计算机专业硕士学位毕业。
孙彻
技术专长:
●熟悉CG和游戏行业最新技术趋势,善于整合美术生产工具链,开发高效合理的美术生产流程。
●计算机专业背景,擅长计算机图形学和面向对象的大规模软件系统设计与开发。
●熟悉现代GPU架构和工作原理,能够使用GPU设计并实现并行计算算法。
● 精通实时渲染, 全局光照技术和蒙特卡洛随机化算法。
●熟悉商业游戏引擎Unreal Engine 4, CryENGINE 3和Gamebryo Lightspeed的使用和系统结构。
● 具备5年跨平台游戏渲染引擎开发经验 (基于Windows和Mac OS X/iOS)。
● 具备游戏引擎工具开发经验 (基于C++/CLI, C#)。
曾在英伟达(NVIDIA Corporation)北美总部、 博世(Bosch LLC)北美研发中心等公司工作,目前在北京天镜科技有限公司负责UE4技术美术指导。
1 概述
摄影测量技术(Photogrammetry)是一种借助照相技术对真实世界物体进行3D模型数据重建的数据扫描技术。90年代末由好莱坞电影工业最先应用在影视特效行业,近年来随着商业摄影测量软件的普及和游戏引擎实时渲染能力的提升,摄影测量技术逐渐被欧美3A游戏工作室引入了游戏工业,成为了制作高品质写实风格数字资产(Digital Assets)的必备技术。我们参考EA DICE工作室在GDC 2016的会议演讲,使用UE4引擎实践了这套工作流程,在这篇文章中给大家分享一些开发经验。
图1是我们制作的UE4示例场景。图3是UE4 G-buffer(Render Elements)可视化示例,UE4的PBR延迟渲染器实现了类似于迪士尼GGX BRDF的高光反射模型,向美术人员暴露了基于金属度-粗糙度贴图的微表面shader材质工作流程,这和CG行业主流离线渲染器(如Chaos Group V-Ray)的材质工作流程有一些区别,本文中我们也会简单介绍一下UE4中的PBR岩石素材材质制作思路。
图1 使用摄影测量技术和UE4制作的峡谷场景
(场景制作:李征 技术指导:孙彻)
图2使用摄影测量技术和UE4制作的峡谷场景局部。
图3 UE4引擎G-buffer(Render Elements示例)。
2 工作流程概述
我们的摄影测量工作流程如图4所示,主要包含了原始数据采集,3D数据重建,UE4引擎材质和场景制作等步骤。
2.1 原始照片数据采集
我们的照片拍摄流程参照了Epic Games官方博客给出的拍摄指南,设备清单和注意事项如下:
首要目标:
● 被摄物体和背景同时清晰,不要背景虚化。
● 被摄物体表面光影变化不强,最好不要有太阳直射,有利于PBR材质BaseColor贴图去光。
● 对被摄物体拍摄20-30张多角度照片,尽量覆盖全部表面区域(近景重要物体最多可能要40-50张)。
我们使用的设备:
● 全幅数码相机(Canon 5D Mark II/IV)。
● 变焦镜头(Canon 24-70 F2.8/24-105 F4), Sigma 8mm鱼眼镜头。
● 独脚架和三脚架。
● X-Rite ColorChecker Passport。
● 64G相机存储卡和备用电池。
● Gray/Chrome ball rig,3D全景云台。
拍摄时注意事项:
1 尽量选择阴天多云的天气,如果是晴天,最好选太阳照射不强烈的阴影背光区域。
2 照相机切换到手动模式,同一个被摄物体的所有照片使用统一参数,设置如下:
● 关闭自动白平衡,设置到一个固定值,比如晴天,或者阴天预设,或者4800k色温
● 固定ISO,越低越好,晴天100,阴天200-640
● 光圈范围F10-F14,为了避免背景虚化。
● 根据被摄物体远近,用合适的焦段,为了避免背景虚化。
● 拍摄前拍摄带有白平衡卡的被摄物体,为了后期白平衡校准。
● 合适的曝光,注意相机测光标尺的位置。
● 使用相机的标准风格,关闭各项色彩调整功能,拍摄用raw格式。
3 拍摄时360度围绕被摄物体,拍摄2到3个机位高度,15-30度角的平移旋转增量,尽量覆盖完全。
▲
图5 使用X-rite色卡护照记录被摄物体
附近的入射光强度和白平衡信息。
▲
图6 使用独脚架,确保拍摄出清晰的照片。
▲
图7 使用Gray/Chrome ball rig记录
入射光方向和强度,用于后期HDR灯光Look Dev。
▲
图8 用Lightroom对原始照片
进行白平衡和光照强度校准。
我们尝试了Epic Games Kite Demo中使用灰球/铬球配合HDR IBL的材质去光方式,这种方式可以用于CG影视级别的精准PBR材质还原。但是对我们来说,无论是逐模型对象HDR IBL采集过程还是后期去光流程,都比较繁琐。因此目前我们采用的是类似于EA DICE工作室的基于模型世界空间法线和AO贴图的去光流程。主要包括两个阶段:
阶段一,Lightroom前期去光。
阶段二,Substance Designer后期去光。
▲
图9 Lightroom前期去光。
▲
图10 在Substance Designer中
使用世界空间法线和AO贴图进行后期去光。
我们使用Substance Painter烘培出模型的世界空间法线和AO贴图。利用世界空间法线可以产生世界空间方向性遮罩,对BaseColor贴图进行方向性插值去光。同理,使用AO贴图对物体表面缝隙和沟壑区域生成遮罩,并进行插值去光。去光结果如图11所示。
▲
图11 使用Substance Designer
进行后期去光前后的模型BaseColor贴图。
2.2 3D原始模型重建
我们同时使用了Agisoft Photoscan和Reality Capture两款摄影测量3D模型重建软件。两者的重建品质都非常出色。Reality Capture的用户界面更加美观简洁,GPU加速计算速度更快一些。Reality Capture使用过程中的截图如下所示:
▲
图12 使用Reality Capture
生成原始3D模型点云。
点云生成结果的好坏取决于照片序列清晰程度以及照片数量。对于岩石素材,我们使用Reality Capture的一般品质(Normal Detail)选项生成点云,生成速度根据具体GPU性能而异,一般在5-10分钟内完成。
▲
图13 照片投射生成模型贴图。
2.3 原始模型修复
我们使用Zbrush对原始点云生成的高模进行修复。主要使用Dynamesh和ZRemesher对原始模型进行重新拓扑。同时,使用UVMaster在Zbrush中进行模型UV展开。最终我们从ZBrush导出重新拓扑后的低面数模型用于UE4实时渲染。如下所示:
▲
图14 尚未修复的原始高面数模型。
▲
图15 修复完成并重新拓扑后的低面数模型。
▲
图16修复完成并重新拓扑后的高面数模型。
2.4 PBR材质重建
为了获取UE4所需的模型BaseColor贴图,我们首先使用Reality Capture导入并重新投射在Zbrush中修复的高面数模型。之后,使用Substance Painter烘培模型法线,世界空间法线,曲率图和AO图,然后使用其图章克隆工具修复缺失部分的BaseColor贴图。Substance Painter在应对这种修复工作的时候非常好用。
▲
图17 在Substance Painter中
修复模型的BaseColor贴图。
对模型BaseColor图进行后期去光后,我们在Substance Designer中翻转BaseColor红色通道用于生成PBR材质的粗糙度贴图,我们把PBR材质的粗糙度,金属度和AO图合并到一起并从Substance Designer中导出给UE4:
▲
图18 从Substance Designer中
导出合并后的粗糙度,金属度,AO图给UE4。
2.5 在UE4中制作岩石PBR材质
目前我们在UE4中为每个摄影测量素材使用三张基础贴图(BaseColor,合并后的粗糙度/金属度/AO,整体法线)。同时,仿照EA DICE工作室的材质实现思路,为了实现近距离观看模型表面细节,叠加了岩石和树木的可替换细节平铺贴图。如下所示:
▲
图19 UE4摄影测量素材主材质的BaseColor,
粗糙度/金属度/AO,以及整体法线贴图。
▲
图20 细节贴图的平铺次数,旋转,法线强度控制。
当模型距离摄像机距离变远时,细节贴图会引入不必要的高频信息,因此通过像素距离遮罩去掉远距离的细节贴图,之后通过逐顶点/像素法线计算的积累脏迹遮罩实现物体表面落土效果:
▲
图21 在材质函数MF_DetailDistanceFade中
实现远距离物体细节贴图渐隐效果。
最终实现的UE4摄影测量素材效果如下所示:
▲
图22 UE4中的摄影测量素材预览效果。
3 UE4自然场景制作
我们采用模块化场景制作理念,将山体和地表岩石拆分成可拼接素材模块。对于灯光方案,我们使用Lightmass烘培灯光,这样对于结构性场景,可以获取到非常漂亮的全局光照效果。我们尽量制作出中小规模(如100米*100米)尺寸的场景,原因在于我们希望通过摄影测量素材尽量表现近景区域的丰富细节,同时也想控制住整体贴图资源量不超预算。
▲
图23 在UE4中使用模块化素材拼接场景,
并使用Lightmass烘培场景灯光。
相关阅读