虚拟漫游关键技术研究

时间:2022-09-02 11:45:07

虚拟漫游关键技术研究

摘 要:虚拟漫游属于虚拟现实技术,需要满足三个基本要求,虚拟现实的构想性,交互性,沉浸性。实现虚拟漫游的技术和方法多种多样,但原理却基本相同,主要围绕虚拟漫游系统功能、漫游引擎的实现、漫游的交互控制三方面的实现原理进行介绍。

关键词:虚拟漫游;漫游引擎;交互控制

中图分类号:TP391.41

1 虚拟漫游功能介绍

根据此漫游系统主要工作在桌面系统上这一原则,对其应具有的功能和结构进行重点介绍。

1.1 记录漫游路径。在虚拟场景中漫游时,有时用户想返回之前漫游的地点,如果没有记录漫游路径这一功能,用户返回时将比较困难,为此可记录下漫游过程,这个过程也就是漫游历史过程,如果用户想返回时只需重新再现之前的漫游路径就可实现漫游返回。可按照如下方法记录漫游过程:首先,根据初始角色的位置,绕Z轴的旋转角和仰角的视线;对每个命令的键盘操作的动作类型,执行系列的数量、格式等内容进行记录。总之,将整个过程记录为键盘漫游的漫游命令序列。这些命令系列就像放在堆栈里,需要播放历史记录时依次从堆栈里从上往下出栈命令系列即可。

1.2 路径漫游。在虚拟环境中漫游时,一直按着鼠标或键盘来漫游显得比较麻烦,为此,可直接在屏幕上画一条漫游路径,让角色或镜头沿着这条路径漫游,用户只需观看即可。路径漫游实现的方法比较多,普遍的设置方法是:当应用鼠标或其他设备选取漫游路径的初始点时,记下漫游路径初始点的位置、方向和高度,鼠标滑过的曲线可以分解成多个点,构成一个折线段,在漫游时只需沿着这些点组成的折线前进即可,当然,这些点需要经过平滑处理,使漫游时不至于产生太大的抖动。

1.3 线性样条路径漫游。线性样条曲线看起来像一个系列的连接控制点的直线段;通过所有控制点的曲线,看起来像一个基本的样条曲线。由于路径可以转换为样条曲线的插补值,你可以采用类似线性样条路径的方式处理。第一个点是控制点开始位置,在控制点间插入等间隔的线段,插值计算过程依次进行,如下所示:

Conat sdu=24; //帧每秒

Vector Q1,Q2,Q; //Q1,Q2是控制点,Q是Ql,Q2的插值点

Float D,T,V; //d是飞行距离,t为飞行时间,v为飞行高度

Int n; //Ql,Q2的插值点数量

D=[(Q2.x Q1.x)2+(Q2.y-Ql.y)2+(Q2.z-Ql.z)2)/2;

T=D/V;

N=T*sdu;

(I-1,I

{Q.x Ql.x+(Q2.x-Ql.x)//(n-1);

Q.y=Ql.y+I*(Q2.y-Ql.y//(n-1);

QZ=Ql.z+(Q2.z-Ql.z/(n-1);}

计算出的每一个插值点作为一个新的插值计算点,在插值过程中将第二点作为折线段的观察点,这样在漫游过程中巧妙的处理了路径漫游过程。

1.4 转角平滑处理。在应用线性样条路径播放漫游记录时可以任意设置漫游路径,但有时这条路径是一条弯曲度较大的路径。这时在漫游时镜头或角色将会发生非常明显的偏转,从而使角色或镜头看起来有很大的波动,这将影响动画播放效果,这是需要改进的。改进方法较为简单,只需在转角处插入一个插值点来消除抖动,当角色或相机转角时通过插值来消耗抖动的幅度,从而实现了转角平滑处理。

1.5 碰撞检测。三维场景中的某些对象可以穿越,在一个虚拟的环境中,有些对象是无法穿越的,例如,你不能穿越高山和高楼。漫游时对那些不能穿越的对象要采取合适的碰撞检测方法。普遍应用的碰撞检测方法是把可能会碰撞到的物体装在一个包围盒里,当角色在场景中漫游时会否发生碰撞只需计算角色和包围是否重合,如果重合说明发生了碰撞,碰撞发生后需要给出一个方向指示或是碰撞提醒,这样在漫游时使用户更加方便的漫游。

2 漫游引擎的实现

在系统中漫游时,通过对视点的改变来实现漫游功能。视点可以认为是人眼的化身,我们在现实世界中看的东西就是通过对视点的改变来看到。漫游过程实际上是一个连续移动的视点在方向或位置上的改变。

2.1 输人命令处理。虚拟环境中的漫游也和现实世界的漫游类似,有时需要向左转,有时需要向右转,向前进,后退,向上,向下等。如果系统是左手坐标系的z轴向上,Z值表示场景的高度,如果是左右转动则顶视图视点保持不变,只需在左右视图中改变视线方向。如果是后退则是视线向相反的方向移动一定的距离(行驶速度),上升、下降时只是增加、减少视点高度坐标值。通过应用线性代数里的空间向量分解运算方法,可以计算出一个新视点,这个新的视点包括位置坐标以及方向信息。

2.2 实时漫游的数据调度。大规模场景漫游的预处理阶段的判断,这是必要的,有利于提高显示速度。利用人眼的原理,较远处的对象暂时看不到不显示出来。可采用分割区域的方法进行遮挡判断。通过计算视点与远处目标的距离计算是否在可视化范围内,如果在可视范围内则计算需要显示远处景物的方向和大小,从虚拟场景中提取需要显示的数据。对需要显示的数据块建设包围盒,可确定该视点能看到的对象,如果包括在可见整个包围盒的可见体边界框内,则是作为调度候选对象,以确定可以根据当前视点参数的候选对象是否能够满足计算候选对象,然后加载相应的候选对象,地形数据到内存中,并建立相应的可见对象数据块的集合来显示数据。

3 漫游的交互控制

建立虚拟环境实现场景的漫游,必须控制虚拟场景的视点,主要是通过各种输入设备来控制。目前,有三种类型的方法来实现控制视点:

3.1 键盘漫游。在虚拟环境中漫游时,一直点击鼠标或键盘来漫游显得比较麻烦。虽然有路径漫游、通过鼠标绘制漫游路径等较为方便的漫游方式,但键盘漫游仍然是一个基本功能,需要保留。现今大多数虚拟现实系统都是窗口式屏幕显示方式,如果取消键盘漫游则降低了虚拟现实的沉浸体验效果,并且导航功能比较固定,没有键盘漫游这种自由漫游的感觉。利用键盘漫游是很有必要的。

3.2 游戏杆、方向盘漫游。在一些虚拟游戏设计中,引入了游戏杆方向盘等互动设备,这增加了虚拟现实的沉浸性感受,例如在模拟驾驶游戏中,增加方向盘等互动设备能明显的沉浸在虚拟驾驶的环境中。这些交互设备是游戏中广泛采用的设备,用户可以像自己驾驶汽车一样在虚拟场景中行驶,应用游戏杆自由的控制角色。

3.3 基于手势的交互漫游。肢体语言是现实世界中人们常用的交流方式,在平常生活中握手,拥抱,再见等手势已经成为我们日常生活的一部分。如果在虚拟现实中增加类似的肢体语言,将增加虚拟现实的交互性。如爬行,握手,指示等动作,通过手势就可以完成一定的交互任务。从最初运动到最后的固定都有一定的规律。鼠标和笔的手势输入方式适合于小型化和便携化场景,发展手势输入也有很多技术上的困难,但还处于研究阶段。手势交互是一个理想的选择,依靠数据手套、操作杆等设备在虚拟环境中漫游是一个不错的体验方式,但这方面的费用较高,普通用户可能无法承受,也觉得没必要,很多时候我们只需要使用一个标准的交互系统来体验虚拟现实世界就足够了。

4 结束语

创建虚拟漫游系统时,通过以上原理,实现了用户能够自由地在虚拟环境中漫游,通过应用各种输入设备改变视觉上的位置,甚至能感受到虚拟系统中的对象,最终达到身临其境的虚拟漫游体验效果。

参考文献:

[1]刘航,王积忠,王春水.虚拟校园三维仿真系统关键技术研究[J].计算机工程与设计,2010.

[2]张菁,张天驰,陈怀友.虚拟现实技术及其应用(第一版)[M].北京:清华大学出版社,2011.

[3]Allen Sherrod.Directx游戏开发终极指南(美)(第一版)[M].北京:清华大学出版社,2008.

[4]何援军.计算机图形学(第一版)[M].北京:机械工业出版社,2009.

[5]邱有春.虚拟校园场景建模和漫游系统实现[D].电子科技大学,2009.

作者简介:赵守凯(1981-),男,讲师,工学硕士,研究方向:图像处理与模式识别、虚拟现实技术。

作者单位:湛江师范学院 基础教育学院,广东湛江 524300

基金项目:湛江师范学院基础教育学院项目(项目编号:xm1107)。

上一篇:浅谈企业并购财务风险的控制 下一篇:关于高校机房电脑日常维护及发展分析