Unity5开发Oculus项目入门范例

发表于2017-05-16
评论1 1k浏览
本篇文章要和大家大家介绍使用Unity5开发Oculus项目的入门范例,该范例由Oculus制作,包含了一系列解决VR典型问题的示例场景。

Oculus Sample Framework for Unity 5是为VR开发者和设计师提供的实验性示例集合。其中包含了一系列的解决VR典型问题的示例场景,有第一人称视角的运动机制和基于注视的交互界面。每个范例都提供了在应用内调整参数的控制面板,这些参数包括传送过程中从透明到消失的时长,界面控制元素的延迟或瞄准器的Z深度等。该控制面板本身就很好的展示了VR中的控制器,可以直接将其用于自己的VR项目。

项目中的每个场景都展示了一个与VR开发相关的概念。整个范例是一个Unity 5 的项目。可以在Windows平台上执行,并且可以在Gear VR Concepts 商城免费下载。这个应用可以让使用者在不打开Unity编辑器的情况下深入到场景中理解一些VR开发的概念。每个VR场景中都包含一份文档,所以可以深入到VR场景中直接学习。

如果想要深入探索并实现示例内的VR操作界面没有提供的功能,建议在Unity中打开并编辑该项目。

示例的主要作用是提供一套探索VR设计概念的工具,并非推荐大家都这么做。每个示例都包含了可供测试的游戏机制,其中有些设置会让玩家产生不适感,这是我们设计VR时需要避免的。这些功能的主要用途就是让开发者体验到什么是可行的,什么是不可行的。



示例场景简介
整个示例框架包含了很多场景。最好的学习方法就是进入场景中尝试。我们先作为测试人员来看看这几个场景。

十字准星

这个示例展示了基于注视位置的十字准星或者瞄准器,并探讨了一些必须注意的相关因素。在非VR游戏中,十字准星是否位于视野中心是无关紧要的,但VR开发者则必须要确定十字准星显示位置所代表的深度信息。十字准星的位置如果太近,观察者就会不舒服。如果太远,当准星看起来比场景中位于它下面的物体还远时,又会让玩家产生深度上的错觉。

解决该问题的方法之一,是沿着玩家的视角进行光线投射,并将十字准星定位在视线接触到的第一个物体上。这样就能保证十字准星处在一个合适位置的同时不与场景中的深度信息冲突。你可以在示例中尝试上述方法或一些其它的解决方法,还可以在运行时手动控制十字准星的深度。

这个示例也展示了一些其它概念,例如导弹是如何投射的。如果将十字准星对准导弹,并且该准星与玩家保持固定的距离,就必须决定导弹是沿着从枪口出发的一条轨迹穿过十字准星,还是沿着玩家视觉中心与准星连线的平行线穿过十字准星。后者是非VR游戏的常用做法,这种方法很直观。这个示例可以让你更直接的感受并理解这种区别。

运动

这个示例场景可以体验到第一人称视角的实时移动控制,从而可以更好理解相关设计上的权衡。第一人称视角的移动控制设计需要非常小心,因为这种移动很容易造成不适感。

这个场景可以调整的变量有:
                移动速度
                旋转速度
                玩家朝向是否由视觉方向控制
                旋转的步长(持续旋转或者使用固定步骤指定步长的旋转)
                当执行“每一步”旋转时的动画速度(非瞬间完成)

瞬移

瞬移是VR中常用的移动方式,因为这样可以避免第一人称视角控制运动引起的不适感。这个示例场景实现了简单的瞬移机制。

这个示例中展示的一个巧妙设计是玩家在瞬移后视角位置的旋转方式。这种模式中,瞬移后视角的方向是由玩家控制的,这个方向可以在瞬移前就设定好。上面的截图展示的就是这个操作,一个发光的虚拟人物出现在了瞬移的终点,展示了瞬移后玩家的朝向且可以由玩家来控制。在瞬移结束后,玩家面对的方向与之前设定的虚拟人的朝向是一致的。

这看起来很直观,但可能存在玩家需要旋转头部才能看到瞬移终点的情况。这时玩家在瞬移完成后朝向与模型保持一致同时头部旋转呢?还是将最终朝向与旋转头部后的自然前方保持一致呢?

这个示例展示了以上两种方式,至于哪一种更直观则取决于另一些因素。示例可以帮助你很直观的理解这两种模式的区别,并探索出个性化的解决方案。

用户界面

场景“Pointers” (指示点)和“Pointers – Gaze Click”(指示点-凝视点击)展示了利用指示点来实现VR中的UI交互。两个场景均展示了基于凝视的交互机制,包含了与物理对象和平面UI的交互。

场景“Pointers” (指示点)和“Pointers – Gaze Click”(指示点-凝视点击)很相似,只是“Pointers – Gaze Click”(指示点-凝视点击)并不需要手柄或者触摸板。在这个场景中,凝视一个UI元素时会在凝视光标附近产生一个圆形的进度条,进度条会很快填充满(如上图所示)。当环形进度条填充完毕,就会执行相应UI所负责的动作。

其它示例场景

篇幅有限无法一一介绍每个场景,各场景都包含对应的文档,我们可以在VR应用内查看这些文档。其它场景包括:
        Keyboard:VR键盘的简单实现。
        Mirror:展示了模型头部按照玩家头部动作进行运动,以实现场景中的镜像效果。
        Stairs:探索楼梯效果在第一人称视角下体验的舒适度。
        Surface Detail:探索不同着色技术所描绘出的不同表面细节,可以更好的理解它们在VR中的效果。
        Tracking Volume:展示一些方法,在用户离跟踪边界范围太近时给予提示。

结论
这些示例只能作为理解和探索VR中一些常用设计的出发点。事实上,这些示例只是不断发展的VR交互中最浅显的部分。希望各位开发者能觉得这个出发点对你将来的新设计思路有一定帮助。

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