之前我们讲到了虚拟现实中漫游方式的分类。虚拟现实中的漫游(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. nginx-springboot-vue前后端分离跨域配置

    nginx-springboot-vue前后端分离跨域配置 引言 接着上篇--简单的springboot-vue前后端分离登录Session拦截的demo,其中跨域是通过springboot后端全局设 ...

  2. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  3. 动态数组& allocator

    问题来源 在编写程序的时候,对数组."二维数组"的分配的删除掌握的不是很清楚,不能正确的进行定义初始化. 以及在使用vector的时候,如何正确的定义及初始化 注意!!! 尽量使用 ...

  4. 导航控制器的根控制器 是滚动性&普通的frame区别

    当一个控制器有navigationBar&tabBar: 1.当导航控制器根控制器是tableViewController时,tableView 的frame原点是屏幕左上角,当向tableV ...

  5. HDU 5126 stars 4维偏序, CDQ套CDQ

    题目传送门 题意:在一个星空中,按着时间会出现一些点,现在john想知道,在某个时间内有多少个星星是的坐标是满足条件的.(x1<=x<=x2, y1 <= y <= y2, z ...

  6. 数论 Day 12

    数论是个好东西 今天讲的是组合计数 组合计数 组合数学主要是研究一组离散对象满足一定条件的安排的存在性.构造及计数问题.计数理论是狭义组合数学中最基本的一个研究方向,主要研究的是满足一定条件的排列组合 ...

  7. 搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上

    1.在GitHub上建一个新仓库

  8. HTTPS加密协议

    使用JDK自带的keytool工具生成一个证书(keystore文件),其中包含了密钥. a.在命令行输入以下命令:keytool -genkey -alias tbb -keyalg RSA -ke ...

  9. android 拍照 相册 剪切以及显示功能

    一.概述 android的 图片拍照 ,相册选图,以及图片剪切功能可以说非常常用. 尤其是图片上传功能,必然用到此功能. 而公司最近的一个项目中正好用到该功能. 记录下来以便以后再次用到,直接拿来使用 ...

  10. 【第十二篇】微信支付(APP)集成时碰到的问题(.net提示“无权限”、iOS跳转到微信支付页面中间只有一个“确定”按钮)(转)

    直入主题之前,请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^FG@#$%DSFQ#$%.......:吐槽玩了!大家心照就好. 要完成手机APP跳转到微信的APP进行微信支付,需要进行如下 ...