在虚拟现实(Virtual Reality,VR)中,很重要的一点就是用户的在虚拟环境中的漫游(navigation)。除了固定视点的VR电影,一般的VR应用,特别是游戏或者其他交互式的应用,都会依赖于用户在虚拟环境中不断的移动、改变视角来带来探索的体验。当下VR应用中,最流行的漫游方式有两种:一种是使用“传送门”,比如玩家用手柄在3D空间中直接选择目的地,系统就会把玩家直接传送到被选择的地方;一种是一比一的实际的移动,用户在房间里走一步,在虚拟的环境中就走一步,这一般需要更强一些的硬件支持,比如HTC Vive的Lighthouse定位器,并且需要较大的实际空间。两种方式可以结合起来,短距离内的移动使用一比一的移动方式,长距离的移动使用传送门的方式。

VR系统中一个很大的问题或者挑战就是,在有限的实际空间下,如何让玩家能进行虚拟空间里的无限漫游。今天要说的Redirection(又叫directed walking)1就是一个有趣的解决思路。Redirection是“重定向”的意思。它的目的是让玩家在有限的空间内能够“无限地行走”,而不会撞墙。

Bruder et al. 2015

那它是如何实现的呢?请看上图1,图中玩家在虚拟环境中走直线,然而在实际环境中,他走的是一个曲线,这样当他快要走到房间尽头时,他已经调转了方向,避免了撞墙。原来系统当监测到用户离墙边越来越近时,就会缓慢地偏移整个的虚拟环境,让用户自主地调整了他的行走方向,形成路径的偏移,来避免走到房间尽头。其实它的本质就是让用户自己在无意识的情况下,走回房间中间,不要走出现实区域。例如南加州大学的MxR实验室1曾给记者做了一个实验,让记者带上oculus头戴,在虚拟现实中从一个科幻走廊的一头,走向另一头。记者一直以为自己走的是直线,但是当他完成体验取下头盔的时候才发现,自己已经几乎转向了完全相反的方向2

当然这只是一个例子。下面来列举一下当前学者们提出的一些redirection的方法:

1. 通过旋转,改变玩家的前进方向3。其中,迈阿密大学的Hodgson等人指出了两种思路4。第一种是steer-to-center,即是让玩家在过程中,始终向物理空间的中心偏移。第二种是steer-to-orbit,刚刚所举的例子就符合这一种类型,即是当玩家靠近空间边缘时,让玩家偏移回房间内部,好像在物理环境中绕圈一样。Hodgson等人的研究指出,steer-to-center的方式比较适合相对开放、广阔的虚拟环境4,而steer-to-orbit对于相对封闭的虚拟环境更为合适3

Bruder et al. 2015

2. 巧用物体将用户带离(redirection metaphor)

旋转:变化的门,旋转的书架;

传送:传送光,飞鸟(将用户带离),电梯。

3. 巧妙设计空间

不可能的空间:重叠的房间x

动态生成的走廊。

4. 其他的奇思妙想

圆柱形的墙和无限的走廊y


1 南加州大学 MxR实验室。http://projects.ict.usc.edu/mxr/

2 Tested 专访USC MxR实验室。https://www.youtube.com/watch?v=XOxmMurUv3Q。last accessed Jan 10th, 2018

3 Bruder, Gerd, Paul Lubas, and Frank Steinicke. "Cognitive resource demands of redirected walking." IEEE transactions on visualization and computer graphics 21.4 (2015): 539-544.

4 Hodgson, Eric, Eric Bachmann, and Tyler Thrash. "Performance of redirected walking algorithms in a constrained virtual world." IEEE transactions on visualization and computer graphics 20.4 (2014): 579-587.

5 Hodgson, Eric, and Eric Bachmann. "Comparing four approaches to generalized redirected walking: Simulation and live user data." IEEE transactions on visualization and computer graphics 19.4 (2013): 634-643.

x Paludan, Anders, et al., Investigating spatial illusions in virtual reality environments, https://www.youtube.com/watch?v=T6Zrjz_hu8I&feature=youtu.be

y Matsumoto et al., Siggraph 2016 Unlimited corridor: redirected walking techniques using visuo haptic interaction. https://www.youtube.com/watch?v=THk92rev1VA&feature=youtu.be

VR中的Redirection的更多相关文章

  1. VR中射线点击按钮的实现

    VR中实现UI的Button点击,主要是需要实现IPointerClickHandler接口,因为在Unity将所有的按钮操作都封装成了相应的接口,需要相应的功能只需要去实现对应的接口就好了.在这里我 ...

  2. VR中为什么需要把游戏音频放在聚光灯里?

    VR中为什么需要把游戏音频放在聚光灯里? 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/de ...

  3. VR中的“寻路(wayfinding)”

    虚拟现实(VR)中很重要的一个问题就是Locomotion(用户在VR中的移动).这个Locomotion分为两种,一种是点对点的,如传送门的方式,一种是包含了可以操控的中间过程的,这种被称为“导航( ...

  4. 什么是VR中的Locomotion?

    Locomotion,本文中我称之为移位,是VR研究中最重要的话题之一.因为它属于VR中三大元老级操作(Selection选择,Manipulation操纵物体,Locomotion移位),其中,前两 ...

  5. 什么是VR中的vection?

    Vection是VR领域的一个专有名词,其义指“在虚拟现实中给人带来‘移动’(self-motion)感觉的认知因素”1.也就是说,vection就是指那些给玩家带来“我正在这个虚拟环境中移动”这种感 ...

  6. 浅谈html5在vr中的应用

    使用过HTML5制作动画过程的开发者都知道,HTML5页面给人一种逼真的感觉,同时HTML也是可以制作VR页面,但是需要你熟练HTML5与JavaScript开发过程,所以在有必要的情况下,我们可以用 ...

  7. VR中运动控制器的传送系统

    创建一个VRPawn 新建一个BluePrint,父类选择Pawn,我们命名为VRPawn,打开它. 添加一个Scene命名为CameraRoot 在CameraRoot节点下添加一个Camera 在 ...

  8. 使用鼠标左键事件实现VR中的Eye Gaze Input

    1.光标以及光标动画的显示 using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...

  9. 期待中冷静前行,专家预测2017年VR产业5大发展趋势

    VR在90年代火过一阵后,在2016年迎来了爆发.今年的VR领域,除了Oculus.HTC.索尼等发布的各家硬件,还有许多VR内容争奇斗艳的迸发,但是VR会一直保存热度吗? 事实上,对于科技圈巨头而言 ...

随机推荐

  1. html基础——下拉式菜单

    一个网站能否让用户容易使用该网站往往是由菜单栏体现出来,因为它为网页的大多数页面提供功能入口.一个轻轻的点击以后,即可显示出菜单项,将网站的大部分页面和功能显示出来让用户清楚了解从而用户节约一定的时间 ...

  2. SpringMVC整合Apache Shiro

    关于什么是Shiro,可以查看这篇文章http://www.cnblogs.com/Laymen/articles/6117751.html 一.添加maven依赖 <dependency> ...

  3. java设计模式5.组合模式、门面模式、享元模式、桥接模式

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  4. NLP(二十四)使用LSTM构建生成式聊天机器人

    准备 数据集:AIML数据集 下载数据集并用Notepad++打开,复制到txt文件中方便打开 代码实现 数据很少,训练轮次不多,结果不好,仅当示例 import numpy as np import ...

  5. 洛谷P1372 又是毕业季I+数学

    P1372 又是毕业季I 题意:在1-n中找到k个数,使得这k个数的最大公因数最大: 思路,题解: 因为两个数成倍数关系时,它们的最大公因数是两数中的较小数,也就是相对来说最大公因数较大 返回题目,这 ...

  6. poj1273 Drainage Ditches (最大流板子

    网络流一直没学,来学一波网络流. https://vjudge.net/problem/POJ-1273 题意:给定点数,边数,源点,汇点,每条边容量,求最大流. 解法:EK或dinic. EK:每次 ...

  7. HZNU Training 1 for Zhejiang Provincial Collegiate Programming Contest

    赛后总结: TJ:今天我先到实验室,开始看题,一眼就看了一道防AK的题目,还居然觉得自己能做wwww.然后金姐和彭彭来了以后,我和他们讲了点题目.然后金姐开始搞dfs,我和彭彭看榜研究F题.想了很久脑 ...

  8. CodeForces 758 C Unfair Poll

    Unfair Poll 题意:一共有n排同学每排同学有m个人, 老师问问题有一个顺序, 先从第一排开始问,问完第一排的所有同学之后,再问第2排的,对于所有排的访问顺序为 1,2,3……n-1,n,n- ...

  9. 简单粗暴详细讲解javascript实现函数柯里化与反柯里化

    函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感:下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数变换成接收一个单一参数(最初函数的第 ...

  10. Netty源码分析 (七)----- read过程 源码分析

    在上一篇文章中,我们分析了processSelectedKey这个方法中的accept过程,本文将分析一下work线程中的read过程. private static void processSele ...