基于游戏引擎的虚拟漫游系统张明敏杨皓然潘志庚浙江大学CAD&CG国家重点实验室,杭州310058 引言近年来,虚拟环境逐渐成为计算机图形学研究的热点问题。它具有多感知性、沉浸性、 交互性、构想性等主要特征。随着计算机硬件的飞速发展以及成本的大大降低,这项技术在 医学、建筑、制造、娱乐、电子竞技、军事等领域获得了广泛的应用。虚拟环境漫游是虚拟 现实应用的基本功能之一。构造一个虚拟环境漫游系统,就是利用高性能计算机软硬件创建 使参与者具有身临其境的沉浸感和良好的人机交互能力,有助于启发构思的信息环境,进而 达到参与者在虚拟环境中获取知识、形成概念的最终目标。近年来,虚拟环境漫游的研究十 分活跃,如浙江大学的虚拟紫禁城和北京航空航天大学的虚拟北航校同等…。由于虚拟环境系统本身的复杂性,加之缺乏相应工具和软件的支持,开发虚拟漫游系统 是一项费时费力的工程,已有项目代码的重用也是相当的困难【2】。为了实现漫游程序的快速开 发,国内外都试图将漫游应用的共性抽取出来,开发一套支持虚拟环境漫游的核心程序,在 较大程度上实现代码重用,避免重复劳动,加速开发进程。国内北航赵沁平提出了一种较为 通用的、与模型无关的虚拟环境漫游引擎框架结构【3】。
该漫游引擎只需要提供符合openflight 场景数据描述规范的场景数据库即可完成整个漫游应用。该漫游引擎实现了代码重用,减少 了工作量,但是仍然不够完善,比如缺乏对建模的支持,缺乏更真实的碰撞检测机制等等。由于三维游戏和虚拟环境漫游系统的相似性,我们可以使用游戏开发中的相关技术来开 发虚拟环境系统,例如匹兹堡大学利用虚幻引擎开发了虚拟环境系统CaveUT[41。为了快速开 发复杂的虚拟环境漫游程序,我们实现了一套基于游戏引擎的虚拟环境开发框架,对场景构 建,人机交互,场景的实时绘制提供了强大支持。在该框架的基础上,我们开发了虚拟网络 马拉松系统(VNM)垆J。在VNM系统中,用户以跑步机作为交互设备3D动画,人体作用于跑步机而 产生的各种运动参数被系统实时捕获,输入到计算机,作用于虚拟环境,实现人与虚拟环境 的交互。 1系统构成及原理我们利用Lucid游戏引擎开发了虚拟漫游系统№1。系统设计采用了 View,Controller三者的分离,使系统可以灵活地适应用户多变的功能界面需求。通过采用 MVC模式,VNM系统可以灵活地适应用户多变的场景、装备等需求。.107.-图l系统框架图输入模块处理用户与系统的交互。
为了支持尽可能多的入机交互设备,我们仔细地区分 了各种设备的交互属性,以传递信息的维度分类,将交互设备抽象为三类:鼠标、键盘和六 维力反馈撼杆。因此输入模块不但能够处理跑步桃,也能处理追踪球(Trackballs)、三维探 针(3DProbes)、浮动鼠标(Flyingmouse)、力矩球等VR系统中常见的六自由度交互设备。网络模块通过局域网或者因特网将远程用户连接起来,是一个典型的客户端——服务器 模式。场景管理模块负责管理场景模型,包括场景的建模、变换、编辑、导入和导出等。场景 管理模块是建立在Lucid引擎提供的场疑编辑器(SceneBuilder)上。SceneBuilder是一个所 见即所稳豹编辑器,它确保了模型的显示效果在场景编辑器中秘应用程序孛靛一致。物理模块实现了虚拟人物角色与周围环境在物理上的交互。该模块包含了动力学、运动 学、碰撞检测等予模块。动力学模块模拟了物理实体的惯性运动,运动学模块模拟了无质量 物理实体的运动。警物理实体之阔相互磁撞时,磁撞捡测模块被激发,通过求鳃动量方程来 计算物体碰撞后的运动情况。多媒体模块负责处理程序中的声音、视频等资源,使得用户可以与系统多通道交互,增 加了沉没感。
绘制模块建立在Lucid图形引擎之上。该图形引擎使用了各种技术增强绘制的性能,包 括:层次式的视域裁剪、遮蔽裁剪、层次细节管理(LOD)等等。该幽形引擎同时还实现了 阴影、像素级光照、粒子系统等等特殊效果,增强了绘制的真实感。漫游管理模块是整个漫游系统的核心模块。它从网络模块和人机交互模块接收用户运动 信息,并调用其他模块实现用户与虚拟环境的交互。 2关键技术霜户可以和虚拟环境实时交互是虚拟漫游系统最重要的特性之一。我们采用了成熟豹游 戏引擎来加速系统的开发,采用一些关键技术对系统性能进行优化,包括:人机交互、虚拟 场景的编辑和构建、实时绘制和物理特性的模拟,使褥用户可以在当前主流配戥的Pc机上流.108— 畅运行系统。 2.1人机交互的传感器技术游戏引擎通常是以鼠标和键盘作为交互设备。而在VNM系统中,用户以跑步机作为交互 设备。我们在跑步机上加装了单片机芯片来实时检测用户的运动信息,以增量式编码的方式 记录跑步机履带旋转角度对应的脉冲,然后将检测到的脉冲转换成履带旋转的圈数,从而计 算出人在跑步机上相对于某一参考点的瞬时位置。为了真实地模仿在虚拟场景中的长跑活动,还需要知道虚拟化身转动方向的角度3D角色,因此我们对跑步机进行了改装,加装了方向控制按钮 来控制用户在虚拟场景中漫游的方向。
我们仔细地区分了各种设备的交互属性,以传递信息 的维度分类,把跑步机抽象为六维力反馈摇杆,使得系统可以灵活的支持多种交互设备。 2.2 虚拟场景的构建快速环境建模是分布式虚拟环境的关键问题之一拍1。我们使用Lucid引擎提供的场景编 辑器来构建虚拟场景盯1。通过场景编辑器,开发者可以轻松地导入网格数据,然后摆放模型创 建场景。此外,通过场景编辑器还能创建特殊效果,例如粒子系统,天空盒等。场景编辑器 还包括了模板系统,这对于创建大型场景非常重要。图2显示了使用场景编辑器的流程。3D建模工具(例如3DSMax等)Lueid弓l擎的导出工具网格、材质和动画数据音频数据Lucidof擎的场景编辑器场景、地形以及各种视觉特效虚拟网络马拉松系统图2场景编辑器使用流程在Lucid中,场景数据是以场景图的形式组织起来的,整个图由场景节点形成层次。场 景图一般以.scn或.scn.xml为后缀的文件保存。在这个文件内,保存了场景中所有节点信息 以及它们的相互关系。在虚拟网络马拉松系统中,每一个场景都对应一个.scn.xml文件,用 户可在登入界面上选择场景,系统自动搜索对应的场景文件并加载。我们通过3DSMax构建场 景,然后导入到场景编辑器中,并在其中添加系统需要的节点,例如碰撞检测体、公告牌节 点、粒子系统节点等等。
但是虚拟网络马拉松系统的场景中景物众多,数据量大,如果每一 个场景都事无巨细地通过这样的流程来创建,工作量很大,效率低下。我们采用了分块建模 的方式。我们把整个场景看成块的集合。块是基本的模型单元,通过将块的大小和边界标准.109. 化,块与块之问就可以平滑连接。通常一幅场景中总有些块外观是相似的.例如地形。利用 场景编辑器的模板功能,我们将一些基本块抽象成模板,再以此创建其他块,将它们组合在 一起,拼凑为完整的场景,这样大大提高了建模的效率。并且从性能上考虑,分块有利于可 见性的判断.加快了渲染速度。 2.3虚拟场景的宴时绘制太型复杂场景模型的绘制超过了当前图形硬件的处理能力,因此我们必须在速度和画质 问权衡折中,细节层敬(1evelofdetail,LOD)就是一种非常有效的控制场景复杂度的方法”J。该 技术用具有多层次结构的物体集合描述一个场景,即场景中的物体具有多个模型,其模型间 的区别在于细节的描述程度,那么实时显示时,细节较简单的物体模型就可以用来提高显示 速度。实时显示时,模型的选择取决于物体的重要程度.而物体的重要程度由物体在图象空 间所占面积等多种因素确定。对复杂的大范围室外场景,细节层次技术能在保持一定图像质 量的前提下太幅增强系统性能。
通过入口(例如室内场景中的门窗等)看到的场景.优化系统性能,提高帧率…1。我们将场最 划分为一系列的单位空间。各个单位空间能通过入口相互连接。位于单位空间中的视点只能fmstum)进行渲 通过入口观察其他相邻空间。当通过一个指定观察位置的可视平截体(view 染时.如果一个八口出现在可视范围内,那么^口将对可视平截体进行剪切,这样与其相连 的单元空间将会通过一个观察位置相同但已经改变过的可视平截体进行渲染。这是一个非常 简单而且非常适台进行递归调用的方法,由于可视平截体被ponal进行了精确的限制,因此被 隐藏的物体可以根简单进行剔除。 g4高级视觉效果我们应用了一系列高级着色技术来创造更加真实的环境,实现了动态时间系统和辉光效 果,增强用户的沉浸感。用户可以根据自己机器的配置来打开或者关闭这些特效。昼夜的动态变化是通过天空的变化和场景中光线的变化来实现的。我们采用SkyDome的 方式模拟天空。SkyDome就是一个很大的半球,有高度和半径两个参数。通过给SkyDome添 加效果材质(effectmartial).我们就可以实现天空的各种动态效果。效果村质对应一个效果 资源,即以高级着色语言(HighLevel 咀&后缀结尾的文件。
在我们的系统中,我们使用Lucid提供的SkyCloudfx效果文件。通过 设定一个时问变量.动态计算出当前环境中平行光源的漫反射、镜面反射、环境分量。这样 就实现了夜晚光线变暗,到中午光线逐渐增至最强的动态变化过程。圈3一无中m午和黄昏效果的对&真实环境中存在这样一种现象;由于光线在大气或者^眼中的散射,特别明亮的物体周 围有一层光晕,称之为辉光效果(Glareeffect)。我们利用后处理的方式,首先提取出图像 中明亮部分,进行二维高斯模糊来渲染光晕。采用高斯滤波函数进行模糊时,生成的图像的 质量严重依赖于采样点的个数.但是采样点过多会导致计算鼍大大增加,无法满足实时要求。 高斯滤波函数具有线性可分特性.即对二维高斯滤波函数的计算可以分拆到两个独立的一维 空间分别进行。基于该特性,我们把二维高斯滤波沿正交方向分拆为两个一维高斯滤波“”。 第一次对图像沿x轴方向进行一维高斯滤波.生成一个中间结果图像。第二次对中间结果图 像枯Y轴方向再进行一次一维高斯滤波。采样这种方法后,对n2个采样点的计算只需2n步就 能完成,大大降低了计算复杂度同时保证了图像质量。 25基于物理的模拟物理效果对于增强用户沉浸式的体验有至芙重要的作用。
Lucid平台提供了高效的碰撞 统能将人体按照现实情况分为很多相对独立并互相关联的部分。虚拟网络马拉松里的运动员 能根据不同的受力摆出不同的姿势,例如人物的手腕受力之后,力量会通过关节传递到小臂 甚至人臂上面,使游戏中的人体模型不再是一个“大木桶”。这使得角色和周围环境紧密结 台起米,大大增加了真实感。 3系统运行结果借助成熟的游戏引擎,我们开发了虚拟网络马拉松系统。系统能在配备P42 4GCPU和 512M内存的Pc机上流畅逛行。图3显示丁用户在虚拟马拉松系统的室外场景中进行马拉松比 赛,图4显示了削户在室内场景漫辩。图3室外虚拟马拉松比赛图4室内浸谱 4 结论三维游戏既是虚拟环境技术重要的麻用方向之一,也为虚拟环境技术的快速发展起了巨 大的需求牵引作用。游戏引擎,特别是网络游戏引擎,对开发基于个人电脑的网络虚拟环境 系统所面临的系列问题给出了系统的解决方案,能够作为开发此类系统的一个有力工具。 利用Lucid引擎我们在较短时间内开发了虚拟网络马拉松系统,表明用游戏引擎开发低成本虚 拟环境系统具有很高性价比,具有很好的实用性。参考资料:ⅢI郝爱民游戏引擎虚拟现实系统,张藩计算机虚拟北航的建造々人机交Ⅱ的虫现北京航空航天大学学报2009.2州1: 435-438AVirtual intheArchitecturalProcess【2】Campbell,D^,WeIts,MCd啦Ⅱof RealityDesign 1994: }n∞*wwMhnI.w∞hingtonedu/publicationslr-94-31p】郝爱民.赵*平虚扭环境漫游引擎设计与实现计算机I程与应用2000,3H12);$6-88TheCaveOTH】Ja∞bsmJ,Renard,ML,Lugnn,I.L,Cavaz4MBasedSystem:Im一ⅥEnkmi∞%t onaGaIllcofthe2005ACMSIGCHIEngineProceedingsInterII虬ionatCoarseonAdv—sincomputer ∞t“nⅢ“t%hnology,2005Pp:184-187viaual【5】P扑,zG,He游戏引擎虚拟现实系统,GQ.su,sY,u,xc,PM,JGNetworkMarathon:Fitness4№tedE-Sporein DistributdVinualEnvl…∞tVSMM2006LNC520-529旧播志庚。
差晓a等分布式虚拟环境综述软件学报2000,11(4):461-467Progr哪er【刁叶劲峰等Lucid3D Guide(1n甜)2005:htlp://~.1ucidplatforum【嘲间E·潘志庚等基于%台多细节层孜技术的实时绘制算沾软件学报2001.12(I):74-82【9】季国Ⅱ,方寿海,马尧海=维游戏场景中动态物体的遮挡剔睬算法镟计算机信息2006,舱【19h 189-191【lq姚勇.王小琴GPIJ耩粹实对图形编程的技术、技巧和技艺北京:人民邮电m版杜20。6:234—246