简介:本文从虚拟现实交互式漫游的实现过程出发,通过Vega软件实现交互式漫游功能。关键词虚拟现实;Vega;交互式漫游中图分类号O343.2文献标识码A文章编号1007-9599(2010)04-0000-01ImplementationofInteractiveWalkthroughFunctioninVirtualRealitySceneLuHongyan(ArmedPolicyEngineeringCollege,Xian710086,China)AbstractThepaperintroducestheimplementofinteractivewalkthrough,andachievethefunctionsofInteractivewalkthroughbyVega.KeywordsVirtualreality;Vega;Interactivewalkthrough虚拟现实场景中常见的交互方式有固定式漫游和交互式漫游两种。交互式漫游方式比固定路径漫游灵活,真实感更强。一、交互式漫游的实现在漫游系统中,用户通过Observer的视角置身于虚拟环境中,通过鼠标和键盘控制视点和行动路线。在这种交互情况下,不需要进行任何的预处理过程,场景分析和路径计算都是在漫游的过程中进行的。交互式漫游的视点是由用户自定义的,有很大的灵活性。如果将Observer与Walk运动模式绑定在一起,就可以用鼠标控制其前进、后退、转向和四处观望的视觉效应。但是作为一个在环境中的观察者来说,能够做到的远不止这些。他可以抬起头看看天空,也可以低下头看看绿地花草。但是,在Vega中却没有一种运动模式符合需要。这就需要编程定义自己的运动模式。在自定义的运动模式中,主要实现10个漫游动作前进、后退、左移、右移、上升、下降、仰视、俯视、停止和复位。表1鼠标按键定义控制方式相应功能鼠标左键运动加速鼠标右键运动减速上移鼠标向前运动下移鼠标向后运动鼠标左键+中键视点升高鼠标右键+中键视点降低左移鼠标向左运动右移鼠标向右运动鼠标中键运动停止鼠标左键+右键+中键运动复位表2键盘按键功能定义按键相应功能向上方向键运动加速向下方向键运动减速向左方向键向左运动向右方向键向右运动E向前运动C向后运动I视点升高M视点降低S运动停止R运动复位在本系统中,主要以鼠标、键盘作为系统的输入设备,实现与虚拟场景的互动。如表1、表2所示,对鼠标、键盘相应的按键功能进行定义。实现自定义模式可以分以下几个步骤Step1使用Vega提供的vgMotionCallbackStruct函数编写自定义的用户运动模型(通过回调函数实现运动模型)。Step2vgMotRegister函数向系统注册给运动模型、安装模型实现回调函数;Step3将运动事件属性值VGMOT_MODEL设为用户自定义的模型VGMOT_USER1,进入主循环。Step4处理运动事件(在回调函数中实现)。二、查询功能的设计对模型对象实现信息查询功能主要是基于对三维目标的选择和判别。通过鼠标点取窗口中任意一个对象,即可查询该对象的属性,如同在二维地图窗口中一样方便。判断物体是否被选择,拾取技术是关键。模型对象的拾取在Vega中,模型对象的拾取是通过vgPicker提供的类获取鼠标的位置来实现的。vgPicker类提供了函数对角色对象(vgPlayer)、模型对象(vgObject)、模型部件(vgPart)以及pfGeodes和pfGeosets节点等场景元素进行拾取。完成拾取操作有以下几个步骤Step1将要拾取的物体作为一个模型对象。Step2通过函数vgPickerScene(),vgPickerChannel()设置vgPicker作用的场景和通道;设置vgPickerHighLightColor()函数,选择物体显示的颜色。Step3通过vgPickerClampIsector(),vgPickerIsector()函数显示设置vgPicker的相交矢量。Step4通过vgProp()函数启用vgPicker。Step5将鼠标中键设为拾取物体的键。Step6设置物体mask掩码与vgPicker相一致。vgPicker不能操作静态对象,对于静态对象,使用vgPicker只能间接获取其所在的模型数据库vgDataSet节点等,不能获取对象本身vgObject节点。这时必须采用辅助工具进行操作,常见的方法是采用包围盒43。包围盒拾取算法,如图1所示图1包围盒拾取算法流程图在拾取物体后的物体显示本建筑的名称、编号和建造时间,在主要建筑,如办公楼等,还可以显示每层楼的信息。查询功能的实现方法在本系统中可以通过基于对象名称的拾取方法实现三维地物的查询功能。实现方法如下Step1在Creator中以组(group)的形式为对象命名,作为被查询的关键字。Step2以模型对象名称作为关键字在Access中建立建筑的属性信息表,用ADO连接。Step3创建一个vgPicker对象,在postConfig中设置捕捉对象的类型为VG_OBJECT。Step4在postFrame中用vgMouse实现鼠标点选,调用vgGetPickerPickedProcessing执行捕捉,若成功调用vgGetPickerPickedObject返回捕捉对象的指针,再用vgGetName获取捕捉对象关键字。Step5在属性表中根据关键字对应的记录显示当前建筑物的信息。当选中目标后,获得目标的标识符,再运用SQL语句从后台数据集中查询与标识符对应的实体属性信息。三、结论本文主要介绍交互式漫游的实现过程,介绍了交互式功能的实现和查询功能的设计。在完成漫游的基础上还要进一步完成碰撞检测这一方面的内容。参考文献1徐诚.虚拟校园漫游系统的研究.硕士研究生学位论文.武汉华中师范大学,20062肖书立,李世其,王俊峰.基于广义包围盒的交互操作在Vega环境中的应用J.计算机应用,2006,2.500-501