本文首发知乎,GameRes获授权发布。
这是次世代美术资源生产管线的第二篇文章(
第一篇回忆:建立下个时代的高清游戏美术资源生产管线(一):摄影测量建模),这篇讲材质与纹理规范。本来打算一篇文章写完的,但是因为材质与纹理牵涉到的内容太多,基本上游戏画面内所展示的一切都与材质纹理相关,所以拆成三篇文章来写,分别是场景篇,服装篇,角色篇,先从最简单的场景篇开始介绍。
首先看两组游戏截图对比
A:
B:
我们先忽略材质光照模型等因素,单纯比较贴图品质,都是类似的纹理,制作方式的基本相同,看起来差别并不大。事实上3A游戏的美术资源大部分也是外包给国内制作的,不少外包公司也是国内国外的包同时接,那么同样的人员做出来的美术资源理论上应该不存在太大的品质差别。但是从直观感受来看,A组的截图明显比B组画面截图更真实,细节更丰富,这是为什么?
如果简单用一句话解释就是,
同样显示的尺度下,A组的画面内容表现出来的信息量更加合理和丰富。
我们来具体分析一下B组的主要问题所在,这也是国产游戏的美术从业者容易犯的通病,此类问题在大部分国产游戏里都有出现,就算是一线大厂的产品也不例外。
第一是贴图精度混乱,角色和场景纹理存在巨大差异,以至于角色和场景的表现格格不入。
以下图为例,白框中的服装纹理精度清晰到每个缝线都能看清,但是红框中的地面贴图缺糊成一片,看不清任何细节,仿佛两个不同游戏的素材拼凑在一起。
第二是比例错误,图中红框标识出的石板贴图已经比人都大了一圈了,包括地面上的碎石,树叶,都以一种充满违合感的状态呈现在画面中,使游戏观感大打折扣。
这张截图中问题就更加明显了,如果你仔细对比一下椭圆白框中角色和方形红框中的环境道具的比例关系,就会发现画面中处处充满了荒谬的尺寸大小。一个花瓶几乎和人一般大小,建筑物的大门差不多有两人高,墙壁上爬山虎的一片叶子比人整个脑袋都大,一扇窗户能并排站下或躺下3个人,角色在场景里面就像出现在巨人国的人类侏儒一样违和。
对比3A级的游戏产品,可以看到,无论是13年的最后生还者,还是17年的刺客信条起源,尽管两款产品差了整整一个时代,光照和shader的算法已经发生了巨大的变化,但是在贴图比例和纹理精度的处理上,两款游戏角色和环境的表现都是高度统一的,绝对不会出现上面例子中贴图比例不一致和精度混乱的错误。这说明在资源制作上,3A级的产品一定是严格遵循某种长期传承的基础规范制作的。
那么如何定义这些基础规范呢?从哪几个方面入手,可以让参与产品开发的美术人员无论数量多寡,水平高低,最终产品效果都统一得像一个人制作的一样?这些规范的制定和执行,其实就是最近几年业内一直嚷嚷要实现的
工业化,这也是本系列文章的核心主题,建立符合下个时代标准的
工业化美术生产管线。
贴图是游戏表现的基础内容,游戏开发要实现工业化流程,首先要制定的就是贴图规范,贴图规范也决定了你的模型应该如何制作。
贴图规范包含了两个概念,一个是贴图应用规范,一个是贴图绘制规范。国内项目中一般对贴图绘制规范比较熟悉,比如色彩空间和颜色范围,贴图的细节程度等等,最近PBR的大规模应用也普及了一些高度通用的贴图的基本要求,这里不在赘叙。而国内项目中比较缺乏的还是贴图应用规范,比如如何规划项目中的贴图数量,拆分贴图与材质的对应关系,规范贴图的精度范围,重用度等等。通常这些是美术向TA负责,不过国内TA本来就是稀缺职位,有完整项目把控能力的美术向的TA更是少之又少。
要正确规划项目中的贴图应用规范,第一个要确定的就是贴图像素比,或者也称精度比,各家公司的叫法可能不一样,但是基本作用是一致的----确定贴图尺寸与现实尺寸的对应关系。
以下图为例,如果我们游戏中需要一堵砖墙,美术手中此时有两张看起来差不多素材,他们的大小都是512*512像素,区别就是其中一张砖纹密度更高,那么我们应该如何判断使用哪张纹理才是正确的?
在很多不严谨的项目中美术就是凭感觉来,看哪个顺眼用哪个。这样的结果就是上面的例子,整个游戏的贴图比例乱七八糟。凭感觉来是小作坊的工作方式,是无法作为工业化的生产标准的。所以我们要确定贴图精度与现实中的尺寸对应关系,也就是贴图中XXX像素=现实中的XXX米。
继续上面的例子,假如我们确定了512*512像素=现实中的1米,那么我们就可以通过常识或者测量直接判断出一张512尺寸的砖墙贴图应该大概包含多少块砖,从而决定我们应该选择什么样的贴图。如果你制作要制作一堵两米的砖墙,那你就需要使用1024尺寸的贴图,或者将512尺寸贴图tiling两次,10米的墙就是5120*5120(当然你也可以用4096,像素比是参考值不是绝对值),或者将512的贴图tiling10次,这也是我们制作程序化纹理或者材质shader时一个基本参数标准。
如图所示,右边纹理更密集的瓷砖更符合和角色的比例。
对应同样概念的还有网格精度比,这个决定了我们模型细节应该做到何种程度,多少尺寸以下用贴图表示细节,多少尺寸以上需要用模型做出细节,从而保证在游戏场景中网格的精度比例也是一致的,不至于细节忽多忽少,从而影响贴图品质和画面表现。
在游戏中我们经常会制作各种高大的墙壁,如果只是简单用mesh+重复贴图来表现效果肯定是很差的,这个时候就需要我们用网格精度比来确定哪些细节用模型表现。同时正确的网格精度划分也影响到光照烘焙的lightmap效果。从下图可以看出对模型进行细节拆分的高大墙壁效果明显要好于没有拆分过的。体积越大的物体,网格面数也要对应增加,这样才能保证不会丢失细节。
按3A游戏制作规范,一般第三人称像素比以米为单位划分,精度高大的第一人称游戏精度会到厘米,更高品质的精度会到毫米级(比如过场动画)。
毫米级精度细节与米级精度细节对比
在操作上也要限制美术的制作规范。很多美术喜欢在场景中随意缩放模型尺寸,这是应该严格禁止的。有时候模型只制作了一个2米高的墙壁,但是游戏中可能需要一个3米的,再做一个很麻烦,那么场景同学可能会拿2米的稍微放大下用在游戏中,但这样就破坏了游戏的精度,如下图所示,红框中的墙壁被缩放后,所有的砖缝都被放大了,上面的泥土灰尘等细节都已经变糊,对精度造成了很大影响,而边框中的效果才是正确的。
搞清楚这个概念之后,我们就了解了场景shader制作的基本规则,
1:保证游戏的网格精度,贴图精度统一
2:在保证精度的基础上增加细节
在UE中我们可以使用 worldaligned 节点自动对齐贴图精度,防止美术随意缩放模型造成精度不统一。
但是最好还是让美术理解这个规范,手动控制UV的缩放。
规范决定了shader功能,通过shader功能来决定美术资源的生产标准。例如我们定好游戏中,贴图精度比后,我们就知道多少米的模型需要多大的贴图,同时游戏贴图尺寸是不能无限增大的,我们要确定贴图尺寸上限,超出上限要么就增加贴图数量,要么通过tiling方式增加贴图精度,这又影响到了美术对于模型UV的分配方式。而精度比又决定了我们一张贴图的tiling次数。有了这些基本参数,我们可以很方便的进行资源程序化生产,并保证质量。
一个简单的概念,对资源生产规范影响是巨大的。实际项目生产中,能理解并执行好这个概念的团队并不多,我们自己的项目中执行得也不是很到位。很多美术还是没有建立这种基本概念认知。尤其我们发包的时候也经常要跟外包团队解释这些东西,说明他们此前接的单子从来没有客户提出这些要求,也从侧面反映了国内美术一些基本功的缺位。如果的你游戏中的美术资源比例都是错误的,精度也是混乱的,那么再好的渲染也拯救不了你的画面效果。
就先写到这里。
原文:https://zhuanlan.zhihu.com/p/388563781