虚拟旅游系统中交互技术的研究
2013-09-22刘学超
刘学超
虚拟旅游系统中交互技术的研究
刘学超
(淮北职业技术学院 计算机系,安徽 淮北 235000)
随着信息技术的快速发展,虚拟现实技术越来越多地应用于旅游实训教学,对旅游教学起到了很好的辅助作用.交互是虚拟旅游的重要组成部分,它的好坏直接关系着整个系统是否成功.为了使虚拟旅游系统更具真实感,将层次包围盒法和空间剖分法相结合,使用层次碰撞检测来加强人与环境的交互.
虚拟旅游;交互;碰撞检测
虚拟旅游是虚拟现实技术的一个重要应用领域,它集虚拟现实技术的优点于一身,使用者只需通过鼠标、数据手套、立体眼镜、触摸屏等输入设备就可以与虚拟环境中的实体进行互动,从不同角度观察虚拟环境中的物体,也可以对其中的对象进行操作和使用,使用户产生一种身临其境的感觉.因此交互性能的好坏是衡量虚拟旅游系统的一个重要指标.
1 虚拟旅游的交互方式
按照交互实现方式分类,我们可以把虚拟旅游划分为以下4种方式:
1) 自动漫游:即是按照开发人员事先设计的最佳路径与最佳视角,对整个系统进行游览.相对来说,这种方式易于实现,用户不会迷失在三维场景当中,类似于实际旅游中在导游的带领下完成指定线路的游览.
2) 视点记录式漫游:即由用户自己设定一条游览路径,然后按照设定的路径来进行游览.这种方式较上一种来说用户自由度有所增强.
3) 有目的漫游:即用户确定好出发点和目的地,系统按照用户的要求进行计算,然后生成一条最短路径并按该路径进行自动漫游.
4) 交互式漫游:即用户使用鼠标、操纵杆或键盘等输入设备自主的控制游览方向、调整观察角度,选择游览路径.这种方式实现最为复杂,涉及方面较多.
在交互式漫游中,浏览器一般会为浏览者创建一个替身,浏览器中的一切景物都是以替身的观察视角来呈现的.在X3D中使用NavigationInfo导航节点来控制替身的操作,例如移动、飞行、行走等一些基本动作,也可以和虚拟世界进行交流和感知.一般可以使用NavigationInfo节点生成一个不可见的替身,通过它限定浏览者的活动范围、浏览方式等.上述几种方式在虚拟旅游中应该综合应用,相互结合,发挥其优点.
2 虚拟环境中碰撞检测的研究
为了增强真实性、增加沉浸感,虚拟旅游系统不仅要保证用户能从视觉上如实地看到虚拟环境中的对象,同时也要能够身临其境的与其进行交互.如用户进行触摸、抓取动作时,虚拟系统中的事物要做出相应的反应.这就要求系统应该及时准确的检测出这些碰撞,并给出对应的碰撞变化.使用NavigationInfo节点创建的替身可以进行碰撞检测,常用的碰撞检测方法有层次包围盒法和空间剖分法.实际上,在虚拟旅游系统中,大部分的对象碰撞检测无需太过精确,我们知道两个或多人物体想要发生碰撞,至少其中一个物体是运动状态的,因此我们只要对运动的物体进行碰撞检测即可,这就大大降低了工作量和工作难度.本系统将2种常用的方法相结合,使用层次碰撞检测的方法,将整个过程分为预处理、全局检测和局部检测3个阶段.
2.1 预处理阶段
这一阶段的工作是为虚拟旅游系统中的对象构造层次包围盒树,为碰撞检测打好基础.具体方法:每个虚拟对象元素最外层采用包围球,以下各层采用轴对齐包围盒.自顶向下地构造二叉树.
2.2 全局检测阶段
虚拟旅游系统中的场景、对象非常之多,我们可能利用空间剖分法对场景进行划分.因为对于一个运动的物体来说,在某一个时间段内,它只会与它邻近的物体发生碰撞.这样就大大降低了碰撞检测的次数.具体做法:使用均匀剖分法把虚拟场景划分为一个*的矩阵,矩阵中的元素对应场景中的任一单位格.场景中的每一个对象看作一个质点,该质点的坐标就是该对象包围球的球心坐标.使用这种方法,将场景的所有对象都归入对应的单元格中.这样,确定了一个单元格之后,该单元格中的所有对象也被随之确定.对于一个运动物体来说,根据该对象的坐标就可以确定它所处的单元格,根据矩阵中元素之间的关系,再确定与之相邻的单元格,进而确定该运动物体可能会与哪些物体发生碰撞.
2.3 局部检测阶段
通过空间剖分方法我们将大多数远处的碰撞对象已经过滤掉,局部检测的主要工作就是对运动对象附近的物体进行碰撞检测.局部检测阶段分为粗略检测层和精确检测层两个部分.在粗略检测层中,我们知道虚拟场景中运动对象的速度一般不会太快,在某一很短的时间片内,只有与之特别贴近的极少物体才会与之产生碰撞,而该运动对象所处单元格及邻近单元格的大多数物体是不必发生碰撞的.因此,我们为该运动对象建立一个碰撞检测空间如下图1所示,即在某一时间片内那些特别贴近并可能发生碰撞的物体的集合,将碰撞检测范围进一步缩小.接下来,我们将进入碰撞检测空间的对象的层次包围盒树的信息调入内存,进行精确的碰撞检测,首先检查两物体最外层的包围球是否相交,如果不相交,刚碰撞未发生.若相交,则进一步对两物体的层次包围盒二叉树进行相交测试.
图1 碰撞检测空间示意图
3 编程交互方法
在创建虚拟场景时,我们也可以使用Script节点和外部程序接口EAI来实现功能复杂的交互.
3.1 内部Script节点
Script节点的基本功能是通过eventIn事件来接收其他节点发来的事件信息,在节点内部使用程序设计语言对其进行处理计算,然后再通过eventOut事件把信息回传给Script节点,使节点发生预期的变化效果.
Script节点的url域中定义一个URL列表,该列表的URL值指定程序设计语言.一般常用Java或JavaScript语言.Script节点将程序设计语言和场景中的传感器、插补器联系起来.通过程序设计语言控制传感器和插补器,实现场景中的交互.
3.2 外部编程接口EAI方法
EAI定义了针对X3D的Java类,通过创建Java小程序接收和发送虚拟场景中的节点的事件信息,达到用户与虚拟场景进行沟通交互的目的.使用EAI方法创建的程序段可以与虚拟场景放在同一Web页面中,Java applet与浏览器插件互相通信,使用户真正的掌控虚拟场景,增强用户与场景的交互程度.
本文详细地阐述虚拟旅游系统中交互技术的实现方法.虚拟旅游是现代计算机技术的全新产物,前景非常广阔,它的成熟发展必将引领一种新的旅游风尚.
[1] 韩长红.虚拟旅游景区漫游系统的研究[D].西安:西安科技大学,2011:27-31.
[2] 彭飞.虚拟旅游应用与发展[J].商场现代化,2010(3):101-103.
[3] 孙家广.计算机图形学[M].北京:清华大学出版社,1998:245-247.
[4] 高尚宇.虚于GIS的“数字校园”信息系统的设计与实现[D].哈尔滨:哈尔滨工程大学,2003:48-52.
[5] 宋淑彩,赵巍.基于Java的VRML虚拟场景人机交互的实现[J].河北建筑工程学院学报,2006,26(1):23-28.
[6] 李振波,孟祥旭,向辉.复杂虚拟场景构造及交互漫游实现研究[J].系统仿真学报,2002,29(8):1183-1187.
The Research on Interactive Technology in Virtual Tourism System
LIU Xue-chao
(Department of Computer Science, Huaibei Vocational and Technical College, Huaibei, Anhui 235000, China)
With the development of information technology, VR technology, as a good assistant to the tourism teaching, is widely used in tourism training system. Interaction is an important part of virtual tourism. It will decide whether the whole system is successful or not. In order to make the virtual tourism system more realistic, we combine the hierarchical bounding box method and the spatial profile method and use hierarchical collision detection to enhance the interaction between human beings and the environment.
virtual tour; interaction; hierarchical collision detection
(责任编校:李建明 英文校对:李玉玲)
TP391.9
A
1673-2065(2013)04-0016-03
2013-02-20
安徽省教育厅质量工程项目(2012jyxm739)
刘学超(1980-),女,满族,辽宁锦州人,淮北职业技术学院计算机系讲师,理学硕士.