【译】最终幻想15的角色和场景技术

发表于2016-12-19
评论11 3.63w浏览

首先对本文做一下简单介绍,本讲座的是CEDEC2016FFXV的系列讲座之中的一篇,其实第一篇AAA游戏优化,之前已经发布在GAD上:最终幻想15的优化实例

而这次是最终幻想XV的角色与环境的工作流这次讲座负责分享的三个人分别为史克威尔艾尼克斯BD2的环境美术组长佐々木啓光, 角色装配组长村松瑞樹,以及角色建模组长黒坂一隆。

 

本讲座的面向听众是美术师,包含了角色资源的制作,角色的RiggingSetup,以及背景资源的制作。

 

首先讲解的是美术组长佐々木啓光讲解的角色制作部分。

 

在讲解开始前先播放了一段最终幻想XV角色和环境部分的介绍短片


 

 

 

主角Notics的角色数据概要,总多边形数是10万面,材质数量6~8个,贴图纹理分别是BasecolorNormalMetallicRoughness的,使用的是基于物理渲染的的metallic workflow。贴图纹理会根据不同的需求来进行压缩,平均为20MBLOD是从0~78个等级,Joint的数量比较多,有600根。  

 

然后是游戏中使用的Shader,使用的是基于物理的BRDF着色模型,这也是最终幻想系列首次使用基于物理渲染。

 

渲染方面是延迟渲染(Deferred)和前向(Forward)渲染混合的方式,因为角色表现要稍微麻烦一些,Diffuse漫反射的使用比较复杂(译注:这里DiffuseBaseColor不是一个概念),后面会介绍如何使用。

 

首先是眼睛的Shader,左边是打开了角膜折射效果的Shader,右边是关闭的,这么看可能看不出效果(主要是眼珠的效果)。

译注:眼球和皮肤的实现可以参考以前翻译的:Agni-s Philosophy】使用的图形技术解说(前篇)  UE4ContentExamples里也有类似的实现。

 

皮肤着色器的对比,使用的是屏幕空间技术

 

头发Shader高光(Speuclar)噪声的效果打开和关闭的对比。

译注:细节可以看下以前翻译的 Agni-s Philosophy】使用的图形技术解说(中篇) 

 

下面的视频为了可以看的更清楚一些,而加强了高光(Specular)的效果。Hair Shader的噪声效果小的时候,高光的范围也会变狭窄,而噪声强的时候高光的扩散范围也变大。本作中的头发Shader,不同角色使用了相同的NoiseMap,来调整出同样的效果。


 

接下来的头发Shader是背后的散射效果,因为头发是光的透过度很高的物体,如果按物理特征来实现很困难,所以是从背后打光实现了Back Scatter的效果。

 

下面的视频中角色的头发背光效果,毛发的轮廓有很亮的边缘感,走入到完全阴影时背光效果消失。


 

结束前面的话题,然后是LOD的相关内容,FFXV中的角色有0~78阶段的LOD。最右边订点数非常少的头部几乎不成样子了。

 

LOD切换效果的动画,随着相机距离越来越远LOD可以流程进行的切换。后面绿色网格版本更清晰,可以看到最远时,即便是LOD7也是问题的。


 

接下来是最终幻想XV角色资源讲解的第2部分,目标与挑战。

 

下图就是挑战的项目,数量非常的多,归结为一句的话,那就是打倒预渲染(PreRender 

图,补上

 

史克威尔艾尼克斯的BD2是共通支持开发了游戏版的最终幻想XV以及全CG电影FFXV:王国之剑。BD2也是以不断进化的预渲染技术为目标的。

 

BD2在王国之剑中采用的一些高端技术。因为在团队内是共享的,对游戏的图形品质的提升有了很大的帮助。下图是王国之剑的主角预渲染和实时渲染效果的比较。

 

 

同一光照环境下预渲染和实时渲染的对比。通过这样两种模式的比较,可以很容易的一条条的整理信息,然后向负责着色器和光照的软件工程师反馈需求。

 

下图是把最后做了数据优化的实时渲染和预渲染做比较,让两种技术可以获得相似的效果。黒坂氏也谈到了自己的想法,他作为美术师会同时用实时渲染和离线渲染来工作,感觉到了两种各种的优缺点,比如预渲染要做修改是非常麻烦的,下一步确定了要解决问题,会以提升实时的角色资源的图形品质为目标。

 

最后是第3部分,角色美术工作流和高效化工具的介绍。

 

下图是美术资源的基本工作流程,蓝框选中的部分就是角色美术师的工作范畴。也是作为一般高端图形游戏的基本模式。总之为了效率化就是尽量的降低每个任务范畴的成本。接下来就介绍下FFXV里采用的一些方法,首先看下高精度模型信息保存到纹理中的处理。

 

下面的视频是FFXVAO烘培工具,这个工具有两个优势,一个是可以使用的是GPU来执行AO生成和烘培,所以非常高速的渲染,另外就可以支持高精度的模型。通过视频也可以看出AO的烘培计算只用了10秒左右的时间,视频的后半部分是衣服的AO烘培,因为使用了法线贴图,所以不需要高精度模型,这样的话修改的操作周期就大幅缩短了。


 视频04.mp4

 

下图显示的是高精度模型信息转化方法的优化,以前的角色资源制作,是通过DCC工具或中间件把高度模型同时烘培生成法线贴图,遮蔽贴图。但在最终幻想里,开发了工具把遮蔽贴图的生成放到了最后阶段。

 

然后是制作Shader的部分,这里开发了基于节点的图形化的Shader Editor,美术师可以对应游戏要求来制作定制Shader,快速的进行开发。另外可以快速的观看效果也很重要,所以开发了接口支持在DCC工具里预览。

 

视频中的演示就是配合Shader编辑器,在Maya里调试和预览最终的渲染结果。复杂的节点群也可以转化成组,方便在Shader编辑器里预览。然后使用shader编辑器,定制材质实现的人被冻住的表现,角色服装材质的定制,以及制作汽车材质多年后老旧生锈的效果。


视频05 .mp4

 

 

 

通过后处理增加的颜色校正(Color Grading


视频06.mp4

 

打开和关闭颜色校正的对比

 

头发的工作流,和之前资源数据的流程大体相同,高精度模型换成了头发样条曲线模型(Hair Curve)的制作,因为这种Hair Curve只能在预渲染中使用,为了可以在运行时的实时渲染使用,需要做一些处理,也就是红圈范围的,接下通过视频介绍一下这个处理流程。

 

首先是制作2D的草图,然后以这个设计图为参考,在人形模特上制作假发,这样更加便于理解头发的结构,然后用Hair Curve制作头发进行预渲染来进行确认。

 

头发的简化工具,一键就可以把Hair Curve转化为头发多边形Hair CardBillboard mesh),  也可以把Hair Curve进行Group化后编组,进行平均后来生成较少数量的Hair Card,但如果选择全部的Curve来平均化也可能会出现问题,还是简单的多选一些Curve来生成更安全一些。


视频07.mp4

 

然后在Hair Card上生成出头发的纹理。


视频08.mp4

 

最后做完的头发实时渲染的结果。头发是影像最终幻想XV角色表现的重要元素,而且渲染的消耗非常大,所以才把原型的头发转化为适合实时渲染的HairCardBillboard mesh)来消减成本。但现在还是有很多问题,工具也要进一步的改善。

 

最后来总结下制作时努力所做的内容,一个是与预渲染的结果做对比,来明确目标,提升品质,同时也遇到了新的问题,然后是资源的处理,在考虑将来可能的技术进步的前提下,找出瓶颈部分,来并有效的减少消耗。

 

接下来,是担任角色装配美术的组长村松瑞樹氏,因为很擅长做风的表现,又有着【风之村松】绰号。

 

 

村松氏所属的角色装配部门,以前是负责处理角色建模部门和动作部门的装配(Setup)工作。

 

而在最终幻想XV中,装配的工作涉及范围扩大了,也包含了环境部门和工程师部门。所以作为装配部门而独立出来,基于案例事项来整体的来进行取舍选择支持。

 

装配部门要负责的事项,负责了环境方面的开发,而那些责任没有描述清楚的工作要全部进行处理。

 

角色装配部分的分享议程,首先是在项目开始时设定的各种条件,以及开发环境的介绍。

 

首先是关于角色装配的重要事项的介绍。

 

 角色装备部分要实现的重要事项,在预估品质方面,史克威尔有自己独特的发型,大量的服装设计。


视频09.mp4 

 

需要让最后的表现接近预渲染的效果。


视频10.mp4

 

怪物的肌肉晃动以及皮肤表现也要进行制作。


 视频11.mp4

 

对应游戏中的环境,角色行为的变化。


视频12.mp4

 

最终幻想XIII和最终幻想XVJoint数量的对比,使用的关节数是根据使用情况也不同,例如超大型的怪物是约2000根,

 

进行蒙皮(Skinning)时每个顶点受骨骼影响(bind)的数量,面部是4根,而头发是6根。

 

而且不能直接的烘培动画,动画运动数据的内存占用情况很严重。

 

BlendShape没有使用。

 

因为骨骼的物理演算的CPU负荷也很高,项目初期就把目标设置为限定在5%以内,也考虑过用Comput Shader来处理,但因为GPU还要做各种Shader和光照的运算,所以把物理演算放到了CPU上,但本作的骨骼物理计算还是有很高的并行性。

 

然后是开发环境的介绍。

 


 

首先介绍的是Static Rig模块“CRAFT“,是史克威尔艾尼克斯自己开发的基于模块的Rig设定的Maya插件。

 

“CRAFT”的负责部分,可以方便骨骼的调整。

 

下图是蒙皮的辅助工具,支持输入输入预设的权重,以及权重拷贝等操作。

 

权重的混合工具

 

发束权重可以参考UV坐标一键执行。

 

接下来是史克威尔艾尼克斯开发的坐标系工具“Kine Driver”,这个也是Maya的插件。通过Maya可以处理旋转坐标系“Yaw”“Roll”“Pitch”,再通过引擎实时的显示到游戏里。这样就可以毫无破绽的进行旋转的的修正。

 

在游戏引擎上通过“Kine Driver”,用正确的形状进行实时的插值补完。

 

实时的布料模拟插件”BONAMIK“,在Maya上进行制作和预览,姿势控制时可以保证衣服和布料的正确形状。

 

”BONAMIK“对伸展的控制,一般的布料模拟伸展的负载很大,,这里使用的是格子状的布料横纵的排列,沿着Joint来纵列移动,可以更轻量的实现。

 

横向的处理是参考公司发表的论文,用带状来解决伸展和旋转。并分级来提高效率

 

视频中展示的是速度和物理形状的重置功能


视频13.mp4


视频14.mp4

 

 可以参照Guide来进行物理的重置。

 

随着角色移动量的变化,可以设定给予的逆向力的(Local force)上限。,可以解决游戏特有的不同速度移动的摇晃的表现。

 

视频演示中,通过Local force(红线) 倍率的变化,实现了稳定的行为,也支持碰撞的判定。


视频15

 

风的表现处理上,通过Drag来增强风向,使用Lift来反向运动,通过这个组合来制作表现。

 

碰撞前处理(橘黄色)来稳定布料的形状,以此来降低每帧碰撞解算的次数。

 

为了实现特有的发型并保持形态,需要要通过弹簧限制把移动,重力,风的影响力分开,作出那样看起来很硬的的有矛盾的运动的物理。


视频16

 

头发打湿后会变柔顺,发型也会被破坏,这种状况是通过参数用物理来的变化来实现的。另外也实现了水中摇摆表现的变化。


视频17

 

也支持触发器产生的行动变化。不需要软件工程师就可以改变参数,所以工作人手也就增多了,在游戏整体上都加入了摇晃的表现。


视频18

 

BONAMIK使用做多的,是角色坐下和躺下的动作。这样处理的过场剧情大概有2个小时左右。


视频19

 

 产经中的草和怪物的毛发,是通过顶点摇动Shader来实现,但只是简单的前后移动并不会有很好的动态效果,使用了位相风的贴图和噪声风贴图,通过两者的结合来决定强度,这部分可以参考翻译的去年SIGGRAPH2015上的讲座【FFXV物理模拟的结构】介绍 


视频20

 

角色和草木的交互上,是用角色生成放射状把植物的顶点推开的方式处理,而分开的草在角色离开后也会返回原来的位置。另外还有使用法线贴图生成暴风的效果


视频21    

 

 

这些装配工作并不是最尖端技术,而是选择预算内可以实现的表现。也可能是新旧技术的组合,或者是一些职业方面的技术。

 

最后是环境美术组长佐佐木氏,对【最终幻想XV】的环境制作做了解说。。在广阔区域中

 

首先佐佐木氏播放了最终幻想XV的环境画面,视频里展示的是除去游戏元素外所看到的游戏世界的特征,最终幻想XV是开放世界的游戏,实现了广阔世界中时间和天候的变化。夜晚,降雨,早上潮湿的空气,变化的云彩。以及通过AI驱动的生物和野生怪物的生态,以及游戏中地下迷宫的都是一个一个仔细的制作,不光是游戏世界有了现实感,连魔法,陆行鸟,召唤兽等幻想系的事物,也是像现实一样让玩家享乐来设计的。

 

 

视频22

 

 

环境制作的挑战在于,最终幻想XV的主题就是和伙伴在开放世界的环境中旅行,要制作世界,就必须要制作游戏中的各种环境, 而且要以匹敌世界一流水准为目标,那就需要网络所有最尖端的实时图形技术,要在构筑这样的开发环境的同时,制作这样大规模的游戏是相当困难的。

 

    

 

下图是最终幻想XV中相关的案例,涉及了相当多的项目,这些会一个一个的和策划以及工程师交流,来验证实现解决问题。

 

接下来佐佐木氏挑选了其中的一部分来做解说。先是对外观开发的流程做简单的说明。

 

这个是从把已有的模型(PS3的原型)向真机输出的测试开始的。    

 

然后着色新资源的制作,找到的比较接近的办公室和新宿街道作为参考,从零开始进行数据的验证工具。

 

对那些无法去进行拍摄的场景,就只能找一些参考物来再现,再加入少许的调整。

 

然后是自然的地形,左侧的自然地形是去高尾山做了外景体验来制作的。因为也要进行工作流的准备工作,所以只有新加入的员工去做了外景地的拍摄工作。

 


 

然后是进行资源的制作。这个和角色一样,环境制作也使用了摄影验证的方法。

 

植物的外观验证,照片不仅仅是作为建模的参考,还会用于贴图的素材。但这个阶段,还是要注意考虑到制作的和真实一致的数据容量的问题 。要一边通过对现实的观察,把实体,照片,预渲染各阶段的区别以及实现的可能性做元素分解来掌握,并作为经验积累起来。

 

   叶子的透过率数值,是准备了大量的实物进行了彻底的测量,把有疑问的内容在制作初期进行尝试也解决也很更要。这个时候虽然并不了解对应的硬件性能,但还是对应的规格来制作真实感。虽然感觉像是徒劳的工作,但对于量产期可以降低成本和保证品质上非常有帮助。

 

而制作好的工具会注册到资源管理工具中,在项目中共享使用。

 

游戏区域制作,采用的是制作小规模的区域,再进行扩展的方法。因为是PS3时代的产物,现在看起来还是有很多问题的。

 

接下来是对应本世代主机的验证工作。

 


数据大小的验证工作

 

曲线和驾驶的验证,而植物的配置验证也是同时进行的。在测试初期,采用的是右下那种基于多边形的椭圆形的简易跑道来进行行为的测试。

 

Curve适用到高度图上,为了可以对应各种的情况的外景制作,也要提炼出对应不同情况的配置。

 

24小时循环的初期实现,HDRI贴图的拍摄工作,是去了世界各地进行了严酷的取景工作。

 

其他的验证,也是每天由美术师对各种不可靠的内容做检查工作。

 

 

大陆设计

 

 

游戏设计与关卡设计之间是有关联的。在不损坏玩家体验的同时,要对品质和成本进行把控的来做设计。

 

 

负责大陆地形的团队开发了可以实时编辑的工作环境,然后使用道路的曲线以及植物的自动配置工具来展开工作。

 

 

 

 

不光是关卡设计师,美术师也可以使用来开发游戏的关卡编辑器。

 

Prefab数据,光源和简单的动画序列也可以加入进去,一些小的机关和音效也可以Prefab化。

 

通过资源浏览器也可以让团队成员实时的共享。

 

为了分级管理,通过数据Package来进行内存的控制。

 

 

使用泥塑模型来做大陆的设计

 

输出高度图的流程。

 

 

 

 

 

视频23

 

 

 

光照环境的设定,这部分可以看下Siggraph 2016上的相关技术视频【Render Techniques of Final Fantasy XV】,我自己也在GAD上发了相关的视频翻译的图文版:

http://gad.qq.com/article/detail/7168480 

 

游戏中24小时的时间变化和天气变化,也是以现实世界测量的数值为依据,通过大陆的设置来控制的。

 

 

 

最后是一些优化相关的事项

 

 

 

 

 

 

 

随着游戏开发的进行,问题也逐渐浮现了,史克威尔艾尼克斯的BD2也会以此为主题,继续的进行挑战。

 

 

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论