Locomotion,本文中我称之为移位,是VR研究中最重要的话题之一。因为它属于VR中三大元老级操作(Selection选择,Manipulation操纵物体,Locomotion移位),其中,前两个操作是关于物体的,而Locomotion是关于玩家自己的 - 几乎所有的VR应用都避不开这三个操作,而这三个操纵几乎涵盖了所有的VR操作。今天就来解释一下,VR中的Locomotion指的是什么,它有哪些分类和技术。

Locomotion是什么?

Locomotion,用最简单的话解释就是“从一个位置移动到另一个位置”,在VR中,它的指的就是玩家在虚拟环境中从一个位置移动到另一个位置,其本质是玩家视角(viewpoint)的改变:从一个视角变换到另一个视角。Locomotion在中文里尚无一致的翻译,所以这里我暂把它译作“移位”。

虚拟3D环境(包括VR和屏显等)中的Locomotion有三种可能的目的:探索(exploration),搜索(search)和查看(maneuvering)。探索是没有具体目标的移动,其目的一般是搜集环境信息,或者简单的就是享受美景。它讲究一个在环境中移动的自由性,移动的速度要能随心所欲,并且需要能视察大范围的环境全景。搜索则是有一个具体的目标,要在环境中寻找到它。这就要求能够同时顾及远景近景,既能大范围视察,又能有足够的细节,在这中间做一个权衡。maneuvering并没有一个很准确对应的中文翻译,它其实表示的是相对于一个物体的视角控制,一般目的是为了从各个角度观察某个物体或者某个环境,所以我这里把它译作“查看”。比如你如果进入了一个陌生的房间,可能会四周看看,走两步,或者你看到了一个纪念碑,想要绕道正面去看看碑面上写的什么。这时候你不会进行很大范围的运动,但是你会进行很准确的视角控制。查看是三种目的中移动范围最小的,也是最精细的操作,它需要操作的稳定性和精确性。

Locomotion的分类

Locomotion既然是从一个视角变换到另一个视角,那么根据两点之间如何进行变换,可分为两种方式:点对点的移位(target based locomotion)和导航(navigation)。其中点对点移位是直接从一个点跳转到另一个目标点,最常见的例子就是Teleportation传送门,用户选择要去的位置,然后天光一闪,用户就被传送过去了。而导航则是有一个从出发点到目的地的路径。要想导航必须知道当前的方向(spatial orientation)。

很明显的,对于点对点位移,我们只需要知道目的地的空间位置(position)和玩家移位过去以后的朝向(orientation);而导航,除了位置和朝向以外,还需要控制中间的过程。这个多出来的中间过程包括了两个方面的工作:寻路(wayfinding)和视角控制(viewpoint motion control,也称travel)。

其中,寻路主要是一个脑力上的活动,包括了理解空间信息(spatial understanding,理解我的空间位置、我与环境的关系)和计划路径(path planning,选哪个路径走)。关于它有很多认知方面的研究(可见Darken et al., 2014)。设计一种移位方式时,不能违背这些认知的方面的原则。

视角控制就是作为设计师和开发者可控制的部分了。根据我们想要达到的目的,如何让用户操作控制自己的视角。其本质就是开放一个对视角的位置朝向的控制接口。


McMahan, R., Kopper, R., & Bowman, D. (2014). Principles for Designing Effective 3D Interaction Techniques. In K. Hale & K. Stanney, Handbook of Virtual Environments (pp. 285–311). CRC Press. Retrieved from http://www.crcnetbase.com/doi/abs/10.1201/b17360-16
 
Darken, R. P., & Peterson, B. (2014). Spatial orientation, wayfinding, and representation.
 
The VR Glossary, locomotion, http://www.vrglossary.org/glossary/locomotion/

什么是VR中的Locomotion?的更多相关文章

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

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

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

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

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

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

  4. 什么是VR中的vection?

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

  5. 浅谈html5在vr中的应用

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

  6. VR中的Redirection

    在虚拟现实(Virtual Reality,VR)中,很重要的一点就是用户的在虚拟环境中的漫游(navigation).除了固定视点的VR电影,一般的VR应用,特别是游戏或者其他交互式的应用,都会依赖 ...

  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. HDU 6634 网络流最小割模型 启发式合并

    如果我们先手拿完所有苹果再去考虑花费的话. S -> 摄像头 -> 苹果 -> T 就相当于找到一个最小割使得S和T分开. ans = sum - flow. 然后对于这一个模型, ...

  2. CodeForces 86 D Powerful array 莫队

    Powerful array 题意:求区间[l, r] 内的数的出现次数的平方 * 该数字. 题解:莫队离线操作, 然后加减位置的时候直接修改答案就好了. 这个题目中发现了一个很神奇的事情,本来数组开 ...

  3. 51 nod 石子归并 + v2 + v3(区间dp,区间dp+平行四边形优化,GarsiaWachs算法)

    题意:就是求石子归并. 题解:当范围在100左右是可以之间简单的区间dp,如果范围在1000左右就要考虑用平行四边形优化. 就是多加一个p[i][j]表示在i到j内的取最优解的位置k,注意能使用平行四 ...

  4. 通过对微信pc hook实现微信助手

    本软件主要通过对pc端微信hook来实现的,微信版本2.6.8.52. 软件下载地址: http://blog.yshizi.cn/104.html 软件实现功能: 支持爆粉 支持文本消息群发 支持自 ...

  5. 模板类型推导、auto推导

    effective modern c++ 果然是神书,干货满满,简单记录下. item1 模板推倒 典型的模板函数 temlate<class T> void fn(ParamType p ...

  6. PHPOffice 导入

    1.因为Phpexecel已经停止维护,所以要使用心得phpoffice; 2.注意引入 use PhpOffice\PhpSpreadsheet\Helper\Sample; use PhpOffi ...

  7. 章节十六、7-DataProviders

    一.当我们的同一个test有多套数据需要进行测试,那么我们就需要用到-->DataProviders package testclasses1; import org.testng.annota ...

  8. hdu 1007 Quoit Design 题解

    原题地址 题目大意 查询平面内最近点对的距离,输出距离的一半. 暴力做法 枚举每一个点对的距离直接判断,时间复杂度是 $ O(n^2) $,对于这题来说会超时. 那么我们考虑去优化这一个过程,我们在求 ...

  9. group by语法

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  10. Winform中实现ZedGraph新增自定义Y轴上下限、颜色、标题功能

    场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...