smallotus

这个人很懒,就是不写介绍 ( ̄_, ̄ )

© smallotus | Powered by LOFTER

网易游戏技术分享直播 (2017.5.15)要点整理

(随便看看就好,不要把这个流传开去)

刚刚听了网易游戏的技术直播,分享了两场技术性讲座,第一个是基于物理的渲染技术,第二个是网易的首款VR游戏直播。

听着还感觉蛮有意思的。可惜当时只顾着听了,也没有作笔记,于是现在我尽力地还原一些当时讲的内容。

0x01 基于物理的渲染技术(PBR,Physically Based Rendering)

在传统的技术中,一个画面在渲染时需要三部分的叠加:第一是基础颜色(Ambient),第二是漫反射(Diffuse),第三是高光(Specular)。


但是会有如下的问题:

1. 美工的工作量较大,需要分别绘制三层,最后将其叠加,并且无法控制画出来的在游戏中的真实表现

2. 不协调感,身体各部分的视觉表现不协调,特别是在有高光的时候

而 PBR 则是基于另一种设计,强调材质本身,包含三个要素,第一是基本颜色,第二是粗糙度,第三是金属感。

通过这三者的叠加,可以起到如下的效果:

1. 美工的工作流程变了,不是考虑这个角色看起来是什么颜色,而是考虑这应该是何种材质。绘制的内容变成,基本的颜色(纯色组合)、粗糙度(用灰度表示)、金属感(用灰度表示)。本来有个示意图的,可惜我没有截到=。=

2. 通过更换材质,可以实现一些效果,例如不同天气下的画面表现。

3. 发热更多了,手机变成了暖手宝。

继续上面说的不同天气下的画面表现,这里就考虑了下雨天气和下雪天气,可以想象一条由石子路铺成的小巷,在灯光下的样子。(因为我又没有截到图 = 。=)

下雨的情况下,灯光在水的映衬下,反光会更明显,这是因为路面上铺了一层水,而水的反射率更高,把光线提前反射了一些;同时路面看起来也会更黑(更暗)。


(大概就是这种意思,网上随便找的图)

所以只需要做两件事就可以了,把材质的金属感调高,把基础颜色加深。值得说明的是,这两件事只需要两行代码就可以完成(在给定预设参数的情况下),而美工则完全不需要参与这件事情,这个雨天的场景是完全自动靠计算生成的。(看了当时演示的视频,感觉效果还是可以的)


另外有两个小主题,一是物理正确是否等于美。他举了拍电影的例子,即使电影中的画面都是物理正确的,但是也可能会用到反光板等设施来补光,营造出一种好的效果。游戏中同理,不一定物理正确就好看,也会加一些特殊处理。

另一个小主题是PBR在手机端的表现,因为吃机能,所以会有高配和低配。低配版直接把Albedo作为Diffuse处理了,但这样会引发一些问题,因为其不包含深度信息,所以整体画面看起来更差了。然后他讲了一些解决的思路,大致想法就是从PBR中的后两层提取边缘信息,然后通过图形学的一些计算,得到边缘的轮廓,然后绘制到Diffuse表面,效果看着也还可以。


0x02 《破晓唤龙者》VR技术解析

这个讲座还是有很多干货的,整体而言,其内容分为三大块:

1. 【舒适】在“自由移动”中会出现【眩晕问题】

2. 【自然】在 “革新玩法和操作”层面会有【3DOF控制器操作识别问题】

3. 【流畅】在“讲故事”中遇到的【视线引导问题】(或如何在VR中叙事)


【舒适】首先是在玩家自由移动过程中会出现的晕动症问题。VR游戏有个最基本的特点(相较传统游戏),那就是玩家的眼睛就是摄像头。

任何试图控制视角的行为都会毁掉体验!

任何试图控制视角的行为都会毁掉体验!!

任何试图控制视角的行为都会毁掉体验!!!

所以第一点就是不要主动控制镜头

第二点,好的传送式移动可以避免晕动。就类似往某个地方那种闪现的感觉。要点有四:

1. 选点容易

2. 传送预览,即告知玩家传送后的结果

3. 过渡顺畅,画面拉伸、开合都可以,但是玩家得清楚地看到这个过程

4. 目标地点检测

第三点,FOV变化可以缓解连续移动中的晕动症状


具体解释一下就是,在玩家移动有加速度时,视角缩小;而当玩家静止时,视角恢复。神奇的是,这个方法可以很有效地缓解眩晕。这个论文也拿了Best Paper。

第四点,是一些黑科技。比如“低速移动”、“三轴快速转向”、“虚拟鼻子”,都好理解,就不展开了。


【自然】这一块是有关控制器方面的,我先把控制器的功能放上来:


DayDream能获取的参数上面都有写,但是你是没法获取其坐标的。

并且如果,你试图通过加速度等信息计算它的空间位置,那么你将会发现,它可能出现在空间中的任何位置 = 。=

然后这一节我没太听懂,估计不实际操作很难表述,跳过。


【流畅】这一节讲的是,如何在VR中叙事。交互方式是一大难点。

往往,当玩家接触一款游戏时,他很容易问出这样一个问题:“我接下来该干什么?”,在VR游戏中当然也不例外。于是,他们便总结了出现这种情况的原因,有如下这些:

1. 游戏没有引导

2. 引导很糟糕

3. 玩家错过了引导

如果说前两个问题还可以通过设计来弥补,那么第三个问题就是很致命的。因为设计者必须意识到,VR游戏是不能控制摄像机的视角的,如果画面中有一段提示,而此时玩家的注意力被花花草草吸引,就很容易错过。什么?你说在屏幕当中放一段文字,先不说他能否看懂文字写的啥意思,本身漂浮的文字就破坏了沉浸。

所以,便需要“冗余式引导”,具体包含一种永久性引导,两种或以上动态式引导。

(他放了个视频,举了个例子,此处跳过)

在某些特殊情形下,玩家面前在播放着一段(对理解剧情至关重要的)过长动画,例如小姐姐NPC拿刀砍死了boss,而此时玩家可能注意力在小姐姐身上,而完全错过了这段动画(视角背对),等他回过神来(转过头来),一切都已经结束了。由于有永久性引导的存在,所以流程依旧可以继续,然后玩家肯定是一脸蒙蔽地不知道发生了什么。

这种情况下,需要使用“触发式引导”,例如当玩家看向某个角度时才触发,这样玩家就可以随心所欲地把注意力集中在他所感兴趣的事物上而不至于会错过剧情。始终要主要一点,讲故事时牢记用户摄像机不可控。


好啦,讲玩了,再放张图收尾。






(请无视掉那个弹幕 -、-)

评论
热度 ( 1 )