虚拟校园漫游与实时可视化研究*

2014-09-13 12:35杨玉婷杨佳平
计算机工程与科学 2014年8期
关键词:漫游虚拟现实校园

杨玉婷,杨佳平

(云南大学旅游文化学院信息科学与技术系,云南 丽江 674100)

虚拟校园漫游与实时可视化研究*

杨玉婷,杨佳平

(云南大学旅游文化学院信息科学与技术系,云南 丽江 674100)

将虚拟现实技术和人机工程相结合,基于Crystal Space 3D平台实现虚拟校园系统。该系统由数据和软件两部分组成,数据部分包括多媒体数据和三维模型数据。在建模阶段引入面向对象思想并大量使用纹理,降低了三维模型的复杂度。同时,使用XML描述导出后的模型,使模型数据更容易被读取和解析。软件部分支持多种输入硬件、支持不同的漫游方式和对虚拟校园中指定地点的查询及自动寻路,并配以介绍学校文化的背景音乐,使整个虚拟系统在突出虚拟现实交互性、沉浸性等独有特性的同时,最大限度考虑“人”的使用因素,提供多样的使用方法和舒适的使用环境等人机工程特性,使系统的实用性更强。

虚拟现实;虚拟校园;人机交互;Crystal Space 3D

1 引言

虚拟校园是虚拟现实技术[1~3]在数字化校园中的具体应用,是数字校园建设的核心。通过将校园地理信息和虚拟技术相结合,以虚拟现实场景界面作为校园景观展示及信息的浏览查询窗口,实现人们在计算机上虚拟地游览、规划实际校园的目的。国内外对虚拟校园的研究从未间断过,从1996年,天津大学在SGI硬件平台上基于VRML最早开发虚拟校园起,浙江大学、清华大学、南京大学、北京航空航天大学、华中科技大学、香港中文大学等也进行了数字校园的建设[4~6]。另外,Norwegian大学、Nanyang技术大学等也加入其中,并为虚拟校园今后的发展提供了一些新思路[7~9]。同时,用户在使用软件时对软件在方便、舒适、实用和效率等方面的要求越来越高,即要求软件操作更加人性化。因此,将人机工程与虚拟校园相结合、最大限度考虑“人”的因素也显得越来越重要。

“人机工程学”把人-机-环境系统作为研究的基本对象,运用生理学、心理学和其它有关学科知识,根据人和机器的条件与特点,合理分配人和机器承担的操作职能,并使之相互适应,从而为人创造出舒适和安全的工作环境,使工效达到最优的一门综合性学科[10,11]。因此,结合虚拟现实和人机工程的特点,基于Crystal Space 3D平台实现了虚拟校园系统。该系统在设计过程中最大限度考虑“人”的使用因素,使整个系统在体现虚拟现实的感知性、沉浸性和交互性的同时,将人的心理特征、空间感、行走、飞行等感觉和行为功能纳入到人机交互中,不断突出人与软件间自然和流畅的交流与协作,体现了系统的人性化、舒适性及多样的使用方法等人机工程特性。

2 Crystal Space 3D

Crystal Space 3D(以下简称CS)是一个成熟的、具备完全功能的、轻量级的3D SDK(Software Development Kit),为游戏和虚拟现实等应用提供了实时的3D图形处理功能。CS除了具备3D游戏引擎应有的功能外,其自身还包含许多独有的特点。首先,CS拥有高度模块化的框架,具有良好的可扩展性和可复用性。其次,CS是一个免费的、由构件(Components)和插件/库(Plugin/Library)组成的包,不但提供了丰富的开发构件,还支持自定义插件的开发,使开发者的自主性更强。最后,CS广泛支持各种不同类型的硬件和软件平台,具有良好的跨平台性[12,13]。

3 虚拟校园总体设计

整个虚拟校园以云南大学旅游文化学院主教学区为原型,为了与传统的虚拟校园系统相区分,人机工程学在系统中主要体现为:最大限度考虑“人”的使用因素,提供多样的使用方法,创建舒适的使用环境,充分满足用户使用的个性化要求。因此,整个系统由数据和软件两部分组成,数据部分负责处理多媒体数据、创建三维虚拟校园模型和三种不同的角色模型、各类模型的导出等。软件部分负责虚拟系统与用户的交互,包括数据加载和校园浏览。多媒体数据加载为创建舒适的使用环境奠定了基础,而交互模块中增加了对三种角色模型的控制以及对多种输入硬件(包括鼠标、键盘和游戏手柄)的支持,使用户在使用时可根据其个性化需要选择不同的硬件和角色模型在地面或从空中漫游整个校园。系统结构图如图1所示。

Figure 1 System structure图1 系统结构图

4 三维虚拟校园模型的建立

虚拟校园模型的好坏直接影响整个虚拟校园系统的质量,而三维模型的精细程度与系统运行速度成反比,即所建模型越精细、模型数据越庞大,漫游时计算机绘制的时间就越长,但显示效果就越逼真,反之亦然。因此,在建模过程中应加入不同的优化方法,在保证模型具有较好显示效果的同时,又不会产生过大的数据量。实际建模时采用3Ds Max作为建模工具。

4.1 基础数据收集

首先获取主教学区的卫星地图并确定各教学楼的地理位置,如图2所示。然后结合主教学区各教学楼的CAD图,按照1∶1的比例完成教学楼模型的建立,图3为文致楼的局部CAD正面图(1∶150),图4为文致楼的正面实景图,从而使所建模型与实际教学楼尽可能保持一致。最后,收集并制作用于模型表面的各种纹理和材质。

Figure 2 Satellite map of the main teaching building图2 主教学区卫星地图

Figure 4 Picture of Wen-zhi building图4 文致楼正面实景图

4.2 面向对象的三维建模

将面向对象思想引入三维建模中,为了与传统面向对象思想中的类与对象的名称相区分,给出如下定义:

(1)模型类(Model Class):描述一个几何体的物理数据、纹理和材质,例如,一棵树。

(2)模型实例(Model Instance):是通过对模型类进行复制而得到的副本,即通过复制“树”,从而获得多棵“树”——多个模型实例(复制所得的一棵树即为一个模型实例)。由于模型实例与类具有相同的物理数据,因此,模型实例只描述对模型类的当前引用次数、与模型类的相对物理位置,以及模型实例本身的旋转、纹理和材质等特有的信息。

Figure 3 Part of CAD elevation picture of Wen-zhi building(1∶150)图3 文致楼局部CAD正面图(1∶150)

需要说明的是,在模型导出并通过游戏引擎渲染时,类是不可见的,而实例通过结合对应类中保存的物理数据和实例自身的描述实现在虚拟场景中的显示。由此可知,模型类是对几何体共性的描述,而模型实例则是对单个几何体特性的描述,且实例可使用类中的共性数据,这与传统面向对象思想中类和对象的概念虽有所区别,但也确有异曲同工之妙。由于相同几何体的物理数据只在模型类中存储一次,因而大大降低整个虚拟校园的几何体数据总量及模型规模,提高了虚拟系统的渲染速度。

另外,模型建立和导出时,其缩放比例均为1∶1,从而保证同等规模的模型在系统中都按相同大小显示。

4.3 三维校园模型的优化

(1)使用纹理。除了在建模时引入面向对象思想外,大量使用纹理也能有效减少模型的总面数。如图5所示,图5a是文致楼的精细模型,由于建筑物中包括大量的窗户,增加了建筑物的几何复杂性。根据LOD(Level of Detail)思想,可通过逐次简化模型的表面细节来减少场景的几何复杂性,因此优化时删除了建筑物右侧的所有窗户,并使用纹理贴图代替,大幅减少建筑物的三维模型数据,但对最终渲染效果的影响却并不明显,如图5c所示。

Figure 5 Optimizing the 3D model using texture图5 使用纹理优化三维模型

(2)使用XML标记三维模型。XML提供统一的方法描述、存储和交换独立于应用系统的三维模型数据。由于表示方法极其简单,使存储其中的模型数据更易被读取、解析,且更能突出三维模型的结构特点和组织形式。因此,所有的模型数据在导出后均使用XML表示。对虚拟世界的简单描述如下:

〈world〉〈!--标记整个虚拟世界--〉

〈textures〉〈!--标记纹理信息--〉

〈texture name="oldmetal"〉

〈file〉/lib/stdtex/oldmetal.jpg〈/file〉

〈/texture〉

〈/textures〉

〈!--定义“墙壁”类--〉

〈meshfact name="walls"〉

〈plugin〉thingFact〈/plugin〉

〈zfill /〉

〈params〉 〈 !--标记模型的物理数据--〉

〈v x="-10" y="-1" z="10"/〉

…………

〈material〉old_metal〈/material〉

〈texlen〉4〈/texlen〉

〈p name="up"〉〈v〉6〈/v〉 〈v〉7〈/v〉 〈/p〉

〈/params〉

〈/meshfact〉

〈/world〉

5 软件实现

系统软件部分负责虚拟系统与用户的交互,包括数据加载和校园浏览,其中数据加载模块包括校园模型加载、角色模型加载和背景音乐加载;而校园浏览模块包括查询及自动寻路、漫游交互和逻辑处理。各模块间的交互如图6所示。

Figure 6 Interconnection among models in software part of virtual campus图6 虚拟校园软件部分各模块间的交互

5.1 数据加载模块

数据加载模块包括校园模型加载、角色模型加载和背景音乐加载三个部分。

(1)校园模型加载。校园模型加载负责整个虚拟校园模型数据的读取、解析、加载和卸载。模块的处理过程包括:① 创建场景实体;② 完成对描述虚拟场景的XML数据的读取、解析、加载/卸载。核心代码如下:

// ① 创建场景实体level

csRef〈iCelEntity〉 level = pl→CreateEntity ("ent_level", 0, 0,"pcworld.zonemanager","pctools.inventory", "pcphysics.system", (void*)0); /* ② 根据level创建用于完成对虚拟场景的XML数据相关操作的zonemanager属性*/ csRef〈iPcZoneManager〉 pczonemgr = CEL_QUERY_PROPCLASS_ENT (level,iPcZoneManager); iCelZone* zone = pczonemgr→CreateZone ("main"); iCelRegion* region = pczonemgr→CreateRegion ("main"); zone→LinkRegion (region); iCelMapFile* mapfile = region→CreateMapFile (); mapfile→SetPath ("/cellib/lev");/*指定虚拟场景的存储路径*/ mapfile→SetFile ("walktut_world");//加载虚拟场景

(2)角色模型加载。由于在系统设计时考虑到用户的个性化需要和系统使用多样性等人机工程特性,在校园漫游中为用户提供了第一人称和第三人称两种漫游方式。模块的处理过程包括:① 创建角色实体;② 创建摄像机,并将摄像机与角色实体绑定,实现对虚拟场景的观察;③ 完成角色模型的XML数据的读取、解析、加载/卸载;④ 设置对角色的控制和碰撞检测,并将角色控制与键盘绑定,使用户能够通过键盘对角色进行控制。另外,也可将角色控制与其他输入硬件绑定,例如鼠标、游戏手柄等,使系统的使用更加多样化,满足用户的个性化需求。其核心代码如下:

// ① 创建角色实体player_entity

csRef〈iCelEntity〉 player_entity= pl→CreateEntity ("player",bl,"player_behave","pccamera.old", pcobject.mesh","pcmove.linear","pcmove.actor.standard","pcinput.standard","pctools.inventory",CEL_PROPCLASS_END); /* ② 根据player_entity创建camera属性,使用户能看到虚拟场景中的景物*/ csRef〈iPcCamera〉 pccamera = CEL_QUERY_PROPCLASS_ENT (player_entity, iPcCamera); /* 将camera和角色实体绑定,并设置角色在虚拟场景中的初始位置*/ csRef〈iPcZoneManager〉 pczonemgr = CEL_QUERY_PROPCLASS_ENT (level_entity,iPcZoneManager); pccamera→SetZoneManager (pczonemgr, true, "main", "Camera"); if (pczonemgr→PointMesh ("player", "main", "Camera")) return ReportError ("Can't find region or start position in region!");

/* ③ 创建pcmesh属性,完成对角色模型的XML数据的读取、解析、加载/卸载*/

csRef〈iPcMesh〉 pcmesh = CEL_QUERY_PROPCLASS_ENT (player_entity, iPcMesh);

pcmesh→SetPath ("/cellib/objects");/*指定角色模型的存储路径*/

pcmesh→SetMesh ("celBody", "cally.cal3d"); /*加载角色模型*/

/* ④ 创建actmove属性,实现对角色的移动速度的控制*/

csRef〈iPcActorMove〉 pcactormove = CEL_QUERY_PROPCLASS_ENT (player_entity, iPcActorMove);

pcactormove→SetMovementSpeed (3.0f);/*设置平移速度*/

……

/*将角色控制与键盘绑定,使用户可通过键盘操纵角色,也可设置角色与其他输入硬件的绑定*/

csRef〈iPcCommandInput〉 pcinput = CEL_QUERY_PROPCLASS_ENT (player_entity, iPcCommandInput);

pcinput→Bind ("up", "forward");/*设置up键为向前平移*/

pcinput→Bind ("m", "cammode");/*设置m键为第一人称和第三人称的切换*/

…………

/*创建linmove属性,实现对角色的碰撞检测,使用包围球作为碰撞检测的边界*/

csRef〈iPcLinearMovement〉 linmove = CEL_QUERY_PROPCLASS_ENT (player_entity,iPcLinearMovement);

pclinmove→InitCD (csVector3 (0.5f,0.8f,0.5f),csVector3 (0.5f,0.4f,0.5f),csVector3 (0,0,0)); /*设置包围球*/

(3)背景音乐加载。背景音乐是虚拟系统的一个重要组成部分,通过在系统中加入介绍学校文化的背景音乐,使用户在轻松愉悦的环境中熟悉校园环境的同时,也能对各种校园文化有所了解,使系统所包含的知识量更加丰富,使用户的使用环境更加舒适、人机交互性更好。整个模块的处理过程包括:① 指定音乐文件的存储路径;② 加载并解析音乐文件;③ 设置音乐的音源、音量、音域和播放模式(循环播放/单遍播放)等。其核心代码如下:

// ① 指定音乐文件的存储位置

csRef〈iCommandLineParser〉 cmdline (csQueryRegistry〈iCommandLineParser〉 (GetObjectRegistry ())); csString fname = cmdline→GetOption ("/lib/mat/ch.wav "); // ② 加载并解析音乐文件 csRef〈iDataBuffer〉 soundbuf = vfs→ReadFile (fname.GetData ());/*指定音乐文件的位置*/ csRef〈iSndSysData〉 snddata = sndloader→LoadSound (soundbuf);// 加载音乐文件 const csSndSysSoundFormat* format = snddata→GetFormat ();// 获取音乐文件的格式 csRef〈iSndSysStream〉 sndstream = sndrenderer→CreateStream (snddata, CS_SND3D_ABSOLUTE); const csSndSysSoundFormat* rformat = sndstream→GetRenderedFormat (); /* ③ 将音源设置在camera上,使用户在虚拟校园中不管到哪里听到的声音都是一样大的*/ iCameraPosition*campos_sound=engine→GetCameraPositions()→Get(0);//将音源的位置设置在camera上csVector3 pos_sound=campos_sound→GetPosition(); //设置音乐的播放模式和音量大小 sndstream→SetLoopState (CS_SNDSYS_STREAM_LOOP);/*将音乐播放模式设置为循环播放*/ sndsource→SetVolume( 6.0 );//音量范围为0.0~10.0

5.2 校园浏览模块

校园浏览模块是虚拟系统的核心处理模块,负责处理用户与系统交互时产生的所有事件,由查询及自动寻路模块、交互模块、逻辑处理模块等组成。

(1)查询及自动寻路模块。系统提供查询及自动寻路模块,根据用户输入的教学楼名称自动定位到指定的教学楼,能让完全不熟悉校园的访问者在漫游整个校园环境的同时,也能对感兴趣的某一建筑或指定地点进行重点或反复游览,且避免访问者在大规模的虚拟环境中迷路,使系统使用更方便、更人性化。其实现方法是:首先,创建信息存储数据库,将建筑物的三维位置信息(设为建筑物正面入口处的三维坐标)存储在数据库中;然后,解析用户输入的教学楼名称,并根据输入的名称获取建筑物位置信息,以及当前角色所处的位置信息;最后,根据当前位置和目的地,将校内各栋楼、道路处理成点和弧长,道路的长度设定为弧的权值,运用改进的Dijkstra算法求出当前位置到目的地的最短路径,如图7所示。

Figure 7 Path-finding result图7 自动生成的漫游路径

(2)漫游交互。漫游交互模块是虚拟现实与人机工程相结合的核心模块,负责处理用户与系统交互时产生的所有事件。系统提供第一人称和第三人称两种漫游方式。以第一人称漫游可选择步行和飞行两种漫游模式,而以第三人称漫游时又可选择包括步行、驾车和飞行三种不同的漫游模式。步行和驾车可以不同的速度漫游校园,而飞行则可从空中纵览整个校园,欣赏校园全貌。漫游交互模块实际上是对角色加载模型的多次调用,但每次加载的角色模型都由用户指定。

(3)系统逻辑处理模块。系统逻辑处理模块处理虚拟系统的逻辑事务,包括初始化系统各个模块和CS 插件(Plugin)、协调各模块之间的工作、向不同模块分发指令等。

6 系统测试

系统测试时,选择的计算机硬件环境包括:CPU为Duo T6400 2 GHz*2,显示卡为NVIDIA GeForce 9300M GS,内存大小为2 GB;软件环境为Visual Studio 2005和DirectX SDK 2010。测试内容包括:(1)系统启动及角色初始创建;(2)用户使用输入设备对角色的控制;(3)以第一人称在校园中漫游;(4) 以第三人称在校园中漫游及不同角色间的切换;(5) 角色的碰撞检测。测试效果如图8~图11所示。另外,在整个系统的测试过程中,测得最大帧速为265 Frames/s,最小帧速为221 Frames/s,平均帧速为240.67 Frames/s,帧速率变化如图12所示,从而保证系统的顺畅运行。

Figure 8 System startup interface图8 系统启动界面(学校正门)

Figure 9 Roaming teaching building in the first-person图9 以第一人称漫游教学楼

Figure 10 Roaming control and switching between the different roles图10 漫游控制及不同角色间的切换

Figure 11 Role’s collision detection图11 角色的碰撞检测

Figure 12 Frame rate图12 帧速率

7 结束语

将虚拟现实技术和人机工程相结合,基于Crystal Space 3D平台实现了虚拟校园系统。与传统虚拟现实系统相比,该系统支持多种输入设备(键盘、鼠标和游戏手柄),支持多种不同的漫游方式(第一人称、第三人称,包括步行、驾车和飞行等),以及支持用户对指定地点的查询和自动寻路,不但突出了虚拟现实系统的感知性、交互性和沉浸性,也充分考虑了用户的个性化需求、使用的舒适性和多样性等人机工程特性,使系统的实用性更强。

[1] Yu Li, Wang Cheng. Digital campus three dimension simulation system based on virtual reality technology[J]. Computer Simulation, 2004, 21(4):98-101.(in Chinese)

[2] Yang Yu-ting, Shi Lin. A 3D dynamic demo based on game engine[J]. Science Mosaic, 2008(8):99-102.(in Chinese)

[3] Yang Hong-yan, Shi Zhuo, Zhong Yan-ru. Design of digital campus roaming system based on virtual reality technology[J]. Journal of Guilin University of Electronic Technology, 2011, 31(4):287-291.(in Chinese)

[4] Hao Ai-min,Zhang Bei,Zhao Qin-ping.Walkthrough and interaction technology for virtual BUAA [J]. Journal of Beijin University of Aeronautics and Astronautics, 2000, 26(4):435-438.(in Chinese)

[5] Wang Cheng, Li Li-jun, Zhou Jun-qing, et al. Vega real-time three-dimensional visual simulation technology[M]. Wuhan:Huazhong University of Science & Technology Press, 2005.(in Chinese)

[6] Gong Jian-hua, Lin Hui,Tan Qian. Designing and developing the virtual campus of the Chinese University of Hong Kong [J]. Acta Geodaetica et Cartographica Sinica, 2002, 31(1):39-43.(in Chinese)

[7] Prasolova-Forland E,Fominykh M,Wyeld T G.Virtual campus of NTNU as a place for 3D educational visualizations[C]∥Proc of Global Learn Asia Pacific 2010, 2010:3593-3600.

[8] Sourin A. Nanyang technological university virtual campus[J]. IEEE Computer Graphics and Applications, 2004:24(6):6-8.

[9] Fominykh M, Prasolova-Forland E. Virtual research arena:Presenting research in 3D virtual environment[C]∥Proc of the 2nd Global Conference on Learning and Technology, 2011:1558-1567.

[10] Zhang Hong, Song Cui-e. Research and implement of visualization and roaming[J]. Journal of System Simulation, 2011, 23(12):2701-2703.(in Chinese)

[11] Wang Xiu-ling. Human engineering’s application and development[J]. Machinery Design & Manufacture, 2007, 45(1):151-152.(in Chinese)

[12] CrystalSpace3d.org. Crystal space user manual [EB/OL].[2011-10-20]. http://www.crystalspace3d. org/main/Documentation.

[13] CrystalSpace3d.org. Crystal space tutorial [EB/OL].[2011-10-20].http://www.crystalspace3d.org/main/Documentation.

[14] PlaneShift.net. PlaneShift 3Ds max exporters[EB/OL].[2011-10-20]. http://www.planeshift.it.

附中文参考文献:

[1] 余莉,王乘.基于虚拟现实技术的校园数字三维仿真系统[J]. 计算机仿真, 2004, 21(4):98-101.

[2] 杨玉婷,施霖. 基于游戏引擎的3D动态演示文稿[J]. 科技广场, 2008(8):99-102.

[3] 杨宏艳,史卓,钟艳如. 基于虚拟现实的数字化校园漫游系统设计[J]. 桂林电子科技大学学报, 2011, 31(4):287-291.

[4] 郝爱民,张蓓,赵沁平. 计算机虚拟北航的建造与人机交互的实现[J]. 北京航空航天大学学报, 2000, 26(4):435-438.

[5] 王乘, 李利军, 周均清, 等. Vega 实时三维视景仿真技术[M]. 武汉:华中科技大学出版社, 2005.

[6] 龚建华,林珲,谭倩.虚拟香港中文大学校园的设计与初步试验[J].测绘学报,2002, 31(1):39-43.

[10] 张宏,宋萃娥. 可视化及漫游技术的研究与实现[J]. 系统仿真学报, 2011, 23(12):2701-2703.

[11] 王秀玲. 人机工程学的应用与发展[J]. 机械设计与制造, 2007, 45(1):151-152.

YANGYu-ting,born in 1983,MS,lecturer,CCF member(E200023811M),her research interests include image processing, and virtual reality.

杨佳平(1989-),男,福建漳州人,研究方向为图像处理和虚拟现实。E-mail:1369870168@qq.com

YANGJia-ping,born in 1989,his research interests include image processing, and virtual reality.

Researchonreal-timevisualizationandroamingofvirtualcampus

YANG Yu-ting,YANG Jia-ping

(Department of Information Science and Technology,College of Tourism and Culture,Yunnan University,Lijiang 674100,China)

By combining virtual reality and human engineering, the virtual campus system is implemented based on the Crystal Space 3D platform. It comprises of two components: data and software. The data includes multimedia data and 3D model data. In modeling phase, the object-oriented thought is introduced and a lot of texture is used to reduce the complexity of the 3D models. And using XML to describe the exported models makes them be read and parsed more easily. The software supports multiple types of input hardware, supports different roaming, queries and automatically finds its way to the pointed place and uses the school culture introduction music at the background. Therefore, the entire virtual campus not only has the characteristics of the virtual reality but also considers the “people” factor, and it provides various methods and comfortable usage environment, thus making the system more practical.

virtual reality;virtual campus;human-computer interaction;Crystal Space 3D

1007-130X(2014)08-1588-07

2012-11-02;

:2013-03-05

云南省教育厅科学研究基金项目(2012Y430);云南省教育厅科学研究基金重点项目(2012Z143C)

TP391.98

:A

10.3969/j.issn.1007-130X.2014.08.029

杨玉婷(1983-),女,云南昆明人,硕士,讲师,CCF会员(E200023811M),研究方向为图像处理和虚拟现实。E-mail:tudou-yeah@163.com

通信地址:674100 云南省丽江市云南大学旅游文化学院信息科学与技术系

Address:Department of Information Science and Technology,College of Tourism and Culture,Yunnan University,Lijiang 674100,Yunnan,P.R.China

猜你喜欢
漫游虚拟现实校园
霹雳漫游堂
REALITY BITES
校园的早晨
春满校园
风口上的虚拟现实
NASA漫游记
虚拟现实技术向科幻小说借灵感
浅谈虚拟现实
边走边看:漫游海底 梦想成真