在2001年CHI发表的论文中1,Tan等人提出了一种对3D漫游的分类方法。

当时关于3D漫游(3D Navigation)的研究主要分为两种:一种是发掘有关漫游的认知原则,一种是开发一些具体的漫游技术,用于解决某些特定场景的问题。他们总结了相关的研究如下:

认知原则:

Thorndyke & Hayes-Roth等人:地图和自由探索所获得的空间信息的不同之处;

Darken el al:大型虚拟环境中的认知和设计原则;

Furnas:通过大型数据结构,探索有效的漫游的“可穿越性(traversability)”和“可漫游性(navigability)”;

Bowman:对虚拟漫游的运动方面进行的上层分类;

漫游技术:

-2D:(常常以缩放的方式帮助用户进行漫游)

Masui:以在每个视区内改变搜索区域的方式进行漫游;

Bederson:Pad++,以缩放为主要方式进行漫游;

Igarashi:基于滚动速率的自动缩放,可在滚动速度增加时为用户提供全局文档视图;

Tan等人基于Igarashi的研究,解决了两个问题:如何让用户准确的从全局视图转换到特定的目标区域;还有如何让用户查看某个特定对象。

- 3D:

(同时拥有多个坐标视图)

Fukatsu:同时提供给用户鸟瞰全局图和局部视图;

Stoakley:类似,不过是提供微型的3D世界,而不是鸟瞰图;

Robinett:用缩放的方法让用户快速飞到不同的区域;

Ware:提出“cyclopean scaling”和根据深度调节的飞行,通过物体的距离调节飞行速度。

Elvins:创建3D略缩图(一个微型的虚拟世界)来帮助用户寻找地标;

(扭曲虚拟世界)

鱼眼视图;

透视墙;

Document Lens;

Desert Fog;

Tan等人提出了一个他们认为的初步漫游分类结构,并且根据这个结构来探索关于漫游的设计空间。也就是说,通过画出纵横格子找出所有的可能性,当然有些格子已经被填满了,哪些竟然还没有填满,那没有被填满的格子,就是被遗漏的、值得思考的设计空间。通过这样的方式来发掘新的漫游技术,然后发掘的新技术反过来又启发完善和扩展原本的分类结构。以这样的方式来帮助3D漫游的研究。

Tan等人提出的分类:

* 任务:根据漫游的目的进行分类。

- 探索 Explore:获取勘察信息

- 搜索 Search:确定目标位置,并且移动到目标

- 检查 Inspect:稳定在某个视角观察物体

* 移动控制(Travel Control): 为了实现以上目的的一些解决方案。

- 移动(Travel)具体指的是:虚拟环境中的视角改变,这个视角信息包括:1、位置;2、朝向;3、速度。

- 对于以上三个方面,设计者都必须提供相应的函数来控制他们的值。这个函数根据这几个方面来确定:1、环境状态;2、用户的状态;3、以上两种的综合状态。

* 用户界面

硬件/输入决定了系统给用户呈现的affordance和用户能的控制自由度(DOF)。

设计者要在硬件限制下,选择一个直观的映射方式,将输入和镜头控制联系起来。通常来讲,输入的自由度都是不足的,必须要设置不同的模式来用于不同场景下视角的控制。如果系统能够有效的识别用户的目的,那就可以做到自动地来根据输入设置模式,否则用户就要自己来选择模式。

P.S. 但是我认为,不一定是根据任务/目的来决定运动的模式,可能是根据环境来决定的,比如飞得高的时候想要飞得快一些,不然由于环境变化太慢(因为远),而导致用户觉得自己运动太慢(其实可能并没有很慢)。

除了输入,输出也是设计者必须要关注的。这一点经常被设计者忽略,但是其实系统给用户的输出(反馈)方式,和是否给用户带来了沉浸感,对于用户是否能有效地完成漫游任务有着极大的影响。所以作者认为,设计者的目标就是要让输出带给用户准确的信息:及时、直观、信息丰富。


1 Tan, Desney S., George G. Robertson, and Mary Czerwinski. “Exploring 3D Navigation: Combining Speed-Coupled Flying with Orbiting.” In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 418–425. CHI ’01. New York, NY, USA: ACM, 2001. https://doi.org/10.1145/365024.365307.

3D漫游的分类 3D Navigation Taxonomy的更多相关文章

  1. OpenGL实现3D漫游的理解

    这篇文章主要参考以下两篇博客: 推导相机变换矩阵 OpenGL系列教程之五:OpenGL矩阵类 上面的第一篇是理论的讲解,第二篇有实例代码,我在后面会给出自己写的主函数,依赖的类可以从第二篇参考中下载 ...

  2. 3DTools TrackballDecorator实现3D漫游

    原文:3DTools TrackballDecorator实现3D漫游 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/art ...

  3. 物联网3D,物业基础设施3D运维,使用webgl(three.js)与物联网设备结合案例。搭建智慧楼宇,智慧园区,3D园区、3D物业设施,3D楼宇管理系统——第八课

    写在前面的废话: 很久没有更新文章了,这段时间一直忙于项目落地,虽然很忙,但是感觉没有总结,没有提炼的日子,总是让人感觉飘飘忽忽的. 所幸放下一些事,抽出一些时间,把近期的项目做一些整理与记录.也算是 ...

  4. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  5. 1-Highcharts 3D图之普通3D柱状图与带空值

    <!DOCTYPE> <html lang='en'> <head> <title>1-Highcharts 3D图之普通3D柱状图与带空值</t ...

  6. 3d模型 手办制作 3d model manual production

    3d模型 手办制作 3d model manual production 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313 ...

  7. 使用webgl(three.js)搭建3D智慧园区、3D大屏,3D楼宇,智慧灯杆三维展示,3D灯杆,web版3D,bim管理系统——第六课

    前言: 今年是建国70周年,爱国热情异常的高涨,为自己身在如此安全.蓬勃发展的国家深感自豪. 我们公司楼下为庆祝国庆,拉了这样的标语,每个人做好一件事,就组成了我们强大的祖国. 看到这句话,深有感触, ...

  8. 单图像三维重建、2D到3D风格迁移和3D DeepDream

    作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...

  9. 3D深色金属哥特3D项目工具小图标icon高清设计素材

    3D深色金属哥特3D项目工具小图标icon高清设计素材

随机推荐

  1. c# autofac结合WebApi的使用

    一.下载相关类库引用 install-package Autofac install-package Autofac.Mvc4 install-package Autofac.WebApi2 二.配置 ...

  2. Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled.

    Solution: 用管理员身份,在cmd命令行输入: netsh advfirewall set global StatefulFTP disable 会关闭防火墙,从而解决问题.

  3. CF Edu54 E. Vasya and a Tree DFS+树状数组

    Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作.dfs这颗树,同时以 ...

  4. There is No Alternative CSU - 2097 最小生成树

    Description ICPC (Isles of Coral Park City) consist of several beautiful islands. The citizens reque ...

  5. 【Distributed】缓存技术

    一.缓存概述 1.1 缓存技术分类 1.2 缓存框架分类 1.3 Session理解的误区 二.基于Map集合实现本地缓存 2.1 定义Map缓存工具类 2.2 使用案例 三.Ehcache 缓存框架 ...

  6. docker 搭建小型的node开发环境。

    选择daocloud的镜像源----快.不多说 镜像的准备: docker pull docker.io/node 下载node镜像 docker pull daocloud.io/nginx 下载n ...

  7. 一些数组排序算法的简单实现(冒泡、插入、希尔、归并和qsort)

    #include <stdlib.h> #include <string.h> #include "sort.h" //冒泡排序 int bubbleSor ...

  8. 并发编程之线程创建到销毁、常用API

    在前面一篇介绍了线程的生命周期[并发编程之多线程概念],在本篇将正式介绍如何创建.中断线程,以及线程是如何销毁的.最后,我们会讲解一些常见的线程API. 线程创建 Java 5 以前,实现线程有两种方 ...

  9. STL中nth_element的用法

    nth_element函数原型有四个,详细我就不一一累赘了,我们就用最普通的用法寻找第k位置的元素. 函数用法为:nth_element(first,kth,end). first,last 第一个和 ...

  10. mysql命令行乱码解决办法

     解决办法: 修改mysql的配置文件my.ini,打开my.ini找到default-charactor-set,改为utf8. 进入命令行: show variables like'%char%' ...