我们在3D虚拟环境(Virtual Environment, VE)中需要完成的操作有3种:选择物体,操纵(改变)物体,移位(locomotion)。这里来总结一下3D VE中的选择技术的种类。本文根据Argelaguet和Andujar于2013年发表的survey1,以及相关文献总结。

Ryan,Kopper和Bowan提出的分类2(以用户指出物体的方式分类)

1. Virtual Hand 虚拟手

像现实中一样,用虚拟手来接触VE中的物体来做选择。

2. Pointing 隔空指物

不直接接触物体,隔空指物来做选择。一般是raycasting,从手上发射一条射线指向物体,也有利用视线来选择的。

3. Occlusion 三点一线

眼睛发射射线,但是用手来控制射线的方向。眼、手和物体在同一直线上时选择该物体。

4. Volume-Based 创造体积

让远处的物体或者小的物体更好选择,给物体一个额外的选择范围(虚拟体积)。这种就需要解决一个问题,就是空间内有多个物体时,虚拟体积重合了,如何做选择的问题。现有的方法有,选择接近选择射线的,选择离用户近的,以及列出独立的物体列表进行二次选择。

5. Indirect 非直接选择

用一些其他方式来做非直接选择,比如设计好按某个按钮,某物体就被选择。

我们可以看出,这些选择分类并不是互斥的,比如虚拟手和隔空指物都可以和创造体积的方式结合起来。

Poupyrev和Ichikawa提出的分类3(通过中心性进行分类)

这是二人在1999年发表的论文中提出的分类。

1. Exocentric 非自我中心

直接理解比较抽象,举个例子吧,一种微缩世界(World-In-Miniature)的选择技术就是属于这一类。用户从上帝视角俯视面前的微缩世界副本,然后在这个副本中选择想要的物体,选中后本来的世界中的物体也会被选中。这种把用户脱离出选择空间的方式就是非自我中心的方式。按照Poupyrev和Ichikawa的分类,该类包含微缩世界技术(World-In-Miniature)和缩放世界抓取技术(Scaled-world Grab)。

2. Egocentric 自我中心

这一条就是和上面相对的,以用户自我中心来进行的选择。包括虚拟手(virtual hand)和虚拟指针(virtual pointer)。其中虚拟手包括了标准的虚拟手和可以延伸的虚拟手(著名的有如go-go技术4),虚拟指针包含了射线(ray-casting)等技术。


1 Argelaguet, F., & Andujar, C. (2013). A survey of 3D object selection techniques for virtual environments. Computers & Graphics37(3), 121-136.

2 McMahan, R., Kopper, R., & Bowman, D. (2014). Principles for Designing Effective 3D Interaction Techniques. In K. Hale & K. Stanney, Handbook of Virtual Environments (Vol. 20143245, pp. 285–311). CRC Press. https://doi.org/10.1201/b17360-16

3 Poupyrev, I., & Ichikawa, T. (1999). Manipulating objects in virtual worlds: Categorization and empirical evaluation of interaction techniques. Journal of Visual Languages & Computing10(1), 19-35.

4 Poupyrev, I., Billinghurst, M., Weghorst, S., & Ichikawa, T. (1996). The Go-go Interaction Technique: Non-linear Mapping for Direct Manipulation in VR. In Proceedings of the 9th Annual ACM Symposium on User Interface Software and Technology (pp. 79–80). New York, NY, USA: ACM. https://doi.org/10.1145/237091.237102

3D虚拟环境中的选择技术分类的更多相关文章

  1. [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中 ...

  2. 3D建模软件的选择(UG,Solidworks,ProE)

    转自:3D建模软件的选择(UG,Solidworks,ProE) 自述 咱是一个码农,和web.软件.控制台打交道太多了,很想玩玩炫的东西,于是学了点点PS,结果发现完全没有美术细胞TT.最近有碰到对 ...

  3. WebGL和ThreeJs学习6--射线法确定3D空间中所选物体

    一.在 threejs 中如何确定下图3D空间中鼠标点击位置的 object 对象? 二.射线法确定步骤及代码 //Three.js提供一个射线类Raycaster来拾取场景里面的物体.更方便的使用鼠 ...

  4. VR技术在数据中心3D机房中的应用(上)

    VR技术在数据中心3D机房中的应用(上)   前两天跟朋友A吃饭,吃着吃着就说到了VR.近几年来,VR技术越来越火,感觉能跟VR沾点边的都特别高大上,朋友A也是,一提到VR,就怎么都掩盖不住他发自肺腑 ...

  5. Visual Studio工具栏中无法选择调试设备

    Visual Studio工具栏中无法选择调试设备 在Visual Studio工具栏中,默认显示已经识别的设备.用户可以从中选择对应的设备,进行调试和部署App.但是由于误操作,可能导致该选项丢失. ...

  6. VIM 中鼠标选择不选中行号

    VIM 中鼠标选择不选中行号 在Vim中,我们一般会使用 :set nu 打开行号开关. 但是打开行号后,有个弊端,那就是在用鼠标进行选择的时候,会将前面的行号也一起进行拷贝了.但是在gVim中进行选 ...

  7. 在虚拟环境中安装pygame

    http://www.pygame.org/wiki/CompileUbuntu#Python%203.x%20into%20virtual%20environment 先安装依赖: ᐅ sudo a ...

  8. ArcGIS Engine中如何获取Map中已经选择的要素呢

    1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的FeatureSelection可不是IFeatureSelectio ...

  9. CSS3之3D效果中的transform运用

    css3中添加了很多新的标签 属性 描述 css transform 向元素应用 2D 或 3D 转换. 3 transform-origin 允许你改变被转换元素的位置. 3 transform-s ...

随机推荐

  1. netcore 中的动态代理与RPC实现(微服务专题)

    一.关于RPC的调用 1. 调用者(客户端Client)以本地调用的方式发起调用: 2. Client stub(客户端存根)收到调用后,负责将被调用的方法名.参数等打包编码成特定格式的能进行网络传输 ...

  2. ubuntu使用yum安装软件问题

    其实ubuntu是不应该用yum来管理软件安装的,只是后来才发现的,这里记录一下尝试的过程. 一开始是想把windows桌面上的文件拖到xshell登录的ubuntu的目录中,但是没成功,参考http ...

  3. [python]通过微信公众号“Python程序员”,编写python代码

    今天发现微信公众号中,居然可以编写python代码,很是惊喜,觉得蛮有趣的. 步骤如下: 1.关注微信公众号“Python程序员” 2.关注成功后,点击右下角的“潘多拉”->"Pyth ...

  4. CF #541 E. String Multiplication

    题意: 给定一系列字符串,每次都是后一个字符串和前面的融合,这个融合操作就是原来的串分成独立的,然后把新串插入到这些空格中.问最后,最长的相同连续的长度. 思路: 这道题可以贪心的来,我们压缩状态,记 ...

  5. Codeforces Round #480 (Div. 2)980C Posterized+分组类贪心

    传送门:http://codeforces.com/contest/980/problem/C 参考 题意:给定n个数字,每个数在0~256间,现在给至多连续k的数分为一组,给出字典序最小的答案. 思 ...

  6. ACM-ICPC 2018 徐州赛区(网络赛)

    目录 A. Hard to prepare B.BE, GE or NE F.Features Track G.Trace H.Ryuji doesn't want to study I.Charac ...

  7. HDU 1018 Big Number 斯特林公式

    Big Number 题意:算n!的位数. 题解:对于一个数来算位数我们一般都是用while去进行计算,但是n!这个数太大了,我们做不到先算出来在去用while算位数. while(a){ cnt++ ...

  8. 基于WFST的语音识别解码器

    学习语音识别有些时间了.老板要求我们基于Kaldi搭一个语音识别系统,在设备上通过MIC讲话,连着设备的PC的console上就能基本实时显示出讲话的内容.由于我们都是小白,刚开始可以要求低些,就用传 ...

  9. Nginx简介及配置文件详解

    http://blog.csdn.net/hzsunshine/article/details/63687054 一 Nginx简介    Nginx是一款开源代码的高性能HTTP服务器和反向代理服务 ...

  10. 【Redis】SpringBoot+Redis+Ehcache实现二级缓存

    一.概述 1.1 一些疑惑? 1.2 场景 1.3 一级缓存.两级缓存的产生 1.4 流程分析 二.项目搭建 一.概述 1.1 一些疑惑? Ehcache本地内存 Redis 分布式缓存可以共享 一级 ...