Epic Games VR项目美术总监分享《Robo Recall》的美术优化技巧

发表于2017-05-04
评论0 1.6k浏览

本文出自:vrzinc  作者:liyajie

4月24日,Epic Games VR项目美术总监Jerome Platteaux出席Unreal Open Day活动,其详细分享了参与《Robo Recall》设计得到一些经验和想法,包括游戏设计理念、各类机器人设计、武器、场景、优化、抗锯齿等等一系列详细的思考与建议。

以下是演讲内容,VRZINC整理有删减:

Jerome Platteaux:首先谈一下《Robo Recall》的起源,2015年我们12个人的小团队,用十周的时间为OculusTouch制作了游戏Demo,因此我们重复利用了很多Epic项目中的资源以及市场上买的一些资源。当然,我们也做了一些新的环境以及场景,比如说火车站和火车内部。

我们从中学到了什么?关于好的方面

1.首先我们大概知道了预算的范围,要跑到90祯需要单眼150万个多边形,一千Drawcall。

2.另外我们发现,场景设计的时候如果有层叠的元素,这种视觉上的视差,能够在VR里产生很好的深度感受。

3.此外用户沉浸在VR环境中,对尺度、距离以及东西的大小是非常敏感的。

4.反射在VR里面的效果看上去非常好,让整个场景看上去更加丰富。

5.比较亮的环境可以在VR里面有比较好的效果,比如避免一些镜片产生的眩光和HMD的效果。

6.在VR中的交互是很有趣的,例如抓东西、拿东西等等。

接下来哪些是不好的呢?

1.首先Budget很小,我们的资源很少。

2.另外我们做了一些反射,不是所有地方都有,哪里摆了就哪里有,所以不能大量的使用。

3.动态的影子和反射出来一样,只是给了某些机器人做了假的阴影,所以也不能到处使用,我们需要研究怎么样能够有更多的解决方法。

4.我们在《Robo Recall》里面的角色看上去太像人类了,在VR里面这种你对着人打的感受非常真实,所以感觉不是很好,在VR里面这种容忍度会很低。

几个月以后我们就开始正式制作整个游戏。,15个核心成员的团队,部分内容外包,用了大概12个月完成。游戏的最低配置是在i5的处理器和nVida Gtx970显卡,画面在《Bullet Train》的基础上做出很大的提升。这也是我们第一个VR的游戏,所以我们需要把它做得更好。

游戏设计理念

1.首先需要让玩家感觉你是救世主,大家指望你改变这个世界或者怎么样。

2.另外要营造出一种街机游戏的感觉,也就是节奏非常快的,不断地变化、色彩的丰富等等。

3.此外在环境设计上比较接地气是好的选择,需要一些大家熟悉的地点,这样比较容易理解。

4.游戏需要对特殊的平台,比如说Oculus Touch有一些特性,在别的游戏平台上是不会有这些的。

5.游戏的时间最大限制在20分钟左右,所以说游戏的节奏是非常紧凑的、有趣的一个过程。玩了以后就可以脱下眼镜休息一下。

机器人设计的思考

1.刚才提到机器人太像真人的话会给人感觉不好,所以我们选择纯粹机器人的设计。

2.色彩需要比较丰富,配合一些有趣的动画和声效。

3.让它们看上去像一些坏家伙,让玩家有冲动去攻击他们,而不是乖宝宝的形象。

4.这些机器人需要方向、尺寸、速度上有各种各样的变化。在VR中玩家头部不断地旋转可以很好的判断这个空间,所以每一波怪过来的时候,有不同的方向、大小、速度给人的感觉会非常好。

人型机器人是主要的机器人类型,尺寸上它比人稍微大一点,强壮一点,外形的轮廓是接近人型,可以表现部分的情感。通过不同的姿态和颜色的衣服,玩家可以很快识别它是什么样的类型的机器人。

这些是爬行机器人和无人机。这些爬行机器人的大小和距离需要反复考量。它们看上去有点恶心和可怕,像蜘蛛一样,可以直接跳到你的脸上来抓你。而无人机我们用了爬行机器人的模型,把腿去掉作为一个基础。

大型机器人看上去很大,但不能太大。太大以后尺寸的感受会降低,在远近距离看上去都要比较合适。近的时候觉得很高,远的时候可以看到他,而且它的行动比较缓慢,可以驾驶和控制。

快速机器人,这个尺寸会稍微小一点,但跑动非常快,并且会瞬移,看上去更像女性的外观。

飞行机器人,这个机器人就像一个炮台一样,在地面上射出火箭弹。在地面上它行动缓慢,但在空中比较灵活迅速。

然后是最终的BOSS。因为时间的关系,所以我们并没有新的概念原画,我们重复使用了《Bullet Train》中的模型。

为了制作这些大小、速度各种各样的机器人,我们通过原型机器人开始制作。这样好处在于:

1.这些原型的尺寸可以快速进行反复修改。

2.可以清楚地看到比例关系,刚才提到VR中尺寸和比例是非常关键的,所以需要在VR中不断地去察看和调整。

3.另外在VR中不断地去察看哪些部分是看到最多的,比如机器人人眼部分高度是最高的,我们会在这个部分增加更多的细节。

4.找到那些交互的点,比如这个机器人背后有一个可以拉的东西。

5.一旦我们有一个大致的原型做完之后,设计师和动画师就可以在这个上面进行工作了。

6.原型尺寸和我们游戏当中的尺寸的资源应该是接近的,这样的话我们不会把原型尺寸替代掉之后,产生很多效能方面的问题。

这是最终的一些资源。最终资源是来自于最终的原型尺寸,以此为基础,再做高模。然后使用第三方面具,例如Marvelous designer来进行制作和建模,最终游戏模型是在3DSMAX里做完的。每个模型大概两到三套,也就是两到三个材质,这样做的话是为了尽量减少模型的数量。

贴图是以Substance为中心,共享材质给所有的机器人,因为游戏性的关系,我们还需要做一些破损或者说可以拉扯的模型。

武器的设计

1.首先我们不想让武器看上去太真实,我们最终决定在玩具枪和真枪做一个平衡,用这种风格的枪在VR里面感受是最好的。

2.但也不能太大,因为在VR中重量感,手感也就这么重,看上去很大手柄很轻感受也不是很好。

3.只做单手枪,而不做双手枪,双手枪会有物理刚体的连接,所以尽量少去模拟,而是完全跟手的控制器所匹配。

4.资源的创建流程和刚才说的角色是一致的。

关于玩家手部设计,由于游戏的动作还是很复杂的,比如说可以去拉扯,把别的坏蛋扔掉。这些动画很复杂,在没有很多时间或者很好的解决方案情况下,尽量避免去做一些额外的尝试,比如说用IK去尝试,这样的效果不是很好。

关于场景的设计

刚才提到了是基于真实的地点,看上去比较接地气。于这些我们可以找到一些参考资料,比例、关系都是正确的,而不是像一些未来的设计,有非常大的随意性。当然我们也会加一些未来的元素在里面,主要是为了定义时间,游戏大概是发生在什么时候。此外对于游戏性也起了一些作用,比如说图片里的一些元素,看上去很帅。

事实上我去旧金山拍了很多的照片,使照片建模的方式,还原出了当地的环境。因为有这些相对的细节,所以我们可以很好的感受出它的尺寸以及比例。然后用这些资源去拼接整个城市。

接下去有一个问题,需要多少种不同的变化或者建筑才能够表现一个城市或者足够的变化?需要很多。在这个基础上我们把机器人放进去之后,可以知道这样的机器人放在真实的环境里到底是什么样的环境。

此外我们加了一些装饰物进去,比如说车、垃圾筒之类的。因为创建一部分新的资源,再加上团队很小,所以我们进行了一些外包。

我们只外包照片有的东西,因为它可以很方便的找到素材并减少一些迷惑的地方。我们的需求包括,

1.是这些资源是模块化、可以拼接的。

2.每个模块小于三万个点。

3.每个模块一到两块的贴图。

4.窗户采用另外特殊的材质,我会在接下去展示给大家。

5.碰撞的模型也需要制作。

外包的优势在于,这些回来的东西看上去非常不错的,中国这边主要是在控制品质和流程。第二个团队可以很方便的进行增减。

不能外包的东西,比如说优化这部分内容,需要自己做。

一些注意点和小技巧

1.比如说带窗户的室内,我们不能建太多的真实模型,这样面太多了。所以我们用一个特殊的材质,在不的角度能看到不同的东西,模拟真实室内透视的效果。

每个窗户的话只有一个面,赋上这个材质的话,通过摄像机和面的夹角来计算UV,使右上角的贴图在不同角度看到不的面,来模拟室内的效果。

2.因为我们游戏可以抓东西,抓起来离摄像机很近的情况下,可以看到很多的细节。在VR里面这些细节是非常引人注目的,所谓我们加了一些细节的法线贴图。

3.检查你的粗糙度贴图。其实在VR中我们对物体表面的光泽要敏感的多,所以物体小的变化以及光泽反射的变化,在VR中会特别的敏感。

灯光的选择

因为场景很大,而且需要快速移动,我们使用了静态的光源,静态的天光,提供一个固定的直射光。

此外我们使用了反射捕捉,打开环境图象的混合,这主要是将某些区域的反射屏蔽掉,看上去更加真实。

另外加入了一个新的平面去表现非常精确的反射。值得注意的是,这些平面的反射是消耗非常大,所以必须确保选择性的使用。此外我们还把这些平面反射在不同的区域独立开来,这样在玩家进行瞬移或行走的时候,可以选择只在玩家的区域显示,在别的区域关闭。

对于角色,直射光我们使用了胶囊体,同样我们还用了非直射光,这个天光的阴影,可以让角色很好的贴到对面上。

我们打开了Single Sample 这样可以不进行反射,也就是角色不受环境的影响。

另外我们使用了灯光方案。以前要表现白天和晚上可能要复制这个关卡,现在我们有灯光方案的功能,我们可以使Environment进行分开,同一时间激活一种灯光的环境。

同样的一些资源,我们也可以生成非常多的变化,同样的资源也可以产生不的游戏性,亮暗是不一样的。

优化和解决锯齿

我们用的是PC上的前置渲染,好处是总体会快一些,可以使用Msaa的方式,能够产生更清晰的图像效果,此外前置渲染也有本身特有的功能。

然而前项渲染不好的地方在于,是Msaa在有很多三角面的情况下,运速非常慢。而且如果不是物体边缘而是物体中间的一些高光的聚集,Msaa是无能为力的。

什么时候开始优化你的VR项目呢?这是全程都需要考虑的事情,让它保持在这个标准,比如90 FPS,否则会产生一些运动效果。有时甚至快速且粗暴的优化也是好的,把它控制在你的预算当中,之后做一些细节调整,保证画面的品质。

这些是《Robo Recall》在打包输出的时,使用渲染参数的设计。基于屏幕的、空间的反射关掉,以及动态的模糊关掉等等,大家可以参考。

场景的优化方面,最有效的方法,是物体距离的剔除,然后不能剔除的就做LODs。做LOD的模型可以大大减少消耗。尽量的在这种模式下减少反光,蓝的就是OK的。在《Robo Recall》里很多窗户的边框做成贴图也是为了减少模型锯齿量,如果是模型的话,消耗会非常大。

另外是一个HLODs,它的作用就是会把在地点附近、周围的一些多边形,自动聚集在一起,来减少材质球的数量。刚才提到过了,合并的同时除了减量还可以减材质。

讲一下关于锯齿的解决方案。默认情况下引擎使用的是TA,而且TA是非常好的抗锯齿的方式,但是它会让图像稍微变的模糊一些,特别是在非常大的画面和非常低的分辨率情况下,在VR里都占到了这两项,画面很大,它的密度是很低的,这种模糊会被放大。

在PBI渲染上面,如果使用Msaa对高光是无能为力的,大家可以从图像上看到高光的锯齿,我们怎么来解决这个问题呢?我们可以使用它的法线贴图来取得模型转折处的信息,将这些信息叠加到它的粗糙度贴图上,来降低转折处的粗糙度。粗糙度降低了它的高光就会减少了,看上去高光就比较弱了。

UI在VR里面是非常大的话题,而且关于声效,我们做了动态的音乐来体现三维空间的效果。在VR里怎么做过程动画呢?我们会专门教你怎们在Controlles做共享动画。由于时间关系,大家如果要研究这个游戏的话,可以直接去我们的Accessible上下载。谢谢大家!

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