/如何搭建符合下个时代标准的美术生产管线?

如何搭建符合下个时代标准的美术生产管线?


编者按工业化,可能是近几年不少游戏公司都头痛的行业趋势。纵使行业内已经有成熟的工业化产品作为参照,但依旧不少有游戏公司受限于认知、标准、成本等方面,难以跨越工业化的门槛,这在游戏美术部分表现尤为突出。


面对这些情况,一位帮助游戏公司建立美术生产管线的从业者(知乎用户@我乱写的 )借助了自身这几年来的工作和研究经验,从模型、贴图、绑定、动画和动作捕捉、shader、关卡、光照,后期、程序蓝图、优化等全面梳理了基于下个时代美术生产管线(持续更新),希望这些内容能帮助游戏美术从业者提升知识技能体系,更好地迎接工业化变革。


以下为正文:


01

摄影测量建模

 为什么要使用摄影测量建模(photoscan)?要回答这个问题,我们先回过头来看看传统美术生产管线。


早期的游戏渲染管线通常只支持一个漫反射,缺乏完整的材质与光照概念,这就意味着游戏的画面效果好坏完全取决于美术资源的品质。


为了做出漂亮的画面,美术会在贴图上表现尽可能多的细节,把材料的质感,反射,光影都用贴图表现,也就是美术通常所说的手绘贴图流程


如果美术的功底足够扎实,做出来的产品画面看去上往往也有不错的效果。国内游戏行业发展初期,不少厂家就以擅长制作高品质的手绘游戏美术素材打响了招牌,比如完美\西山居等等。随着时代发展,这种做法已经逐步被淘汰,仅在某些低预算的手游和端游中使用。



手绘游戏角色
这种做法流程相对简单,美术做完模型和贴图导入引擎就完事,不需要做额外设置。制作周期也较短,通常3-7天就可以完成一件美术资产的生产。


随着实时渲染管线的进步,法线贴图概念被引入到了游戏中。


简单描述法线贴图的概念,就是将具有高细节的模型,通过映射烘焙方式制作出法线贴图,然后贴在低细节模型的法线贴图通道上,使其表面拥有高细节模型的光影渲染效果,能在仅增加少量性能消耗的同时大大提升画面表现力,从而达到优化动画和游戏的渲染效果。


这个流程也就是业内俗称的次时代流程。法线贴图在上上个主机时代,也就是PS3和xbox360时代开始大规模应用。



法线贴图的应用虽然大大丰富了模型的细节表现力,但是物体的材质属性依然无法准确在游戏的渲染管线中还原,只能通过美术人员的经验绘制高光贴图来模拟物体对光源反射效果。


这样就暴露了两个问题:


1、通过经验绘制出来的贴图没有统一的验收标准,只能凭制作人员的审美和美术水平来估算效果,而美术人员的能力和经验都是参差不齐的,这样会导致产品品质不可控;


2、高品质的法线贴图需要通过制作有极高细节的模型来获得,而制作高细节模型需要花费大量时间,原本3-7天的工作量被增加到0.3-3个月,游戏美术资产的生产周期被大大拉长,游戏的开发成本也随之成倍增加。随着游戏体量的增长,这个成本就算大厂也开始觉得难以接受。


当行业进入PS4时代,基于物理渲染的管线开始普及,也就是业内俗称PBR。PBR渲染管线主要解决了在真实光照环境下,物体的材质质感问题,使得游戏画面的拟真度再次大大提升。


当然随之提升的还有美术资源的制作标准和游戏的开发成本.当物体的质感可以通过预设的参数来相对准确的还原的时候,剩下的问题就只有一个,如果快速获得高品质的法线贴图,或者更直接的说,如何快速获得一个高质量的高细节模型。


这时,摄影测量技术就进入了开发者的视线。



摄影测量建模,或者简称照片建模技术也不是什么新鲜玩意,在影视行业和工业领域已经应用多年。简单来说,照片建模就是对一个物体拍多张相片(最好是360度一圈),通过算法重建出3D模型的细节。目前各大图形软件厂商都有自己的照片建模工具,比较常用的有capturingreality,Photoscan,Autodesk 123D 等。



国内也有不少厂商提供这方面的服务。如果只是想接触一下其实门槛很低,拍一圈照片,导入到软件中,点击生成,等待十几分钟就能看到结果,拿手机就可以测试。



虽然理论上任何设备拍摄的照片都可以。当然实际使用上肯定是像素越高重建效果越好,通过手机拍摄出来的照片生成的模型只有大致轮廓,缺少准确细节,所以无法用于工业生产中。



为了得到高质量的模型,除了拍摄设备要支持超高分辨率以外,还要控制镜头位置和焦距,避免出现变焦,抖动,景深;控制拍摄环境,避免出现大量高光,阴影,透明物体和黑色物体;控制拍摄时间,同一对象的一套素材照片最好同时拍摄完成;控制被拍摄对象的状态,尽量保持静止,这样才能得到符合产品要求的模型。于是就出现了这玩意。


相机矩阵


通过搭建相机矩阵,可以固定镜头位置,拍摄角度,距离,时间,同时将拍摄背景环境进行改造,配合镜头偏振光滤镜,可以将反射干扰降到最低,从而得到质量稳定的照片素材。


当然,这样也大大提高了生产门槛,毕竟要搭一套这玩意还是挺麻烦的。这也是国内大部分公司没有采用这套流程的一部分原因……如果没有相关的技术储备,可以选择外包,国内也有很多家公司做这个,比如知乎上的大佬 @京一不二 的公司就是专门做扫描的,给好莱坞和国内多部影视和游戏提供过照片扫面服务。




如果是预算有限的团队可以选择自己搭,我们就是比较了各家外包的价格之后,觉得还是自己搭比较便宜,于是就摄影器材城买了50个入门级单反,定制了一套架子。成本加起来也就十几万,软件自己写,基本够用。在搭建过程中 @京一不二 大佬也提供了很多帮助,在此表示感谢。


照片建模生成的模型布线都是杂乱无序的三角面,贴图也是杂乱无序的像素碎片,无法直接用于产品中。所以还需要对模型进行清理和拓扑,通常使用的工具是wrap和zbrush。


值得一提的是拓扑神器wrap,熟练情况下几分钟就可以完成模型的拓扑工作。比手动拓扑的效率高几百倍,因为是节点化操作,工程复用也很容易,尤其适合模型的批量处理。

wrap也有zbrush插件,但是更建议使用软件本体,方便工程管理。







通过照片建模和标准化的拓扑及绑定流程,可以把高质量的模型制作周期从几个月缩短到几天,并且由于纹理和模型都是基于现实产生,也可以极大降低对制作人员水平的依赖。


将每个生产环节进行细分,并规范操作标准,就算是实习生或程序员也可以产出符合品质的美术资源,对生产力的提升是巨大的。


国外的3A厂商已经逐步用扫描流程代替了传统美术资源生产管线。比较典型的就是卡普空,自从生化危机7开始打通了这条生产管线以来,从2017年到2020,短短三年已经发布了生化危机2,3重制版,生化危机抵抗,鬼泣5等6款游戏,产量十分惊人。


虚幻新出的metahuman捏脸工具,也是基于这套流程打造。


以本人的速度来估算,类似这样细致到每根汗毛都清晰可见品质的角色模型,从0开始制作到进引擎调试完效果,大概也就一到三天时间(不含毛发)…..







国内由于市场需求和历史原因,大部分游戏厂商的制作管线都比较落后,普遍落后国外大厂两个时代,国内很多公司也不大注重生产管线的建设,导致上下游环节都跟不上,虚耗研发成本。


我们产品在找外包的时候也非常痛苦,找到的外包供应商无论是制作流程和品质都达不到我们的需求,能达到的报价又虚高,只能招人自己培训。
写这点东西也是希望国内的生产管线和技术能稍微提高一点吧,像现在卷得这么厉害不是正常状态。

02

场景:贴图精度与规范

这部分讲材质与纹理规范。本来打算一篇文章写完的,但是因为材质与纹理牵涉到的内容太多,基本上游戏画面内所展示的一切都与材质纹理相关,所以拆成三篇文章来写,分别是场景篇,服装篇,角色篇,先从最简单的场景篇开始介绍。
首先看两组游戏截图对比:


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次数。有了这些基本参数,我们可以很方便的进行资源程序化生产,并保证质量。


一个简单的概念对资源生产规范影响是巨大的。实际项目生产中,能理解并执行好这个概念的团队并不多,我们自己的项目中执行得也不是很到位。


很多美术还是没有建立这种基本概念认知,尤其我们发包的时候也经常要跟外包团队解释这些东西,说明他们此前接的单子从来没有客户提出这些要求,也从侧面反映了国内美术一些基本功的缺位。
如果的你游戏中的美术资源比例都是错误的,精度也是混乱的,那么再好的渲染也拯救不了你的画面效果。

03

场景:细节与质感

上篇文章写到了模型与贴图精度对画面表现的影响,但是统一精度只是游戏美术规范的最基础的内容之一,要表现更出色的画面效果,还有两个不可忽视的重点,细节与质感。



什么是细节?


在我看来,细节主要体现在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贴图,配合贴花,就可以实现丰富的材质和纹理效果。









这也是目前业内的主流做法。具体可以参考这篇文章:
https://zhuanlan.zhihu.com/p/364638972

这种做法的好处在于:


  1. 一定程度的打断了模型,贴图,材质的关联性,各个部分可以并行推进制作,大大提升了制作效率;


  2. 通过建立材质库和纹理库,可以有效的在项目初期就规划好总的美术资源生产量,避免同类材质的重复制作,增加效率,减少内耗;


  3. 细节表现更加丰富,各种效果可以灵活调整。


坏处是,增加了美术的学习成本,无法直观在DCC软件中查看最终效果,可能有部分美术难以理解这种制作思路。如果美术不能熟练使用引擎很难调出正确的效果。


消耗增加,贴图多层混合会增加采样成本,不过从宏观角度讲,项目中总的贴图数量是大大减少的,在移动平台上使用限制极大。


3、从资源生产源头解耦


我们都知道,大多数情况下,面数并不是性能瓶颈,在当前硬件环境下,哪怕是移动平台,引擎对面数也有很好的支持。


配合LOD,视距裁剪,遮挡剔除等优化手段,运行平台对同屏面数一般都有比较大的宽容度。贴图,骨骼,动画资源,光影才是比较难做优化的地方。那么最有效的优化手段,就是从生产环节源头下手减少贴图尺寸和数量。


其实一般游戏项目中出现的材质类型也就十几种到几十种,如果整个项目都是基于这些基础材质类型制作,那么项目中的贴图数量会大大减少,优化压力也小很多。
而一般游戏中,世界观设定都是稳定统一的,也就是意味着表现游戏世界的美术资源,其对细节和质感的要求也是统一的。
那么我们可以在资源制作规划上,把这种统一性从shader到贴图层面就做好,这样可以就实现模型和贴图的解耦。


通俗的解释就是,我们做项目资源规划的时候,就把细节和质感绑定在贴图与材质上,然后通过拆分模型和UV的方式,实现对这些资源的重复使用。


死亡空间是这方面比较典型(极端)的范例:





在死亡空间的美术资源中,基本不存在为特定模型制作的独立贴图,所有的模型和贴图都是可以随意组合拼接的。这就意味着可以用很小尺寸的贴图实现丰富的效果。


死亡空间单个关卡中使用的贴图,最大尺寸不超过512,大部分为256甚至128,整个关卡贴图加起来不超过15M。这已经比很多手游规格都低了,而这还是一款主机和PC平台的游戏。


实际上,单从贴图来看,你很难看出这张贴图属于哪个模型。它可能用在墙上、地面上、天花板上、甚至飞船的某个零件上。为了实现最大程度的贴图复用,甚至游戏中的lightmap也是美术手动创建,这样处于同样光照环境下的同类物体不会产生多余的lightmap,最终你完全看不出来是以极低的资源规格制作的游戏。



一个关卡的贴图也就这么多,资源量被限制得死死的



通过建立统一的美术风格,在项目顶层规划上便实现模型和贴图的解耦,从而减少整体美术制作量和材质复杂程度,而前期规划又可以更好的推动美术风格的统一。


传统的美术生产流程是原画——模型——贴图——材质。而解耦后的生产流程则是贴图——材质——原画——模型。模型生产被放到了最后,这样也可以大幅度减少美术资源修改带来的影响。




这种做法的好处在于:


  1. 优化方便,整体效果可控;


  2. 美术品质和制作人员水平几乎完全脱钩;


  3. 适合量产。


工业化到极致了属于是,但它的缺点在于:


  1. 需要美术总监对整体效果有极强把控能力;


  2. 制作过程繁琐,非常折磨美术,除了美术总监几乎没人知道最终效果啥样;


  3. 比较吃项目类型,项目类型对制作流程影响很大。


当然在实际项目开发中,美术资源的生产方式不可能死用一套流程,一般都是这几种做法混用,由美术总监做整体把控根据需求选择不同的做法。


通过我这篇文章,大家可以看出,我很少写某个具体效果的实现,更多的是从方法论的角度出发,宏观的去分析项目需要的生产管线,这也是我写这个系列的主题,去分析做事的思路。
方向定了,再解决细节问题,如果做事的方向错了,那么微观上的问题处理得再漂亮,对整个项目的品质和走向也于事无补。



04

服装



俗话说,人靠衣装,佛靠金装,服装是塑造角色形象的重要一环,也是游戏产品收入贡献的重要一环。因此在游戏资源生产,服装制作也是不少厂商关注的重点。


在游戏角色服装制作环节中,有两个要点是必须保障的:


第一是量大,游戏中的角色往往有大量换装需求,而皮肤产量又直接和产品营收挂钩;
第二是质量要求高,衣服制作不能马虎,否则玩家不会买账。


那么问题来了,因为美术人员制作水平高低不齐,我们如何设计一套既能满足高效率,又能满足高品质的稳定高效的生产管线?


首先是资源生产环节:


1、自动化


要想品质稳定,我们在设计生产流程的时候,必须尽可能的降低人员水平因素的影响,能用软件自动解决的坚决不使用人力。


因此在流程设计上,必须尽可能的减少人工建模的比重。这里有两个比较切实可行的方案,可以并行使用。


第一是使用摄影测量建模技术,将需要制作的服装拍摄全角度照片,然后进行数字化重建。好处不言而喻,缺点就是你必须在现实中把这套衣服先做出来,或者现实中有近似的服装原型,可以去淘宝买,也可以拍手办,总之得有东西让你拍。


这样做比较适合写实类型的项目,我在2020年的李宁数字服装发布会上主要采用这套流程制作数字化资产,关于摄影测量建模可以看第一部分。


第二是使用Marvelous Designer进行服装版型和拓扑制作。Marvelous Designer (简写为MD)是一款由韩国人开发的专业的3d服装设计软件,它可帮助用户快速的在软件中制作精美的虚拟服装,并且制作出来的效果跟真实的效果一模一样。


该软件还可以实时进行服装修改和试穿,可以与其它3D软件完美兼容,新版本带来更多的新功能,包括重拓扑、GPU模拟以及网格细分等等。


Marvelous Designer 9制作出来的结果可以完美的展现出现实服装中的垂坠感、皱褶效果和各种面料独有的细节和感觉,让大家能够在最初的阶段就能够展现出最终的效果,能够节省您的设计时间,同时能够提高服装品质,及时进行优化和改善,避免后期的成本和资源浪费。


使用软件,您不仅可以制作常规的T恤,还可以制作各种复杂细节的连衣裙和职业装等,同时,对于一些扣子、饰品等的物理属性效果也能最真实的展现出来,精确的模拟展现。


目前应该大部分角色美术都能熟练掌握MD打板的制作流程。使用MD制作衣服的思路跟现实中一摸一样,需要模型师先进行衣服版型设计,确定服装的缝线、褶边、板片的分割、纽扣、拉链等部件的位置和衔接关系等等,还要考虑衣服的层数、厚度,这样制作出来的衣服才有足够的表现力和说服力。






美术习惯的传统的制作流程,是在MD里面进行版型制作后进入zbrush中进行细节雕刻。


生产成本中的效率问题的大头,和品质的不确定性往往也是来自于这个环节。我的方式是除非是万不得已,不允许在zbrush中做这些无谓的操作,因为布料的纹理细节可以用SD进行程序化制作,每个布料纹理都可以视为简单元素的重复排列组合,而这种操作对人类来说是最费时费力,但是对机器来说又特别适合程序化处理。


在shader中处理也可以,这个后面会写到。而布料的褶皱细节完全可以通过物理解算得到,美术人工雕刻的细节不可能有物理解算的精确,就算是有少数大神雕刻出来的结果比物理解算的更优美,也无法作为量产标准推广。


你不可能指望每个参与制作的美术人员都是业内顶级大神水平,要量产只能尽量依靠机器,并且人工雕刻的布褶有时候会和实时布料模拟结果产生冲突。




拓扑和UV也必须按照固定规范制作,因为这牵涉到shader,绑定,布料模拟,LOD优化等后续一系列流程,随意分配或者让美术按经验规范会导致后续流程不可控。


在我设计的生产流程中,拓扑和UV也必须在MD里完成,并且UV分配需要和版型一致。UV的缩放也必须依照规范好的像素比进行缩放,关于贴图像素比的概念可以见文章第二部分。




实际上,我们也可以将MD的版型制作和摄影测量建模同时使用,比如我们可以单独扫描衣服的褶皱形状,建立成统一的素材库,然后将在MD中制作的模型导进zbrush中,选择性的映射扫描模型对应部位的褶皱,这样可以快速得到逼真的服装效果。





通过MD设计和制作服装模型基础形状,zbrush进行细节映射处理,最后maya或max统一整理模型单位,比例,UV空间,顶点序号,坐标轴等。


这样做的好处就是每个软件负责的模块彼此独立,可以根据人员擅长领域分配不同的工作内容,有的时候可以并行制作,最终统一整合,完全的工业化作业。


熟练的美术师通常2-7天就可以高品质完成一套常规服装的制作。


2、模块化


当然,游戏中的角色往往不止布料一种材质。可能还有皮革,盔甲,外骨骼,紧身衣等各种设计,这些设计超过了MD能制作的范围。


但是硬表面建模有个好处就是比较简单,很多细节我们不需要在模型上做出来,而是可以直接在贴图或者shader中处理,这里就可以应用到模块化的制作思路。





游戏行业发展了这么多年,已经累计了大量的素材库,稍加心思我们就可以在各大网站上搜索到,利用这些素材库,我们可以建立一套模块化生产流程,来满足一些建模软件无法快速实现的需求。


类似上面的案例,我们可以将角色服装拆分为头盔,肩甲,胸甲,腿甲等分别建库,从已有的类似素材上修改比从0开始做要快很多。例如下图就是A站上的模块化怪物生成器。






对于复杂的服装,我们可以进行流程上的拆分。比如硬表面部分我们可以采用模块化的思路构建,布料部分我们可以采用服装设计的思路构建,保证每个工序都有序可控,并且可以随时朔源,按工序检查效果,出了问题可以及时修改,而不是非要等整套做完才能检查出问题,要整个推翻从头修改。这将大幅度提高生产效率和效果。


3、渲染环节


有人总结得好,游戏画面效果是两部分决定的,美术资源的品质决定画面效果的下限,shader,光照,后处理等引擎内实时渲染的品质决定画面效果的上限。


我们从资源生产管线把控了下限,如果渲染层面搞不好,那下限就是我们画面的上限了。


所以要呈现一套高品质服装效果,shader也非常重要,它同时承接了美术资源制作规范和材质的质感表现两大重担。


要调好shader,我们首先要做好材质规划。


角色服装常用材质类型有布料、丝绸、塑料、皮革、金属、宝石等,一般不会超过这些类型,我们通常会制作好对应的材质模板,调整好参数和渲染效果,然后按材质类型为模型指定材质。


这样只要调用对应的材质模板,就可以快速实现正确的材质效果,不用为每个模型重复调整参数,方便量产化处理。


比如布料部分使用同样的材质,金属使用同样的材质,需要注意的是,同一材质属性的物体,透明和不透明也要区分开(半透明和不透明要分别指定不同的材质),这个情况布料和塑料比较常见。


为了简化和优化,也可以把相似材质类型合并处理,比如金属,皮革,塑料用一个通用材质搞,这属于项目细节需求,这里不再赘叙。


为了方便进行资源管理,尽量要求美术将同材质物体的贴图画在同一张上面,这样一张(或者说一套)贴图对应一个材质类型,当然也可以不同材质共用一张贴图,但是切忌同一材质使用不同贴图。


例如材质类型都是布料,但是画这个布料用了四五张贴图。如果因为精度问题同一质需要使用多张贴图,也不要和其他材质类型的贴图混用,比如说把布料和金属画在一起,这样会造成材质类型混乱。


为了区分材质类型,那么可能需要为使用同样贴图的模型指定额外的材质,增加不必要的工作量和材质效果调整难度,核心原则就是贴图尽量与材质类型对应。所以贴图和材质数量对应,材质数量又和模型的mesh分割方式有关,一般是建议同一贴图对应同样的材质,对应同样的部位,这样逻辑清晰,方便管理。


为了表现服装精度和质感,我们在设计shader的时候就必须考虑如何最大程度表现服装细节,在第三部分已经分析过细节和质感的关系。


UE和unity中都有自带的布料shader,效果都很不错,能满足大部分需求,但是也有自己的限制,比如UE的布料shader不兼容各向异性,大多数布料shader不支持移动平台,而现实中的布料材料类型十分丰富,项目需求也经常变化,所以有的时候我们需要一个能兼容易用性和通用性的服装shader,方便我们调整效果。


现实中的布料可能同时具备菲涅尔,次表面,各向异性,薄膜干涉等特点,如果这些都写在一个shader中会十分臃肿,在尽量不修改引擎的前提下,我们可以用一些拟合的思路解决各种质感问题。很多效果我们可以直接在base color通道中处理。


布料的散射效果,光线照射到布料上往往呈现出柔和的感觉


丝绸效果,除了各向异性,丝绸高光部分的颜色也会有变化




现实中的布料往往同时具备好几个以上举例的属性,以下是一些材质效果的实现方式:


模拟光线在布料内部散射


镭射材质效果


模拟各项异性,详细做法和原理可以参考@落月满江树的文章:
https://zhuanlan.zhihu.com/p/344507917


这些修改也可以适当添加到rouhness和specular通道,也可以配合shader本身对应属性调整,这样我们可以做出一些既尊重现实,却又高于现实的效果。


旗袍效果


肉隐肉现的白衬衫


还有绅士们最喜欢的黑丝


同时材质也要兼顾美术工作流。为了让服装呈现更好的效果和精度,我们在材质设计上最好按功能划分层次。一般可以分为结构层(表现服装版型,衣褶等结构),细节层(表现微表面细节),环境层(表现环境的影响,比如脏旧,磨损,湿润效果等),这样方便我们在引擎中实时调整细节,简单的说,其实就相当于把SP一部分功能直接搬进引擎。


不同质感的面料和纹理可以用mask贴图进行区分混合,能混多少种主要看项目需求。总的来说混合越多效果越好,从宏观角度看项目的整体效果也更加可控。


以下图为例,服装的缝线,板片之间的衔接关系,褶皱这些属于结构层,结构层无法复用,和对应美术资源深度绑定。主要是法线贴图,和一些颜色贴图(也可以解耦,但是效果会打折,要想弥补只能增加shader的消耗)


面料的纹理,质感属于细节层,细节层可以使用统一的材质库表现。搞清楚了效果之间的层次关系,我们就可以很轻松的以很小的消耗表现极其细腻的细节效果。




好的层次规划可以轻松表现毫米级的细节:





当然,调整材质的时候也要考虑到光照的影响,这个放到后面聊,这里展示一些整体效果:













从上面图中也能看出,案例中的服装完全按照现实中的规则制作,从内衣内裤,到衬衣,外套,依次穿搭在虚拟角色身上,可以任意搭配,并没有没有删掉衣服遮住部分身体mesh,这样才能实现最高自由度的换装效果。


4、绑定与动画


游戏是需要交互的,我们最终的目标并不是做一个静态画面,所有的步骤都要考虑到动起来的效果。


实现布料运动的方式主要有3种,骨骼动画,骨骼物理,布料模拟,此外还有顶点动画可以作为辅助手段。前两种效果较差,但是很省性能,通常用于移动端。实时布料模拟性能消耗高,效果好,一般用于PC和主机端。


实时布料模拟一直是计算机图形学中的难点,主要问题有2个:


1、如何实现精确碰撞防止穿模。


2、如何自然的模拟布料运动时的褶皱,拉扯。


以目前CPU和GPU的算力,完全靠算法来模拟布料在游戏中的效果还是有比较大的风险。虽然目前也有不少插件可以实现高品质的实时布料模拟,但是性能消耗很大,一般用户的配置很难抗住,要实现普通用户配置也跑得动的产品级布料效果,我们还是要从制作pipeline入手解决问题。


首先底层逻辑还是要从绑定解决问题。


优秀的绑定方案可以在不依赖碰撞的情况下解决穿模问题。我们可以先暂时不考虑布料模拟的效果,先保证在纯绑定条件下,服装不能与身体穿模。


其次可以用骨骼动画或顶点动画来进行初步的布料运动模拟。我们可以使用离线解算的方式将常规的关节运动下的布料状态保存为pose动画,然后在角色播放骨骼动画读取这些pose动画,从而实现实时驱动离线解算的布料效果。


这种做法主要用于需要直播的虚拟偶像角色,如果是游戏动画则更加简单一些,游戏动画都是固定死的,直接全部解算成离线布料动画就可以。


这个时候MD流程的重要性就凸显出来了,美术可以在衣服制作完成的同时将服装的布料运动效果解算出来。


使用ssdr可以将离线解算的顶点动画转成骨骼动画,关于ssdr的介绍文章见这里:https://zhuanlan.zhihu.com/p/78377681


5、SSDR解算效果


如果觉得骨骼动画不好用也可以将解算结果存成顶点动画,用VAT(vertex animation texture)驱动。为了加强效果还可以同时烘一套皱褶法线贴图,用当前pose的曲线值驱动对应贴图0-1变化。


不过还有一种情况,就是玩家的操作输入并不是固定的,一昧的使用固定的动画会使得最终效果非常僵硬。


所以我们需要加入骨骼物理来衔接各个pose之间的过渡。unity和UE都有不错的骨骼物理动画插件来实现这类效果。通过调参我们能在离线动画和实时动画中得到效果上的平衡,实现丝滑的过渡。


我之前制作的使用物理骨骼驱动的布料范例:



使用离线动画+物理骨骼方式,可以在不消耗大量硬件性能的前提下,满足绝大部分应用场景需求并且取得不错的效果,如果希望细节能够再上一层楼,我们这时可以再把布料实时模拟加上。


一般来说,UE和unity自带的布料方案就够用,此时的布料效果主要是为了修正一些细节和细小的穿模问题,使我们布料效果更加生动。


例如通过绘制逆止距离和半径的权重来控制布料模拟的运动方向和范围,通过绘制布料被动画驱动的权重系数来调整模拟和动画的比重,经过无止境的调参修炼后,我们可以以较小的性能代价实现接近离线解算的布料效果,这也是目前顶级3A游戏服装效果的主要生产流程。

以下是我做的unity和UE中一些服装动态效果展示:





本文授权转载自知乎用户@我乱写的 ,更多内容可以关注用户知乎专栏。


游戏葡萄招聘内容编辑,

点击「阅读原文」可了解详情

推荐阅读





我被大厂裁员了 | 裁员速通指南 | SLG团队快没了

NFT是场噩梦 | 米哈游人才黑洞 | 二次元地狱难度

暗黑手游 | 广深游戏圈 | 流浪方舟

点击下方公众号名片,获取游戏行业更多信息

本文来自微信公众号“游戏葡萄”(ID:youxiputao)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。