UNITY开发VR眼镜中文入门教程(5)

VR中的运动

 

除了达到帧率的要求外,在VR中运动也是个要素,在策划游戏的阶段就要好好思考这个问题,如果选择的运动解决方案会引起眩晕甚至恶心,将严重影响你的项目.

VR中的恶心和舒适

 

玩游戏感觉恶心,也被称为VR病(https://en.wikipedia.org/wiki/Virtual_reality_sickness),这是因为在真实的世界中玩家的身体是固定的,当他们以虚拟的视角去查看移动的虚拟环境,就很可能让身体感受到不适.

一般情况下,应避免移动相机,除非是跟随用户运动而动,简单来说头戴式显示设备把虚拟的信号从眼睛或者耳朵传递给玩家,使得玩家认为它是真实的,比如场景中不停的旋转,玩家的大脑会认为身体真的在旋转,这是人的神经系统就会做出排斥反应,最后导致眩晕,恶心等不舒适的情况.不过也有例外,所以要多实验和测试,尽可能的让多样的玩家来感受,找到一个权衡的舒适的操控方案.如果玩家的身体能实际跟随相机的移动,那么会极大的减弱不适感,比如有空间跟踪技术的HTC Vive.但这仍然依赖我们要为用户开发没有真实的移动玩家环境,迷惑视觉听觉找一个平衡点.

目前位置静止的VR体验是最舒适的,通常只需要用户原地不动,通过旋转或者转头来操作游戏,VR示例中的180度射击及360度射击就是这种风格的游戏.

VR中的第一人称射击游戏

传统的鼠标和WSAD或游戏手柄控制的第一人称游戏经常引起恶心不适感,所以最好避免这种操作.如果你决定要开发第一人称控制的游戏,要请尽可能多的人试玩游戏并反馈给你改进的建议,绝对要禁用使用点头等快速移动视角的动作.我们捕捉头部的旋转赋给相机(https://twitter.com/id_aa_carmack/status/553238861267353600).可以看CameraOrbit组件学习相机淡出渐入及捕捉旋转.

如果要执行运动操作,我们建议给玩家一个恒定的静态视觉参考体,比如驾驶舱,客舱,汽车内部,可以参考这几个游戏:Radial-G(radial-g.com/), Lunar Flight(www.shovsoft.com/lunarflight/), and Titans of Space(www.titansofspacevr.com/).

在VR中用淡出/闪烁转换场景

在虚拟场景快速跳转相机位置较流行的方法是用淡出,即要跳转位置前渐渐的将画面黑掉,然后将相机移动到所需的位置或场景再快速的淡出黑色显示出虚拟场景.另外一种方法稍复杂一些,有点想相机快门,用两个黑色的挡板开合作为遮挡来快速跳转相机位置,Tom Forsyth在Oculus2014大会视频上有介绍这个方式,可以翻墙看看这个视频:https://www.youtube.com/watch?v=addUnJpjjv4&feature=youtu.be&t=40m5s

在VR示例场景中运动

 

正如我们上面说过的,我们不要直接在Unity中移动相机位置,相反我们必须给相机设定一个父对象,并把对相机的移动或旋转应用到父对象.

2_cameracontainer

我们想确保用户有一个舒适的VR体验,在我们提供的VR示例中,大多数场景都不包含运动的相机,而只去让迷宫的沙盒及飞行器运动.早VR这一新媒介早期阶段我们希望给用户一个积极向好的期望,才能有利于VR事业的发展.

Flyer游戏中的运动

 

Flyer示例中的相机从菜单消失后直接以恒定的速度运动着,玩家并不经历从静止到加速的过程,静止到加速的过程通畅会引起恶心不适感.

3_flyervideo01

随着从飞机旁边略过的圆圈以及移动的小行星等效果,可以给人一种移动的感觉.同时也允许环视周围,因为能看到周围所以能减少恶心不适感.

可以用类似的效果实现固定相机,并移动一切相对于相机的对象.

Maze – VR中的桌游

 

迷宫这个例子提供了俯视风格的桌游效果,看起来就像把相机位置固定,但是让迷宫沙盘旋转起来.

4_mazerotatevideo

然而我们用了光照贴图和导航网格,它们被标记成了静态,所以我们不能去旋转迷宫沙盘,相反,我们要改变成如下的层级:

5_maze-camera-hierarchy

VROrbitCamera 对象被放置在迷宫沙盘的中心,MazeUnityLogo 物体在迷宫沙盘的一边,MainCamera在另一边.

6_mazerotatesceneview

我们旋转VROrbitCamera对象,因为它的旋转中心在迷宫中心,静止的Unity Logo作为标识参考,让我们认为是沙盘在旋转.

完成这个旋转,VROrbitCamera有两个组件:

CameraOrbit处理旋转

Rigidbody让我们用来改变质量和阻尼等参数

7_cameraorbit

CameraOrbit 组件有三种旋转样式选项:

8_cameraorbit-enum

Smooth – 我们用了Smooth这个选项来让旋转变得顺畅,慢慢降低滑动速度,改变旋转增量和刚体的特性实现对相机运动速度,阻尼的调整. Step – 有时候我们需要立刻旋转相机,去掉中间插值过程,也就是我们滑动多少,相机就转多少,完全同步的旋转.

Step With Fade – 和Step类似,但它用了一个非常快的淡出,当滑动触摸板时,画面黑掉,相机在后面快速的移动到对应的位置,这样会减少恶心不适感.改变Rotation Fade Duration会改变淡出持续的时间.

9_stepwithfadevideo

考虑到VR正在快速发展中,要移动,又要避免恶心不适感,我们强烈建议您认真阅读Oculus的手册关于”Simulator Sickness(https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_app_simulator_sickness/)” 和”Motion(https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_app_motion/)”等深入这些知识的文章.

在180/360度射击游戏中的运动

我们另外两个示例场景演示了简单的使用跟踪旋转头部控制相机运动以及简单的射击输入.周围环境是静止的,玩家的目标就是简单的凝视要射击的物体并射击.

这些场景可以说是舒适的,是最不宜引起恶心不适感的.

现在你应该有了一个基本了解为什么要这么处理场景中的运动,也可以阅读这些主题进一步学习:


原文:http://unity3d.com/learn/tutorials/topics/virtual-reality

由 四角钱 (XK) 翻译,转载请注明来自 http://blog.1vr.cn

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注