3D漫游的分类 3D Navigation Taxonomy
在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的更多相关文章
- OpenGL实现3D漫游的理解
这篇文章主要参考以下两篇博客: 推导相机变换矩阵 OpenGL系列教程之五:OpenGL矩阵类 上面的第一篇是理论的讲解,第二篇有实例代码,我在后面会给出自己写的主函数,依赖的类可以从第二篇参考中下载 ...
- 3DTools TrackballDecorator实现3D漫游
原文:3DTools TrackballDecorator实现3D漫游 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/art ...
- 物联网3D,物业基础设施3D运维,使用webgl(three.js)与物联网设备结合案例。搭建智慧楼宇,智慧园区,3D园区、3D物业设施,3D楼宇管理系统——第八课
写在前面的废话: 很久没有更新文章了,这段时间一直忙于项目落地,虽然很忙,但是感觉没有总结,没有提炼的日子,总是让人感觉飘飘忽忽的. 所幸放下一些事,抽出一些时间,把近期的项目做一些整理与记录.也算是 ...
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- 1-Highcharts 3D图之普通3D柱状图与带空值
<!DOCTYPE> <html lang='en'> <head> <title>1-Highcharts 3D图之普通3D柱状图与带空值</t ...
- 3d模型 手办制作 3d model manual production
3d模型 手办制作 3d model manual production 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313 ...
- 使用webgl(three.js)搭建3D智慧园区、3D大屏,3D楼宇,智慧灯杆三维展示,3D灯杆,web版3D,bim管理系统——第六课
前言: 今年是建国70周年,爱国热情异常的高涨,为自己身在如此安全.蓬勃发展的国家深感自豪. 我们公司楼下为庆祝国庆,拉了这样的标语,每个人做好一件事,就组成了我们强大的祖国. 看到这句话,深有感触, ...
- 单图像三维重建、2D到3D风格迁移和3D DeepDream
作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...
- 3D深色金属哥特3D项目工具小图标icon高清设计素材
3D深色金属哥特3D项目工具小图标icon高清设计素材
随机推荐
- c# autofac结合WebApi的使用
一.下载相关类库引用 install-package Autofac install-package Autofac.Mvc4 install-package Autofac.WebApi2 二.配置 ...
- Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled.
Solution: 用管理员身份,在cmd命令行输入: netsh advfirewall set global StatefulFTP disable 会关闭防火墙,从而解决问题.
- CF Edu54 E. Vasya and a Tree DFS+树状数组
Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作.dfs这颗树,同时以 ...
- There is No Alternative CSU - 2097 最小生成树
Description ICPC (Isles of Coral Park City) consist of several beautiful islands. The citizens reque ...
- 【Distributed】缓存技术
一.缓存概述 1.1 缓存技术分类 1.2 缓存框架分类 1.3 Session理解的误区 二.基于Map集合实现本地缓存 2.1 定义Map缓存工具类 2.2 使用案例 三.Ehcache 缓存框架 ...
- docker 搭建小型的node开发环境。
选择daocloud的镜像源----快.不多说 镜像的准备: docker pull docker.io/node 下载node镜像 docker pull daocloud.io/nginx 下载n ...
- 一些数组排序算法的简单实现(冒泡、插入、希尔、归并和qsort)
#include <stdlib.h> #include <string.h> #include "sort.h" //冒泡排序 int bubbleSor ...
- 并发编程之线程创建到销毁、常用API
在前面一篇介绍了线程的生命周期[并发编程之多线程概念],在本篇将正式介绍如何创建.中断线程,以及线程是如何销毁的.最后,我们会讲解一些常见的线程API. 线程创建 Java 5 以前,实现线程有两种方 ...
- STL中nth_element的用法
nth_element函数原型有四个,详细我就不一一累赘了,我们就用最普通的用法寻找第k位置的元素. 函数用法为:nth_element(first,kth,end). first,last 第一个和 ...
- mysql命令行乱码解决办法
解决办法: 修改mysql的配置文件my.ini,打开my.ini找到default-charactor-set,改为utf8. 进入命令行: show variables like'%char%' ...