Origin
zhuanlan.zhihu.com
Tags
流程规范
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
上篇文章写到了模型与贴图精度对画面表现的影响,但是统一精度只是游戏美术规范的最基础的内容之一,要表现更出色的画面效果,还有两个不可忽视的重点,细节与质感。
什么是细节?
在我看来,细节主要体现在 3 个方面
1,对物体微观表面的呈现
在生活中我我们都具备这样的常识,不同的材料的物体,它的表面纹理是不一样的。例如金属,皮革,木头,布料,这些常见的材料,我们不用区分他们的外形,也能看出它属于那种材料。
2,环境对物体的影响
环境中的物体不可能是独立存在的,在不同的环境中物体会受到不同的影响,比如会长青苔,发霉,积灰等等,画面细节表现应该包括这些效果,美术资源才会显得生动
3,时间对物体的影响
随着时间的偏移,物体会呈现各种老化反应,比如生锈,脱漆,磨损,腐蚀等等。
什么是质感?
以前美术资源制作流程中,质感靠美术人员手绘控制。主要在本世代,pbr 的引入已经大大改善了实时渲染中的质感问题,大部分现实生活中的材质都有对应的参数。我们只要把参数调对,基本都能实现正确效果。这方面的相关文章很多,就不啰嗦了。
美术资产决定画面效果的下限,shader 规范决定美术资源生产管线。确定了我们需要的效果后,shader 就需要根据效果来定制美术资源管线。通常我们会根据材质类型来区分,比如把 shader 分为丝绸,毛发,玻璃,金属,塑料,棉布,石头,皮肤,橡胶等等等等,也就是还原质感。个人感觉这样的分类方式更接近渲染管线向,也是很多图形向 TA 负责的内容。但是要做出更生动的画面效果,shader 还需要考虑到细节表现的需求,根据美术资产的用途和做法,把 shader 规划为地面,建筑,道具,车辆,角色,服装,特效等等,他们与渲染管线的材质类型并不是并列关系,而是包含与被包含的关系。举例来说,一个石头材质的建筑,和一个石头材质的桌子,它的做法是完全不一样的。这方面往往是美术向 TA 来把控。
可以说,渲染管线决定底层效果,美术生产管线决定上层质量,两方面结合,才能实现高品质的画面效果。目前国内大部分 TA 能做到还原质感,但是结合美术资源的生产管线来实现对细节的表现做的并不是很到位,这也是国内生产环节脱节,跨部门协同不足导致的。老毛病了属于是。
那么如何规划一个符合项目需求的资源生产管线呢。我们来看几种常见的手法。
1,完全交给美术控制
TA 提供基础的 shader,其他完全交给美术,效果好坏全靠美术发挥,这是国内最普遍采用的流程,也是相当初级和粗放的生产流程。
这个流程不能说是错的,但是它的弊端很多。一个美术资源的标准生产流程就是制作模型,制作贴图,根据需求再做点碰撞 LOD 什么的,然后导进引擎。一个模型对应一套贴图(固有色、法线、粗糙度、金属度、AO),shader 决定质感,细节全靠贴图表现。下图就是这种做法的典型范例,可以看到模型上所有的细节效果,泥土,青苔等都是画在贴图上的。这种做法流程简单,效果比较可控,如果想做流程升级也简单,就是上扫描。参考我第一篇系列文章
但是这种做法也有几个明显的弊端,首先因为一个 shader 不可能包含所有的着色模型,只能表达一个主体着色模型,虽然我们可以通过调整粗糙度,金属度 / 高光或者光泽度的方式稍微区分一下不同材质的效果,但是始终是有缺陷的。材质效果不够准确
其次贴图的承载能力受分辨率限制,虽然我们可以通过规划贴图精度的做法来压榨贴图精度上限,但是贴图数量和分辨率不能无限增加,为了提升精度只能拆分贴图;而为每个模型都分配独立贴图会导致显存爆炸,也不符合游戏资产的标准。虚幻 5 的 nanite 和虚拟纹理可以部分解决这个问题,但因为 nanite 支持的材质类型有限, 现阶段还无法成为主流做法。
如果把这个做法放大到整个关卡甚至项目层面, 更能充分感受到其优劣对比
以虚幻官方提供的 quixel 免费案例 AbandonedFactory 为例, 下图整个关卡完全使用扫描资产搭建, 可以看出贴图细节非常丰富, 效果很真实.
但是如果我们把视角拉的再近一点, 就能看出很多明显问题, 比如贴图拉伸, 贴图精度不足导致肉眼可见的大量马赛克等.
打开资产我们可以看到单张贴图尺寸已经不小, 都是 4096 精度, 但是 4K 精度要表现一个 7.8 米高的厂房还是很吃力, 4096=512*8, 相当一平方米的贴图精度不足 512, 平铺 8 次, 大概也就是一个手游标准, 放在 PC 上是不够看的. 并且贴图中相似内容太多, 有大量重复制作, 以游戏资产的标准来看是不合规的. 游戏资产非常在意重用率, 如果某个非重要资源在项目中只出现一次, 那这个资源最好砍掉. 尤其是贴图层面.
为什么单独在这个范例上花费这么大篇幅呢. 我在帮很多公司和团队进行美术效果优化的时候, 最常遇到的问题就是美术资源生产缺乏规范, 拿到需求就开工了, 最后资源量爆炸, 一个关卡能干出几百张贴图来. 而国内技术美术体系尚不成熟, 很多团队技美很少直接介入资源生产环节, 最后优化的时候就无从下手, TA 通常具备一个大的优化概念, 也知道落地需要的技术细节, 但是很难执行到美术层面上. 举例说明就是知道需要减少贴图数量, 降低 drawcall, 减少贴图对显存的占用, 但是哪张贴图该砍哪张不该砍, TA 无法判断, 教给美术团队去做主更不靠谱, 他们要是有这个概念就不会做成这样了. 这种情况也很难优化. 重新规划资源制作方式等于大部分美术资产重做, 这会造成极大的成本浪费. 毕竟游戏里的美术资源大改一次就是几百万上千万没了. 所以老板要么就只能选择咬牙忍着, 项目质量差点就差点, 要么就是咬牙重做, 打落牙往肚里吞.
,quixel 这个案例就是一个比较典型的情况. 当然这个关卡只是为了展示作用, 人家也不是按游戏美术规格做的. 但是如果各位 TA 或者美术想练习优化, 不妨用这个关卡练手, 在不影响画面效果的情况下, 把整个关卡的贴图数量控制在 10 套以内 (大概 40 张), 且贴图大小总和加起来不超过 2 张 8192.shader 控制在 5 个左右 (不算 instance).
2,建立材质库,使用混合材质制作
这种做法的宏观思路就是把模型,贴图,材质实现一定程度的解耦,在制作流程上互不干涉,可以并行推进。第一步还是先建立材质库,定义好项目需要的材质种类效果规范,然后建立纹理库,同过各种无缝纹理的混合,实现比较丰富的变化。美术只需要标记 mask 和 ID 贴图,配合贴花, 就可以实现丰富的材质和纹理效果。
这也是目前业内的主流做法。具体可以参考这篇文章:FreddyHu:从 Paragon 来分析工业化纹理制作 Pipeline
这种做法的好处在于:
一定程度的打断了模型,贴图,材质的关联性,各个部分可以并行推进制作,大大提升了制作效率。
通过建立材质库和纹理库,可以有效的在项目初期就规划好总的美术资源生产量,避免同类材质的重复制作,增加效率,减少内耗。
细节表现更加丰富,各种效果可以灵活调整.
坏处是,增加了美术的学习成本,无法直观在 DCC 软件中查看最终效果, 可能有部分美术难以理解这种制作思路。如果美术不能熟练使用引擎很难调出正确的效果。
消耗增加,贴图多层混合会增加采样成本,不过从宏观角度讲,项目中总的贴图数量是大大减少的.
在移动平台上使用限制极大.
3,从资源生产源头解耦
我们都知道, 大多数情况下, 面数并不是性能瓶颈. 在当前硬件环境下, 哪怕是移动平台, 引擎对面数也有很好的支持, 配合 LOD, 视距裁剪, 遮挡剔除等优化手段, 运行平台对同屏面数一般都有比较大的宽容度. 贴图, 骨骼, 动画资源, 光影才是比较难做优化的地方. 那么最有效的优化手段, 就是从生产环节源头下手减少贴图尺寸和数量.
其实一般游戏项目中出现的材质类型也就十几种到几十种, 如果整个项目都是基于这些基础材质类型制作, 那么项目中的贴图数量会大大减少, 优化压力也小很多. 而一般游戏中, 世界观设定都是稳定统一的, 也就是意味着表现游戏世界的美术资源, 其对细节和质感的要求也是统一的, 那么我们可以在资源制作规划上, 把这种统一性从 shader 到贴图层面就做好, 这样可以就实现模型和贴图的解耦.
通俗的解释就是, 我们做项目资源规划的时候, 就把细节和质感绑定在贴图与材质上. 然后通过拆分模型和 UV 的方式, 实现对这些资源的重复使用.
死亡空间是这方面比较典型 (极端) 的范例
在死亡空间的美术资源中, 基本不存在为特定模型制作的独立贴图, 所有的模型和贴图都是可以随意组合拼接的. 这就意味着可以用很小尺寸的贴图实现丰富的效果.
死亡空间单个关卡中使用的贴图, 最大尺寸不超过 512, 大部分为 256 甚至 128, 整个关卡贴图加起来不超过 15M. 这已经比很多手游规格都低了, 而这还是一款主机和 PC 平台的游戏. 实际上, 单从贴图来看, 你很难看出这张贴图属于哪个模型. 它可能用在墙上, 地面上, 天花板上, 甚至飞船的某个零件上. 为了实现最大程度的贴图复用, 甚至游戏中的 lightmap 也是美术手动创建. 这样处于同样光照环境下的同类物体不会产生多余的 lightmap. 最终在游戏中的表现你完全看不出来是以极低的资源规格制作的游戏.
一个关卡的贴图也就这么多, 资源量被限制得死死的
通过建立统一的美术风格, 在项目顶层规划上便实现模型和贴图的解耦. 从而减少整体美术制作量和材质复杂程度, 而前期规划又可以更好的推动美术风格的统一, 传统的美术生产流程是原画 — 模型 — 贴图 — 材质. 而解耦后的生产流程则是贴图 —- 材质 —- 原画 —- 模型. 模型生产被放到了最后, 这样也可以大幅度减少美术资源修改带来的影响.
这种做法的好处在于:
优化方便, 整体效果可控. 美术品质和制作人员水平几乎完全脱钩. 适合量产. 工业化到极致了属于是.
缺点在于:
需要美术总监对整体效果有极强把控能力.
制作过程繁琐, 非常折磨美术, 除了美术总监几乎没人知道最终效果啥样.
比较吃项目类型, 项目类型对制作流程影响很大
当然在实际项目开发中, 美术资源的生产方式不可能死用一套流程, 一般都是这几种做法混用, 由美术总监做整体把控根据需求选择不同的做法. 通过我这几篇文章, 大家可以看出, 我很少写某个具体效果的实现, 更多的是从方法论的角度出发, 宏观的去分析项目需要的生产管线, 这也是我写这个系列的主题, 去分析做事的思路, 方向定了, 再解决细节问题. 如果做事的方向错了, 那么微观上的问题处理得再漂亮, 对整个项目的品质和走向也于事无补. > 本文由简悦 SimpRead 转码