之前我们讲到了虚拟现实中漫游方式的分类。虚拟现实中的漫游(travel/navigate)方式,即是应用提供给用户的,在虚拟环境中移动的方式。虚拟现实的漫游方式中,有一种被称为“完全动作线索”1,即用户需要用真实的、完全的步行动作,来进行虚拟环境中的漫游。比如本篇要提到的自由步行(free-space walking)。

自由步行即使用户能够在一定的空间内自由的走动,他/她的移动会被系统记录,并且反映到他/她在虚拟环境中的移动上。其优势就是整个的交互和现实生活中是一样的,所以非常自然,不需要学习,也不太可能导致晕动症。但是它对定位技术有相当的要求,需要在3D空间中的准确定位,所以一般会让用户佩戴一些多余的设备(电线、背包、捆绑在身上的定位装置等),所以也并非完全“自由”,会导致一些略显尴尬体验。同时,以当前的技术,自由步行一般只能限制在一个小区域中,如果需要漫游的虚拟区域很大,也不能完美处理。并且,自由步行也会消耗用户体力,使得用户使用应用时会更容易疲惫。

根据Kruij和Riecke教授在IEEE VR会议上的讲座1,自由步行技术也有一些不同的类别。其中,第一种类别是当前主流的方式,在行业中广泛地被应用,后两种是为了解决第一种方式存在的空间受限的问题,属于较为实验性的、在学术研究中被提出的方式。

1. 真实的步行 real walking

SteamVR, HTC Vive setup. image from https://www.wareable.com/vr/htc-vive-review

用户往前走一步,在虚拟环境中就往前走一步,用户往左转多少角度,在虚拟环境中就往左转。完全的一一对应,现实环境中用户在什么位置,虚拟环境中用户就相应的在什么位置。这是当前大部分应用采用的方式。不过由于受限于房间大小,或者准确的说,能够被定位到的区域的大小,所以如果只采用这一种交互方式的话,很难让用户在虚拟环境中,能够漫游到超出定位区域的地方。大部分应用采取的方式有:“传送门”(直接将用户传送到另一个空间)、驾驶式漫游(用户使用某交通工具进行漫游,实际上在现实空间中用户呆在原地)。不过,勇于思考和探索学者们还提出了以下两种类别的自由步行:

2. 重定向处理的步行 redirected walking

可以理解为,当系统发现用户要离开可监测区域的时候,做一些事情来让用户不要离开。比如当用户走动时,让虚拟环境缓缓地改变方向,使得用户慢慢改变前进方向,但是还以为自己仍然在“走直线”2,3。或者当用户快走出去的时候,用一些物体、事件吸引用户的注意力,使得用户走回监测区域中间3,4。也有不只是让用户在“撞了南墙”才回头,而是在整个过程中一直不停缓慢改变虚拟环境,让用户只围绕环境中间走动,等等方式。如果要在用户缓慢地改变虚拟环境的方向,那么改变的速度必须非常慢,否则用户会意识到运动方向的改变,导致认知冲突。当前研究表明,如果要让用户行走时旋转角度不同,大概可以是比真实旋转速度高25%或低33%以内5

Bruder et al. 2015

3. 缩放处理的步行 scaled walking

这个方式通过名字也比较好理解,就是把用户现实中的步长,在虚拟环境中做一个缩放(扩大)。使得用户在虚拟环境中走了12米,在现实中只走了10米。同样的,这个缩放的比例也是不能太夸张,虚拟的移动可以比真实的移动少12%或者多35%以内5


1 Kruij E, Riecke BE. Navigation interfaces for virtual reality and gaming: Theory and practice. In Virtual Reality (VR), 2017 IEEE 2017 Mar 18 (pp. 433-434). IEEE. http://ispace.iat.sfu.ca/project/vr-navi-tutorial/

2 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.

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 Razzaque, Sharif, Zachariah Kohn, and Mary C. Whitton. "Redirected walking." Proceedings of EUROGRAPHICS. Vol. 9. 2001.

5 Steinicke, Frank, et al. "Estimation of detection thresholds for redirected walking techniques." IEEE transactions on visualization and computer graphics 16.1 (2010): 17-27.

虚拟现实中自由步行(free-space walking)的更多相关文章

  1. myeclipse中解决 java heap space/gc overhead limit exceeded eclipse 的方法

    在Eclipse打包的时候报错:gc overhead limit exceeded eclipse 原因是Eclipse默认配置内存太小须要更改安装Eclipse目录下的eclipse.ini文件. ...

  2. Win32下 Qt与Lua交互使用(四):在Lua脚本中自由执行Qt类中的函数

    话接上篇.通过前几篇博客,我们实现在Lua脚本中执行Qt类中函数的方法,以及在Lua脚本中连接Qt对象的信号与槽. 但是,我们也能发现,如果希望在Lua脚本中执行Qt类的函数,就必须绑定一个真正实现功 ...

  3. 学以致用二十四-----shell脚本中的列表及space

    1.接触列表的概念是在pyhon中,殊不知在shell中也是有列表的. 如: 结果 列表的下标和python中一样,也是以0开头 注意 list 和list2 的区别   一个是用括号括起来,一个是用 ...

  4. 关于Keil C51中“ERROR L107: ADDRESS SPACE OVERFLOW ”的总

    最近写一个关于单片机播放音乐的程序,出现如下错误: *** ERROR L107: ADDRESS SPACE OVERFLOW ... ... Program Size: data=167.6 xd ...

  5. 虚拟现实中的Motion Sickness晕动症问题 - VIMS

    虚拟现实(VR)中的晕动症 - VIMS 在玩VR的时候,很多玩家都遇到过发晕恶心等症状,这就是晕动症(Motion Sickness,以下或简称MS).MS并不是VR特有的问题.我们在坐船.坐车.坐 ...

  6. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  7. 在Eclipse中显示空格(space)和制表符(tab)

    显示空格(space)和制表符(tab)设置: Window->Preferences->General->Editors->Text Editors->Show whi ...

  8. 在SurfaceView中自由书写和擦除

    /////////继承SurfaceView 的类 public class PaintView extends SurfaceView implements Runnable,SurfaceHold ...

  9. 内核驱动程序中如何读写user space的文件,方便调试程序

    需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.但是在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() f ...

随机推荐

  1. 牛客2018国庆集训派对Day3 I Metropolis 多源最短路径

    传送门:https://www.nowcoder.com/acm/contest/203/I 题意: 求每个大都会到最近的一个大都会的距离. 思路: 把每个大都会设为起点,跑一遍最短路.在跑最短路的时 ...

  2. SPOJ - GSS1-Can you answer these queries I 线段树维护区间连续和最大值

    SPOJ - GSS1:https://vjudge.net/problem/SPOJ-GSS1 参考:http://www.cnblogs.com/shanyr/p/5710152.html?utm ...

  3. yzoj P2045 不老的传说 题解

    题意 类似于涂色问题,环形问题不多说,断环加倍即可,限制条件if判断就行. 解析 代码 #include<bits/stdc++.h> using namespace std; int n ...

  4. Netty源码分析 (四)----- ChannelPipeline

    netty在服务端端口绑定和新连接建立的过程中会建立相应的channel,而与channel的动作密切相关的是pipeline这个概念,pipeline像是可以看作是一条流水线,原始的原料(字节流)进 ...

  5. SpringBoot集成Zipkin实现分布式全链路监控

    目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller ...

  6. myslq5.7安装以及root密码找回

    一.mysql安装 创建用户和用户组: groupadd mysqluseradd -g mysql mysql -s /sbin/nologin 解压压缩文件并创建软链接 tar -xvf mysq ...

  7. SpringCloud超简单的入门(1)--一些简单的介绍

    简介 简单来说,springcloud的就是由一组springboot应用(服务)组成,相互之间通过REST等方式进行通信. 两个springboot应用,其中一个作为服务提供者,一个作为服务消费者, ...

  8. 谈谈你对HTML语义化的理解。

    1.什么是HTML语义化? 基本上都是围绕着几个主要的标签,像标题(h1-h6),列表(li),强调(strong em)等. 根据内容的语义化(内容结构化),选择合适的标签(代码语义化),便于开发者 ...

  9. Cookie的临时存储和定时存储

    Cookie解决了不同请求的数据共享问题.是由服务器保存在客户端的小文本文件,包含了用户的信息,可以避免用户重复输入用户名和密码进行登录.浏览器请求Cookie,服务器响应时返回Cookie,浏览器存 ...

  10. Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置

    博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...