之前我们讲到了虚拟现实中漫游方式的分类。虚拟现实中的漫游(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. 微擎 人人商城 增加营收比统计(即每个订单支持多少,收入多少,总得统计)多表联合查询, sum统计一对多总和 联合 group by 进行查询

    在公司要求增加一项统计,即营收比, 每个订单收入多少 支出多少,盈利多少,盈利比都详细记录下来. 在做完针对单个订单的营收比之后(支出储存在 ewei_shop_order_external_pay ...

  2. codeblocks无法调试的相关解决思路

    代码无法调试!? 难受... 现在给你提供两种常见的导致codeblocks无法调试的原因以及相应的解决方案. 原因一: 在创建工程目录时,保存路径中有中文. 重要的事情说三遍: 切记,工程目录的保存 ...

  3. cogs 313. [POI2001] 和平委员会(2-SAT

    http://cogs.pro:8080/cogs/problem/problem.php?pid=pyzQimjkj 题意:有n个集合,每个集合有俩元素,要从n个中各选一个放一堆,但是有的俩不能同时 ...

  4. lightoj 1226 - One Unit Machine(dp+大组合数去摸)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1226 题解:由于这些任务完成是有先后的所以最后一个完成的肯定是最后一个任务的子 ...

  5. 【Hystrix】实现服务隔离和降级

    一.背景 1.1 服务熔断 1.2 服务降级 1.3 服务隔离 1.4 总结 二.使用Hystrix实现服务隔离和降级 2.1 Hytrix 简介 2.2 线程池方式 2.3 信号量 三.项目搭建 3 ...

  6. Appium+python自动化(三十六)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 上(超详解)

    简介 前面课程只是启动了单个appium服务,只能控制单台设备.如果需要针对多台设备测试那么该如何处理?而且发现群里的小伙伴们也在时不时地在讨论这个问题,想知道怎么实现的,于是宏哥就决定写一片这样的文 ...

  7. 新手学习FFmpeg - 通过API完成filter-complex功能

    本篇尝试通过API实现Filter Graph功能. 源码请参看 https://andy-zhangtao.github.io/ffmpeg-examples/ FFmpeg提供了很多实用且强大的滤 ...

  8. Mysql优化总结(一)

    一,前言 ​ 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. ​ MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.My ...

  9. ActiveMQ的安装与使用。

    1.什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE .4规范的 JMS Provider实现,尽 ...

  10. ZFNet(2013)及可视化的开端

    目录 写在前面 网络架构与动机 特征可视化 其他 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 ZFNet出自论文< Visualizing and Unde ...