Notifications
Article
摄影制图法工作流程指南(完结篇)
Updated a month ago
153
0
为了让更多开发者和游戏工作室能够掌握和运用到摄影制图法,Unity编写了《摄影制图法工作流程》作为指南。
《摄影制图法工作流程》指南:
摄影制图法工作流程指南(1)-准备阶段:概述、所需硬件和软件设备、考虑的问题。
摄影制图法工作流程指南(2)-采集阶段:采集非小型对象、采集表面。
摄影制图法工作流程指南(3)-采集阶段:采集小型对象、采集漫反射反照率(颜色纹理)、采集树叶。
摄影制图法工作流程指南(4)-处理过程:图像处理、重构创建模型、烘培网格。
今天我们将介绍摄影制图法最后的一个阶段处理过程中的:纹理烘培、移除光照、创建游戏资产

纹理烘培

我们推荐使用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 China
316
Comments