虚拟现实(VR)中很重要的一个问题就是Locomotion(用户在VR中的移动)。这个Locomotion分为两种,一种是点对点的,如传送门的方式,一种是包含了可以操控的中间过程的,这种被称为“导航(navigation)”。导航这个行为不止存在于VR中,现实生活中我们随时都有进行“导航”:从卧室走到客厅、从家去上班等等。学者们将这个导航的行为分成两个部分,一个是认知的部分,即我们在脑子里进行的活动,这个被成为“寻路(wayfinding)”;另一个部分就是真正地进行运动(motion/traveling),在现实生活中,就是如提脚走路,或者开车,控制速度和转向等等具体行为,放在VR里则可能是用手柄进行操作来进行虚拟环境(VE)中的移动等等。开发者在创作VR应用的时候,其实可以完全控制的只有第二个部分:如何设计接口(interface)让用户来进行运动的控制,关于这些locomotion的VR技术我在另一篇文章中有详细介绍。但是无可否认我们也很有必要了解寻路的部分,因为它可以帮助我们认识到用户是如何感知环境,并且进行分析和判断的,让我们更好的进行VE和交互的设计。

所以我们这里根据一篇Rudolph Darken和Barry Peterson(2014)的文章进行总结,了解一下关于导航的认知部分“寻路”学术界有了哪些探索和认识,能给我们带来什么样的设计建议。不过对于寻路方面,虽然我们在很早以前就开始过探索,但是直到现在,并没有一个很完善的系统的理论结构来对“人们到底是如何寻路的”进行一个生理、心理学上的完美解释,我们对于它的了解还是非常的零碎,甚至可以说我们对自己的能力知之甚少(人类实在是太复杂的存在,研究的越多,就发现未知的越多)- 所以这里是根据我们所了解的,来提示大家在VR设计时我们应有怎样的考虑。

空间信息的获取 Spatial Knowledge Acquisition

寻路是基于我们对空间的信息的获取的。Darken总结的空间信息获取的方式有两种,一个是从环境中直接获取(主要方式),一个是从其他资源中获取(次要方式),主要指地图。

对于直接的从环境中能获取的空间信息,最通用的诠释是研究城市环境的Lynch(1960)提出的理论体系。他将一个城市的空间信息分为了五种:地标(landmarks,可选的目的地);路径(routes/path,连接地标的路线);节点(nodes,路径相交的地方);区域(districts,地标和路径存在于某区域中);边界(edges,指终断交通的标志,比如河或者栅栏)。

地图也是很重要的一种空间信息的提供方式。地图的使用有两种情况:一种是导航前使用的地图,用于作计划和熟悉环境等,一种是一边导航一边使用地图。两者区别在于如果一边导航一边使用地图,那么需要把导航者在脑子里需要把自己的位置和朝向以一个第三人称的视角转化到地图上,这就存在一个视角转换的问题(自我中心视角egocentric perspective转化到地理中心视角geocentric perspective)。而地图的方向和自己的朝向可能是不同的,这是地图使用中最大的问题。Aretz和Wickens(1992)的研究表明用于导航的地图应该是“前方在上(forward-up)”的,而用于计划的地图应该是“北方在上(north-up)”的。我们用谷歌百度地图的时候可以观察到,一般情况下我们的地图是北方在上的,但是开车导航模式下它会自动转换保持和用户的朝向一致,就是这个道理。但是即使朝向一致,还是有进行视角转换,毕竟地图和现实是两个环境和角度,只要是分开两个东西,一定是需要人的认知方面的切换,这个能力因人而异我们没法控制。但是我认为后面一定会有更强的技术,比如增强现实(AR),来最大化的带来方便,不过现在还有很多局限,这也是我们要努力的原因。

空间信息的表示 Representations of Skatial Knowledge

我们获取了空间信息以后,在我们的脑海里是如何表示的呢?好问题。我们也不是很清楚。。Tolman在1948年提出了“认知地图(cognitive map)”的概念来表示我们在脑海中建立的空间信息,这一术语被沿用至今,但是匆匆六十年过去,我们对于认知地图,对于空间信息表示的神经结构仍然没有一个过硬的解释。当前最普遍引用的理论是Seigel、White(1975)和Thorndyke、Goldin(1983)的LRS(Landmark,Route,Survey)模型理论。该理论认为人首先从外界获取地标信息(landmark knowledge),这时它们是静态的,独立的,然后通过连接这些地标的通路得到路径信息(route knowledge),好比在脑子里画了一个通路图,最后随着通路图的越发完善,我们得到了搜索信息(survey/configurational knowledge),这时即使我们没有走过某路径,我们也可以找到一条通向目的地的路,因为我们可以大致估计出两点的相差距离和相对方向。这个理论看起来是显然的(扶额),不过它有给我们一点启示:现在很多地图可以直接告诉我们通往某地的路径,或者(VR中)直接把我们带到某处,这其实是系统略过了路径信息的步骤,直接为用户提供了搜索信息,这个捷径有可能造成用户方向的迷失,因为直接提供的搜索信息不如人从地标信息和路径信息中发展出的搜索信息强大。

导航的模型 Models of Navigation

这个模型是指的我们对于导航这个行为的认知模型-我们的大脑在导航时如何运作。有一些学者尝试给出导航认知模型,但是大部分都要么只适用于一些特定的导航情况,或者没有考虑到整个导航的过程。相比下,Jul和Furnas(1997)的理论是相对完整的。他们提出的模型如下图:

译自Figure 19.3, Darken, R. P., & Peterson, B. (2014). Spatial orientation, wayfinding, and representation. Handbook of Virtual Environments, 474. 原图来自Jul, S. and Furnas, G.W., SIGCHI Bull., 29(4), 44, 1997.

导航时,我们会先确定一个目标(我要买肉),然后选择导航的策略(肉可能在超市的生鲜部门,在角落里,我往那个方向找找路),下一步就是一个“知觉-评估-动作”的循环,我们搜集空间信息(我左看看,右看看,看看能怎么走,或者找一个超市的地图之类的),这时候我们也逐渐建立起认知地图(超市的位置构造是这样的,我的四周都有这些东西),我们会开始执行动作(往前走然后左拐看看生鲜部门在不在那后面),并且不断进行评估(这样走对不对呢?该不该返回去?)。其中我们可能会倒回到之前的步骤,改变目标(我路过了调料部门,要不要买瓶酱油?)或者改变策略(这样太慢了,我直接问问旁边大婶儿好了)。

总之,导航不是一个固定不变的过程,导航计划和执行是和环境、情况(context of situation)变化紧紧相关、互相影响的。

虚拟环境中的导航的设计原则

Darken总结了一些VE中的导航设计原则,主要从帮助导航的工具(地图等)和VE两个方面来挨个讲解。 不过Darken提出,这里的设计原则不是指导设计者来按部就班跟着做就可以的完美设计步骤,而是一些需要关注的原则 - 导航设计是一个综合复杂的事,不可能离开用户、任务和环境来谈导航。这里我列出了他举出的原则,这些原则很多其实看起来很显然,但是之所以成为原则被写在书里,是因为它更为严谨,是总结于各种前人的学术研究成果 - 如果想要具体的背景研究,大家可以直接查看Darken的文章。

导航工具设计原则:

地图:

1. 根据任务类型确定地图的朝向:自我中心(egocentri)的任务,如搜索,需要以前为上(forward-up);地理中心(geocentric)的任务,如熟悉环境,需要以北为上(north-up);

2. 要在地图上随时显示用户的位置和朝向,实时更新;

3. 注意你的用户是谁。要意识到,如果用户的空间能力较弱(如不能想象转向),那么他的方向迷失问题会更严重。

4. 用户的游戏经历可能影响到空间能力,电子游戏玩的多的用户可能在VE中的方向感也更强。设计时要认识到这一点,考虑你的受众人群。

5. 只在需要的场合用模式化地图(moded map)。模式化地图(< 我也不懂为什么要叫这个名字,如果你知道,请给我留言)指的是可以直接操控用户位移的地图。比如你可以在地图上画一条线,你在VE里就会沿着你画出的路径移动。设计者应只在需要用地图操控位移的情况下使用这种地图,默认情况下要用普通地图。

地标:

1. 允许用户以某种方式给环境做标记、将VE“私人化”的方法可以提高复杂环境下的导航效率,这种方式可以轻松适配到各种导航任务;

2. 要小心地给予用户的环境修改能力,用户可能会滥用而导致环境变得更加复杂,变成干扰;

3. 提供足够明显的地标,让用户导航途中可以判断自己的方向是否正确;

4. 地标不只是一个点,它也应该有方向的属性,他应该为用户提供位置、方向两种信息。

行迹和脚印:

1. 显示来途的行迹可以用来划分空间,告诉用户哪些地方已经去过。也可以让行迹随着时间淡化小事,这样可以提示用户是什么时候去的这个地方,但是这也可能导致用户混淆“没去过的地方”和“很久以前去过的地方”;

2. 显示行迹对“全面搜索”(exhaustive search,需要把空间内的所有地方搜查一遍)很有用,可以防止重复访问同一个地方。可以在需要全面搜索的时候显示行迹,搜索结束后关闭行迹。

方向性的线索 Directional Cue:

1. 单独使用方向性的线索(如太阳、指南针)来帮助导航是不够的。因为它们不能提供位置信息。这些线索应该和其他导航方式一起使用;

2. 方向性的线索在使用模式化地图时可能会很有用;

3. 方向性线索和有方向性的地标一起使用时非常的有效。

组织性补偿方式(环境和可视化)设计原则

环境设计:

Passini (1984)提出了建筑设计的“组织原则”:当人能理解一个空间的组织结构时,ta就能很容易、高效地制定出导航策略,所以设计者设计建筑空间时要建立和保持一个组织空间的原则。

1. 尽可能地在环境中的每一处都用上组织原则,并且使用同一套组织原则,不要违背它;

2. 如果一定要违背某一套组织原则,要明白指示出什么地方要违背,违背的意义是什么。这样导航者(用户)就不会把它纳入组织原则中,干扰导航;

3. 尽可能地把地标的设计纳入组织原则中,地标可用来强化空间的形态(shape of the space);

4. 不要在VE中盲目使用城市设计的元素 - 虚拟环境和现实环境不同,盲目模仿现实空间设计可能导致用户不明其意。牢记关键原则:提供有用的路径、可观察到的边界、可用的地标;以一种清晰易懂的方式,把大的、复杂的空间分割成小的、可导航的空间;

5. 明智的使用城市设计的暗喻(metaphor)和抽象(abstract)数据。如果使用了一个暗喻,要明确它用在哪里,没用在哪里。(作者没有说明这里的metaphor指的是什么,如果你知道,请给我留言)。

可视化设计:

有时候我们可以使用一些新颖的方式来表示空间信息,这时候也有一些注意:

1. 要让分区看起来很明显,特别是如果含蓄的组织方法不够表现这个环境的时候;

2. 同样要使用统一的组织原则;

3. 根据用户需要用到的的操作来组织环境。

结语

本文就Darken和Peterson的文章(2014),简单介绍了什么是VR中的寻路,当前已有哪些认知方面的研究,以及我们从中得到的设计原则。本文中主要讲了在VE中提升用户导航能力的相关研究和结论,其实在章节中,除了介绍帮助用户在VE中寻路这一种目的的,还介绍了通过在VE中训练,使得用户在真是环境中获得更好的寻路能力(例如用于军事上帮助士兵提前熟悉地形)的相关研究结果。感兴趣的朋友可以去查看。


Darken, R. P., & Peterson, B. (2014). Spatial orientation, wayfinding, and representation. Handbook of Virtual Environments, 467–489.

Lynch, K. (1960). The image of the city/Kevin Lynch. Cambridge, Massachusetts and London: MIT Press–1960,-187 p.

Aretz, A. J., & Wickens, C. D. (1992). The mental rotation of map displays. Human performance, 5(4), 303-328.

Siegel, A. W., & White, S. H. (1975). The development of spatial representations of large-scale environments. In Advances in child development and behavior (Vol. 10, pp. 9-55). JAI.

Thorndyke, P. W., & Goldin, S. E. (1983). Spatial learning and reasoning skill. In Spatial orientation (pp. 195-217). Springer, Boston, MA.

Jul, S., & Furnas, G. W. (1997). Navigation in electronic worlds: a CHI 97 workshop. SIGCHI bulletin, 29, 44-49.

VR中的“寻路(wayfinding)”的更多相关文章

  1. 什么是VR中的Locomotion?

    Locomotion,本文中我称之为移位,是VR研究中最重要的话题之一.因为它属于VR中三大元老级操作(Selection选择,Manipulation操纵物体,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. 《C++游戏开发》十六 游戏中的寻路算法(二):迷宫&A*算法基础

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/10289253 作者:七十一雾央 新浪微博:http: ...

  7. VR中的Redirection

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

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

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

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

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

随机推荐

  1. NLP(六) 分块、句法分析、依存分析

    内置分块器 分块:从文本中抽取短语 import nltk text = 'Lalbagh Botanical Garden is a well known botanical garden in B ...

  2. electron-vue-webpack引入bootstrap多实例问题Multiple instances of Vue detected!

    在node modules里面找到electron-webpack目录, 修改out->main.js白名单内容,增加 whiteListedModules.add("bootstra ...

  3. CodeForces 1082 E Increasing Frequency

    题目传送门 题意:给你n个数和一个c, 现在有一个操作可以使得 [ l, r ]区间里的所有数都加上某一个值, 现在问你c最多可以是多少. 题解: pre[i] 代表的是 [1,i] 中 c 的个数是 ...

  4. 图论之拓扑排序 poj1128 Frame Stacking

    题目网址 http://poj.org/problem?id=1128 思路:遍历找出每一种字母出现的最大和最小的横纵坐标,假如本应出现字母A的地方出现了字母B,那么A一定在字母B之前,这就相当于点A ...

  5. codeforces Round #389(Div.2)C Santa Claus and Robot(思维题)

    题目链接:http://codeforces.com/contest/752/problem/C 题意:给出一系列机器人的行动方向(机器人会走任意一条最短路径),问最少标记几个点能让机器人按这个 路径 ...

  6. CF1005D Polycarp and Div 3 思维

    Polycarp and Div 3 time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  7. WebGL2系列之采样器对象

    前言 在WebGL1中,纹理的图片和采样信息都是写在纹理对象之中. 采样信息告诉GPU如何去读取贴图上图片的信息. 如果我们希望从同一个图片多次读取像素信息,但是每次读取的时候使用的过滤方式不一样, ...

  8. Go从入门到放弃

    Go语言介绍 为什么你应该学习Go语言? 开发环境准备 从零开始搭建Go语言开发环境 VS Code配置Go语言开发环境 Go语言基础 Go语言基础之变量和常量 Go语言基础之基本数据类型 Go语言基 ...

  9. Nginx 反向代理基本框架

    全局配置指令:user nginx; 模块配置段 # 事件驱动模块,提供并发响应功能events{......}# http模块,提供web请求处理,可嵌套其他重要模块http{.......#ser ...

  10. [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light

    ETH  全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...