查看原文
其他

摄影制图法工作流程指南(完结篇)

Unity Unity官方平台 2018-11-15

为了让更多开发者和游戏工作室能够掌握和运用到摄影制图法,Unity编写了《摄影制图法工作流程》作为指南。


《摄影制图法工作流程》指南:


今天我们将介绍摄影制图法最后的一个阶段处理过程中的:纹理烘培、移除光照、创建游戏资产。


纹理烘培

我们推荐使用Knald来处理烘焙过程,因为它速度又快又精确。我们也可以使用Xnormal或Allegorithmic Substance Baker等工具,然而这些工具处理烘焙耗时过长。建议处理同一资产的所有纹理时使用相同的烘焙软件。

 

Allegorithmic Substance Designer不支持.ply格式,这对之前的工作流程来说是个限制。为了使用Designer来实现烘焙,可以导出带有彩色纹理的.obj格式,请参考:摄影制图法工作流程指南(4)上色或纹理部分内容。

 

我们至今还未烘焙光滑度贴图。自动制作光滑度贴图比较麻烦,所以按照之前的工作流程看,需要使用带有闪光灯效果的照片作为参考来手动制作光滑度贴图。


1

Knald v1.2.1工作流程

在Knald 1.2.1.版本中,高分辨率网格被限制为一个网格只能带有3.5亿个顶点。

 

打开Knald,按下CTRL+B打开Baker烘焙器标签页。

 

Baker标签页

设置抗锯齿为16X,对应游戏比率为1024/m或更低的纹理。

设置所需贴图大小。

指定高分辨率网格。

指定用于烘焙目标的低分辨率网格。

使用默认设置添加烘焙目标:

  • 高度(Height):用于实时环境的材质。

  • 切线空间法线(Tangent space Normals):作为法线贴图用于实时材质。

  • 对象空间法线(Object space Normals):用来去除光照。

  • 环境遮蔽(Ambient Occlusion):用来去除光照并在实时材质上使用。

  • 顶点颜色(Vertex color):来自顶点颜色的信息将传递给纹理,从而能够制作受光漫反射反照率纹理。

  • 对象空间弯曲法线(Object space Bent Normal):用于去除光照。

  • 位置(Position):用于去除光照。仅在使用大量集群处理UV后需要

  • 标准化(Normalization)应设为“Uniform”。


下图为烘焙器标签页。


Preferences标签页

设置纹理命名的前缀和后缀。

 

Export标签页

设置全局导出设置为TGA格式。TGA是安全的8位格式,所有软件都能正确处理TGA格式。

TIFF格式在不同软件中有不同的伽玛设置。

PNG格式在被Photoshop保存时没有Alpha通道。

选择导出路径。


 Main标签页

输入导出名字。在偏好设置中设定的前缀和后缀会添加到这个名字上。

使用Baker标签页中预处理(PreProcess)按钮来开始烘焙。

导出所有内容。

展示所有导出贴图的示例。



2

Xnormal v3.19.3工作流程

高分辨率网格标签页

添加高分辨率网格。

从.ply顶点颜色生成基本颜色时需要取消勾选Ignore per-vertex-color(忽视各个顶点颜色)。在进行其它烘焙时必须勾选这个选项。

 

低分辨率网格标签页

添加低分辨率网格。

 

烘焙选项标签页

命名输出文件。需要根据烘焙的贴图添加后缀。

使用边缘填充(Edge padding)功能,指定一个非零数值。

设置大小。

设置抗锯齿。建议为游戏比率1024/m及以下的纹理使用。


对于要渲染的贴图需要处理以下设置:

  • 法线贴图(Normal map):设置切线空间的开或者关,具体取决于是否为切线或世界法线贴图。这二种法线贴图不能同时制作。

  • 高度图(Height map):如果使用原始值,需要exr格式,中间值设为0.

  • Interactive and Manual使用8位格式,中间值为0.5。

  • 环境遮蔽(Ambient occlusion):分布设置为余弦。扩展角度设置为179.5°。

  • 弯曲法线(Bent normal):分布设置为余弦。扩展角度设置为179.5°。



  • 烘焙高多边形顶点颜色。由于高分辨率网格中有不同的设置(Ignore per-vertex-color设置),这个贴图必须单独生成。

 


请注意:Xnormal中不存在位置贴图。


最后,使用"Generate Maps"按钮来开始烘焙。


3

Substance Designer 6

创建新资产包

在资产管理器视图按下鼠标右键,选择“New Package”。

 

 

在新资产包按下右键,依次选择Link / 3D Mesh。

 

 

在低多边形网格上按下右键,选择Bake Model Information。

 

 

添加以下烘焙器:

  • Color Map from Mesh

  • Ambient Occlusion from Mesh

  • Normal Map from Mesh

  • Bent Normals Map from Mesh

  • Position 

请注意:所有显示“from Mesh”的烘焙器都会显示警告标志。这是因为没有引用高分辨率几何体。

 

点击其中一个警告信息,然后在右侧面板引用HD网格。

下面是每个通道的设置。

 

 

最后一步是选择输出文件夹,设置烘焙贴图的正确格式。除了位置贴图外,8位能用,但是类似exr的32位格式会提供更高的精确度,所有文件都应该是8位文件例如:tga。


移除光照

本指南介绍的工作流程是针对将在关卡中采用动态照明的游戏资产。照片中包含拍摄时镜头环境的光照信息。为了能够应用虚拟光照,需要从创建的纹理中去除所有光照信息。在这个部分我们将详细讲解这个过程。

 

1

Unity

光照移除 

有多种方法可以去除纹理的光照。有些方法需要有关拍摄时环境光的更多信息。对制作来说节约时间很重要,Unity开发了一个工具可以仅使用来自烘焙的基本颜色去除光照。该工具的优点有:

  • 快捷

  • 去除许多光源

  • 去除彩色光照

  • 去除环境光照

 

在Unity中导入在去除光照信息时所需的4或5张贴图:

  • 带有代表集群的Alpha的基色

  • 环境遮蔽

  • 对象空间法线

  • 对象空间弯曲法线

  • 如果需要的话可以使用位置信息

 


在光照移除工具中使用导入的纹理。

 

 

根据需要编辑遮罩并导出结果。如果依旧存在人工合成的痕迹,就使用Photoshop来处理掉。

 

得到的结果取决于烘焙质量。也就是重构结果的质量。黑色部分得到的结果较差。如下图所示,图中还可能出现一些人工合成的痕迹,并存在难以去除的阴影部分处理之前图片中的红色形状。



2

Photoshop光照移除

Unity光照去除工具并非十全十美,有些纹理可能存在难以自动移除的光照。这种情况下,可以使用Photoshop来巧妙地移除光照,即靠艺术家的技能移除光照,而不是软件的自动流程。


这个方法需要的时间较长,而且如果纹理中有太多光照、各种色光或是有显著的全局光照,去除光照的难度较大。Photoshop中的光照去除流程是基于世界法线和环境遮蔽贴图实现的。光照去除在32位格式上完成。

 

光照去除流程:

  • 从烘焙载入基本颜色。

  • 切换为32位格式。

  • 创建一个曝光图层,将环境遮蔽贴图反转为遮罩。反转的原因是因为相比于使图像剩余部分变暗,照亮这些部分的效果会更好。

  • 创建带有世界法线红色通道的曝光图层。

  • 创建带有世界法线绿色通道的曝光图层。

  • 创建带有世界法线蓝色通道的曝光图层。

  • 用这三个曝光图层来管理全局光和方向光。

  • 添加一些曝光图层来管理高光。可以使用高通道滤波器(位于Filters/Others/High Pass)来轻松分离这些高光。

  • 与反照率照片参考进行比较,添加最后一个曝光图层来管理所有曝光,详情请参考:摄影制图法工作流程指南(3)采集漫反射反照率部分内容。


下面示例中可以看到环境光仍然影响着基本颜色,被标出的红色形状。



3

结合Unity与Photoshop光照移除解决方案

第三种方法是使用Unity光照移除工具的输出结果,如果效果不够好,可以结合Photoshop的手动处理方法来得到理想结果,如下图所示。


可平铺材质

有些游戏资产需要可平铺材质来具有可重用性。平铺过程耗时较长,为了辅助这个过程,我们建议使用二个不同的方法:

  • Artomatix可以用于自动工作流程,用来制作可平铺材质。

  • Substance painter相结合可以用作艺术工作流程。

 

1

Artomatix

在编写本文时,Artomatix服务已经通过其网站完成了。

 

工作流程:

访问Artomatix网站。

选择移除接缝。

上传纹理。

  • 从光照移除过程得到的基本颜色

  • 烘焙的法线贴图

  • 烘焙的高度图

  • 来自烘焙设置边框和遮罩的环境遮蔽贴图。

 

仅需几分钟就创建出了可平铺材质。


如下图所示,右图是个完全由Artomatix基于左边原始图生成的可平铺纹理。如果一些图案太过明显,可以通过一些遮罩来移除。

 

 

这个过程速度很快,但是当前版本得到的结果会显示太多相同的图案。这些图案可以使用Substance painter来移除。


2

Substance painter

Substance painter不仅能让艺术家在3D对象上绘制材质,也可以用来移除Artomatix的人工合成痕迹,或是直接用于制作可平铺材质。

 

使用一个带有3x3平铺的平面作为3D网格。需要使用该平铺来管理边缘之间的过渡。在Substance painter中设置材质,使用Painter克隆工具来制作可平铺材质。

 


通过克隆工具,我们平铺了边缘,擦除了颜色检查器,并且替换了一些不想要的图案。


创建游戏资产:3ds Max

使用已经烘焙过纹理的低分辨率网格作为游戏资产的基础。

 

不要修改用于烘焙的UV1通道。

放置轴心点,设置网格位置为0, 0, 0。

按照游戏中的效果旋转网格,应用重置Xform。

 

当在Unity中使用可平铺材质处理材质分层时,需要使用第二个UV集。本示例中要注意UV方向,根据需要制作细节层次。

 

得到的游戏资产效果如下图所示。


 

石块资产和分层的可平铺材质都是用摄影制图法处理得到的。


树叶制作:Photoshop

树叶在摄影制图过程需要手动处理一些自定义元素。目前建议使用基于照片的流程进行制作,这样不用经过任何3D重构,能够节省时间,得到的结果对游戏来说已经足够。


1

基本颜色 

打开照片,转换为32位,调节照片的白平衡。这一步中,照片的效果类似于颜色贴图。下一步是制作Alpha遮罩。


将图像转换为8位,然后使用Hue/saturation来设置饱和度为0,这样能得到灰阶图像。多次使用Brightness/Contrast来制作黑白图像。可以使用高斯模糊来擦除灰尘上的合成痕迹。接下来移除颜色检查器,手动清理最后的合成痕迹。

 

 

这种黑白纹理可以用作遮罩。将它保存在漫反射反照率纹理的Alpha通道。

 

当有大量树叶时,将它们打包为图集会更高效。



2

法线贴图

为了制作一个树叶的法线贴图,需要制作二个法线贴图并结合起来。该方法有点特别,但通常能得到足够好的结果。它需要使用Xnormal Photoshop插件。

 

第一个法线贴图是基于之前过程生成的遮罩制作出来的,它会定义全局形状。

  • 将遮罩复制到新文档中。

  • 设置模式为RGB Color。

  • 应用高斯模糊来制作圆角形状。

  • 使用Xnormal过滤器的"Heights2Normals"


如果树叶更复杂,可以制作简单的3D网格,然后进行烘焙来得到全局形状。

 


第二个法线贴图使用漫反射反照率贴图来提供更多细节。

  • 使用Xnormal过滤器的"Heights2Normals"。


 

结合二个法线贴图:

  • 从形状载入法线贴图。

  • 创建分组。

  • 添加新图层,图层中是来自反照率贴图的细节法线贴图。

  • 在红色和绿色通道填充白色。

  • 设置图层为multiply。只保持蓝色通道。

  • 添加新图层,图层中是来自反照率贴图的细节法线贴图。

  • 蓝色通道中填充灰色(128, 128, 128)。

  • 设置图层为叠加层(overlay),只保持红色和绿色通道。

  • 管理分组的不透明度,带来更多或更少细节。

  • 复制粘贴新的顶部图层结果。

  • 使用Filter/Xnormal/Normalize处理法线贴图。



最后,我们为纹理的命名设置前后缀。虽然得到的结果不是很准确,但这是最简单的方法,能够制作效果足够好的成品。

 

游戏内渲染效果如下图所示。


小结

《摄影制图法工作流程指南》分享到此就全部结束了,我们希望更多开发者和游戏工作室能够掌握和运用到摄影制图法,创作出精彩的作品。 更多Unity技术内容分享,尽在Unity官方中文论坛(UnityChina.cn)!


推荐阅读


活动信息

Unity视觉艺术专题论坛报名开启

9月11日,Unity将参与由中央美术学院、中国文化娱乐行业协会联合举办首届游戏艺术大展,并举办Unity视觉艺术专题论坛,邀请所有对技术与艺术游戏及视觉艺术感兴趣的人员参与本次活动。[了解详情...


点击“阅读原文”访问Unity官方技术论坛

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存