Epic 游戏贴图准则
概述
该文档主要介绍了一些我们可以从中了解到创建贴图的课程。切换到我们的 Global Illumination(全局光照)光照解决方案的 Lightmass 后,我们发现我们创建的很多贴图都太暗,其中对比太强烈,同时还包含太多噪点。
在这里共享的一些信息可能会适得其反,可以使外观视觉效果变得没那么好。要记住的一件事情是过去我们所创建的贴图是可以使用一个贴图表现材质的很多部分的,因此会将很多数据“烘焙”到单独的贴图中。由于光照和材质变得越来越复杂,所以我们应该分割并删除这个数据的某些部分,这样我们可以使材质表现得更加生动真实。
Gamma Space(Gamma 空间) vs Linear Space(线性空间)
在谈论特定贴图和技术之前,我们应该了解在 Photoshop 中对贴图进行处理并将其导入到虚幻引擎中时所发生的一些情况。当您在 Photoshop 中创建贴图时,您应该使用的是 RGB 的颜色配置。这意味着您的贴图是使用被称为 Gamma Space 的 gamma 曲线存储的。在使用默认设置(启用了 RGB 值)将您的贴图导入到虚幻引擎 3 之前,您要通知引擎在计算光照之前将您的贴图转换为 Linear Space。在所进行的操作后面有很多数学和技术方面的信息以及我们进行这项操作的原因,但是要记住的一件重要的事情是 您在 gamma 空间中绘制的值要比线性空间中的深。 例如,如果您想要绘制一个反射了 50% 光线的表面,那么 Photoshop 会告诉您 50% 灰度是 127,127,127。 Gamma 空间中的 127,127,127 会转换为 55,55,55 或在 Linear 空间中反射的 21% 光线。 这意味着您的场景将会变得更暗,并且在计算 Global Illumination(全局光照)的时候反射的光线比您预期的要少很多。
下面的曲线会描绘 gamma 空间 vs 线性空间的分布值。当您在 Photoshop 绘制一张图片,那么会存储这张图片并使用这条曲线估量亮度。
下面是有关在 Gamma 空间 vs 线性空间中进行测量的时候出现的 50% 灰度的直观示例。
漫反射贴图
创建漫反射贴图时首先要考虑的事情是您不要绘制表面的最终效果图片。您要在很多角度绘制可以表现光线反射效果的表面属性。这意味着反射贴图的阴影不应该很大或者光源变体的值不应该很大。任何数量大的环境遮挡都应该通过 LightmassAO 或 SSAO 表现。有时在法线贴图中显示的细节将仍然需要在漫反射贴图中显示的少量,但是这个值不应该太暗。
其次,漫反射贴图应该是亮的,并且它的对比值较低。如果您创建的贴图太暗,那么您要限制它的作用范围使其在游戏中是明亮的。您应该记住您所创建的这个贴图要描绘的是当这个表面被 100% 明亮的白光照亮的情况下的亮度情况。还要考虑您是否将贴图绘制得太暗或者其中的环境遮挡太暗,那么您将要制约表面显示阴影以及光照的功能。其中噪点太多对比度太高的贴图也会使看清楚表面形状和光照变得更加困难。
如果您需要一个有关 Photoshop 哪些将是中间灰度的准则,那么您将柱状图上的 186 作为“中间灰度”。
下面是有关贴图与它本应具有亮度相比太暗且饱和度太高的示例。
原始贴图的值平均在 46,也就是说在转换为线性看空间的时候,它们只会反射 2% 的光线! 调整后的贴图平均值在 150,这意味着它将会反射那些适用于砖墙的入射光线的 31%。 调整后的贴图还会更好地显示阴影,因为它被完全照亮和完全投影之间的区别是很大的。
下面是一个暗贴图影响光照的实际示例。最上面的图片使用的是原始暗贴图。第二个图片想要设法通过将光源强度从 2 增加到 12 修复这个图片的亮度。您会发现这样做对 GI 或暗区域毫无帮助。最终图片使用的是将光源亮度重新调整为 2 的调整后贴图。这些图片会显示贴图是否太暗,无论您怎样设法通过较亮的光源修复它最终的光照效果都不会很好。
高光贴图
过去由于各种原因(使用的渲染器不在线性空间以及在简单的光照中估算复杂的材质),美术人员使用的是不断变化的颜色数量绘制高光贴图。皮肤就是一个很好的示例。过去,美术人员会绘制蓝色或有时候是橙色的高光贴图。皮肤的高光反射实际上是白色的。事实上极少数材质具有一个颜色高光,大多数是金属。在这里您会看到高光反射是白色的。
要点是要记住每个表面都有一些形式的高光反射。它可能不清楚并且强度低,这意味着它可能不会授权它自己的贴图。在这些情况下可以使用漫反射贴图,但是您应该在这个材质中去除该贴图的饱和度或只获取一种颜色通道用于高光。
高光强度/蒙板
高光强度和蒙板通常用于驱动两个值的线性插值。这意味着通常您不需要在 gamma 校正的整个过程都使用这个贴图。您可以将这些贴图打包在一个 alpha 通道中(不进行 gamma 校正)或将它们打包都打包在通道中然后在它的贴图属性中取消勾选 []sRGB。这样做意味着使用 0 这个值指的是值 A 的 100% 混合,使用 255 这个值将会是值 B 的 100% 混合,而使用 127 将会是这个值的绝对 50% 混合。
自发光贴图
自发光贴图应该尝试使用全部范围的值以避免压缩和精度失真现象。过去,曾经使用暗的贴图创建一些自发光贴图,并与材质中的较大值相乘来补偿。这样将会在自发光渲染过程中创建绑定和错误的颜色。最好创建您的 Emissive(自发光)贴图,然后使用 Photoshop 中的 Level(关卡)或 Curves(曲线)工具最大化它们实用的范围。下面是一个自发光贴图的效果对比,其中一个是只使用了一个小范围的值并与材质中一个非常大的值相乘,另一个是使用了大范围的值并与材质中一个更加合适的值相乘。
法线贴图
有关编辑法线贴图要记住的一个要点是单位化您的混合操作通常都是有利的。也就是说使用 Crazybump 混合法线贴图或者如果您已经在 photoshop 中混合它们,那么将它们导入到 Crazybump 中并重新导出,这样它就会为您单位化您的贴图。
还要记住通过大于 1,1,0 的值叠加细节法线贴图可能会暴露 DXT 压缩失真的问题,同时会创建一些在所有情况下光照都不正确的材质。
有关皮肤的特殊注意事项
皮肤是复杂的材质,我们现在使用比 phong 更复杂的光照模式表现它。在 directX11 中买我们使用 Screen Space Sub-Surface Scattering(屏幕空间次表面散射)进行这项操作,在 DirectX9 中我们使用采用了具有软法线的着色光照衰减 CustomLighting(自定义光照)。这两种技术都将漫反射贴图视作表皮层并对其着色,表现皮肤下面的红润光照效果。这意味着皮肤的漫反射贴图应该比我们通常创建的更加亮和暗淡。皮肤的照片中已经有了“材质”而且包含由 SSS 创建红色,这样在您创建您的贴图时,您必须将其从这个贴图中删除,只有这样才能使用这个材质创建出皮肤。
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.