【最终幻想15】中物理模拟的结构以及游戏业界的乐趣
发表于2016-11-30
11月2日是在日本兵库县神户会议中心召开的【SIGGRAPH ASIA 2015】的第一天,在游戏开发专门的研究会【R&D in the Video Game Industry】上,展开了【FINALFANTASY XV】的物理模拟的解说会议【Physics Simulation R&D at SQUARE ENIX】。
负责演讲的 Witawat Rungjiratananon(SQUARE ENIX 动画研发工程师)
Rungjiratananon,是从东京大学加入了SQUAR ENIX的第2商务事业部,现在是SE的自研游戏引擎LuminousStudio和FFXV的物理模拟的设计和开发人员。Rungjiratananon在东京大学时以物理模拟和动画技术的专门研究为主,即便是同样的主题,学术界和游戏行业里独特和不同的部分也很多。因此这次演讲,感觉也是加入从学术界跳入到游戏业界的感想的同时,介绍FFXV开发项目中携带的技术,以独特的结构展开。
学术界和游戏产业界研究文化的不同
首先,Rungjiratananon是从学术界与游戏产业界的【研究开发的方式】的不同方面开始话题。
学术界,是选择要研究和解决的主题 ,在把研究结果用沦为来发表的【动机驱动】的世界。
学术界,是以目的驱动来进行研究开发的
另外一方面的游戏业界,开发中的团队是以想要做的表现为主题,为了实现一边参考已有的论文一边开发新的技术,是在游戏和游戏引擎中加入【成果驱动】的世界。虽然也有游戏业界的研究成果的论文发表,但发布论文并不是目的,最终还是以在游戏里实现为目的的。
游戏产业界中,是以成果驱动来进行研究开发的
Rungjiratananon提出,作为游戏业界特有的研究开发特征之一的,就是【美术设计师的存在】。
游戏业界的情况是,无论开发出多么优秀的技术,都是要有美术师来制作成果物的,如果引擎团队开放的新技术,美术师并不方便使用的话,就无法把结果反映到游戏里。因此,为了可以使用开发的新技术也需要配置方便使用的UI,为了满足美术师的要求而努力。
开发的新技术,要由美术师使用才能生效
另外,物理不正确也可以,能表现出想表现的内容就是“正义”这点,也是和学术界不同的部分。
游戏的话,为了可以看到效果,加入欺骗或造假也是允许的,与必须是物理正确的学术研究领域想比,是非常大的差异,
对资源限制的严格这个问题, 在游戏技术里也存在。游戏中,需要实时的运行开发的技术,CPU和GPU的演算资源,并不能全提供给这个技术使用。AI和图形,以及其他要素要共用计算资源。总之,开发的新技术,必须要在和其他使用计算资源的游戏要素一起运动时,也可以使用。
游戏业界的【新技术开发】,并不要求物理的正确,而是要有说服力,看起来足够好。
这样听的话,游戏业界的新技术开发,必须在各种各样的限制中来解决。
FFXV的布料模拟和毛发模拟
接下来的话题是,FFXV中导入的物理模拟,首先,Rungjiratananon对FFXV中的【布料模拟】(Cloth Simulation)进行了说明。
布料模拟,是基于顶点还是基于骨骼来实现,FFXV选择了后者
布料模拟的实现方法是,通常是生成对象的布料模型(例如衣服)的低多边形版本的模型,在顶点单位上进行模拟的方法。但是在FFXV里,为了把角色运动会翻弄布料的举动,在牺牲一些物理正确的同时,可以按照美术师的想法来运动,采用了在布料里加入骨骼的【基于骨骼的模拟】的方法。
采用这种方法的理由,Rungjiratananon解释是“SQUARE ENIX的美术师更习惯在3D模型里配置骨骼”。
美术师想要运动的要素,也要预先准备好
实际的FFXV中,把物理模拟的真实的结果,通过美术师以演出为主导来做Fake,取得运动平衡来表现,导入了像【0.0:软】,【1.0 硬】这样的骨骼运动的控制的正规化参数。另外,也加入了把实现准备好的手工制作的动画,与基于骨骼的物理模拟的结果做合成的方法。
把模拟的结果,通过美术师手动修改来取得表现平衡的结构也被导入了
毛发模拟也是,导入了很容易反映美术师表演意图的结构
关于毛发模拟,实现了头发随风的飘动,激烈的战斗动作中的摆动,这样柔软的毛发运动。另外,因为也有"角色特有形象"的漂亮发型不能破坏的“维持发型”的要求,和布料模拟一样,实现了通过骨骼来模拟毛发的运动的结构。
毛发是物理模拟来实现真实的摇摆,角色的发型不能崩坏。FFXV里,也需要对应美术师方面手动调整的要求。
同时支持模拟的毛发运动和头发风格的维持,在毛发上,导入了可以灵活控制的【柔软毛发的约束条件】和【坚硬的毛发的约束条件】来对应
实现了可以让毛发变得柔软或坚硬的灵活的系统。
使用这个系统,当角色接近静止状态时,要维持头发风格,毛发变得很硬,要漂亮的运动时,头发风格崩坏,更容易受到毛发模拟的控制。现实中的话,毛发是根据负荷移动和风力,不用关心发型的来运动,而游戏的情况是要重视角色的形象,优先漂亮的毛发运动而无视物理法则是很合理的。
根据角色的情况,变成【维持发型的硬的头发】或是【摇晃的柔软头发】
FFXV实现的风和草木的表现
FFXV,因为是以开放世界为舞台的游戏,【风】也是重要的表现要素。在FFXV中,通过带有【影像范围】【3D方向】要素的Wave函数,实现了关卡设计师可以在游戏世界的任意场所设定吹风的结构。
FFXV XV,是看不出是程序化(Procedural)实现的风的表现为目标
【设定Wave函数】的话,美术师制作设定数据很难。最后的方法,是在引擎团队开发了可以在关卡编辑器上绘制吹风情况的UI,提供给美术师使用。
只是设定Wave函数的话,美术师很难工作。
开发出用绘画UI的方式让美术师直观的设定风参数的结构
这样,通过这种结构实现的随风飘动的草木,最初一看的话是有枝叶和茎的,而实际是在板型多边形上贴了草木Texture的Billboard。
Billboard如何实现了【随风飘动】的表现?Rungjiratananon说明,是制作了用颜色的浓淡来表示【受风的影像的弯曲程度】的UI,通过视觉的来进行设定。设定的单位是顶点单位,对顶点颜色做设定。具体的,设置深色的顶点,更容易受到风的影响运动。
还有,Billboard随风飘动时,在可以设定伸缩的上限。风到什么强度,草木就不会伸展,设定了控制过度伸长的结构。
板型多边形表现的草木Billboard的随风飘动的情况和伸展控制,也可以通过绘制来设定。
还有,因为风的运动太有规则的话,看起来像作假的,在通过Wave函数生成风的强弱和方向上,导入了增加Noise的结构,使用【不规则的Texture】来给予风的强弱。例如用【V字形状分布浓淡的Texture】给予广阔草原上吹风的效果。可以做出草原在V字型上随风飘动的表现。
在Wave函数里加入Nosie,就增加了吹风的不规则性,尽管如此,还是有不足的情况。
为了表现立体的风的强弱,用浓淡Texture来设定强弱。通过这个,可以使用Texture给予的体积形状来让草木随风飘动。
回过头来,因为草木是用Billboard来表现的,看到的枝叶也实际是板型的多边形。虽然倾斜的飘动,板型多边形也会倾斜摇动,但草木产生的阴影没有变化。FFXV里,在对受风倾斜的草木Billboard做光照时,旋转草木Billboard的法线向量,也加入了扰动的动画。
随风飘动的草木阴影的复杂变化的表现,是通过法线的扰动和旋转来实现的。
完全是Fake的手法,因为法线方向是随着随风摇动的来扰动的,这样草木Billboard的光照条件每次都会变化,阴影也跟着变化。远处看的话,枝叶是以复杂的方向变化的,是相当好的方法。
研究者看到的【游戏业界快乐的地方】
Rungjiratananon在会议的最后,通过SQUARE ENIX中FFXV的开发,总结了【游戏业界快乐的地方】
Rungjiratananon所认为的,游戏业界快乐的
一个是在各种混合环境中进行开发,最新的大作游戏,是由物理和数学,AI和光学等等,各种各种的计算机科学组合而成,作为研究主题非常的有挑战性
另外,虽然基础方面还是有强硬派的科学技术,但通过这种的Fake和Trick,超越现实的【作出有很高说服力的假想世界】这点,也是游戏开发才有的魅力。
除此之外,“使用顶级美术师制作的高品位角色3D模型,进行各种技术的实验也很有意思”,“各个领域的优秀人才,拿出各自专业领域的知识,协力同一个内容制作的过程也很有意思”等等,很热情的讲述了SQUARE ENIX中工作的快乐。
原文作者:西川善司
http://www.4gamer.net/games/075/G007535/20151104067/