基于VRML的虚拟校园的设计与实现

时间:2022-07-13 09:10:17

基于VRML的虚拟校园的设计与实现

摘要:基于Vrml技术完成了三维虚拟校园的设计和实现,对建模、交互控制及优化技术进行了详细的介绍和分析,为研究和探索Vrml技术在虚拟建筑展示领域的应用提供了有益的思路。

关键词:虚拟校园;Vrml;建模;交互控制;优化

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)15-30671-02

Research and Implementation of Virtual Campus based on VRML

FU Qiang

(College of Science and Technology, Ningbo University, Ningbo 315211, China)

Abstract:Has completed the three dimensional hypothesized campus design and the realization based on the Vrml technology, and has carried on the detailed introduction to the correlation technology and analyzes in order to study and explores the Vrml technology to provide the beneficial mentality in the hypothesized construction demonstration domain application.

Key words:visual campus;Vrml;modeling;interactive control;optimize

1 引言

Vrml是一种在网络环境下描述三维模型空间,能进行交互操作的跨平台、开放式、解释性的语言,用来描述如何在Web页面上显示一个三维场景。由于具有直观、生动、逼真等二维Web页面不可比拟的优点,使用Vrml实现的三维场景展示得到越来越广泛的应用。

本文根据宁波大学科技学院的校园规划设计图,结合Vrml、Java和3Dsmax建立了三维虚拟校园漫游系统,并将其在Internet上,可以使浏览者对校园实现网上实时交互浏览,使人获得身临其境的感受。

2 虚拟校园的分析与设计

虚拟校园的设计目标是通过网络展示宁波大学科技学院的校园风貌,访问者可以走进校园中,参观校园的自然风貌,了解科院的生活场景,在网络上了解科院。

结合系统设计要求,我们对虚拟校园的实现方案进行了对比分析。最终方案确定为模块结构化设计:由于校园中的各个对象是通过空间相对位置组织在一起,因此可以在进行整体设计时将道路做为基本参照对象,并以此为基础放置其他对象。总体设计图见图1。

图1 虚拟校园系统总体设计图

系统实现的具体步骤为:首先根据实际的地理数据(借用原始平面设计图)绘制出场景平面图,并相应构建出虚拟的道路;接着我们对各个建筑楼宇、校门,人物,树木等对象分别建模实现,然后按照场景平面图的位置数据,并以校园道路作为参照,把制作的各个楼宇、校门等其他对象放在相应的位置。最后进行整体组合修正,同时结合Java实现相应的交互功能,达到最终效果。模块结构化的设计思路有利于后期的模型修改和完善,同时大大降低了建模的复杂度和系统运行对硬件的要求。

3 虚拟校园的实现及相关技术细节

我们将从建模、交互、优化三个主要方面来介绍虚拟校园的实现过程。

3.1 建模

建模技术是建立虚拟校园系统的基础。因此,首先要根据校园实际的自然风貌对校园内各个对象,如楼宇、道路、树木、花草等进行建模。通过对这些对象的建模,构建出虚拟科院校园的基础框架。

3.1.1 复杂楼宇的建模

复杂楼宇的建模工作比较繁琐,直接使用Vrml实现将需要大量的工作时间,并且建模的直观性和模型真实度也不容易达到要求。因此我们选用了3Dsmax作为复杂楼宇的主要建模工具。之所以选择3Dsmax,主要出于两方面的考虑:一是3Dsmax建模功能强大、方便快捷,而且还可将文件存储为Vrml格式的文件,易于使用;二是使用3Dsmax为虚拟系统创作好模型后,可利用3Dsmax自带的LOD插件直接生成对象的LOD模型,以达到文件优化效果。

我们以艺术楼群的建模为例:首先根据平面设计图及建筑物实际考察信息绘制出草图,由于艺术楼群较为复杂,所以将其分割成四个模块以便于建模工作的展开。其次使用3Dsmax画出各个模块的轮廓,并实现相应的凹凸面、屋檐、台阶等特殊形状。最后进行材质编辑,进行上色和贴图。艺术楼的建模图和效果图见图2、图3。

图2 艺术楼的建模图

图3 艺术楼的效果图

将完成的文件以优化模式存为Vrml文件,并在Vrml编程工具Vrmlpad中进行进一步的修正和处理,最终确定模型文件,留待后期系统整合调用。

3.1.2 场景背景的设置

为了逼真地表现虚拟现实所描述的环境,可以通过Background节点设置虚拟校园背景。常使用两种设定方式达到目的:一是通过颜色插值模拟大地和天空;二是构造背景全景图。在本系统中采用了第一种方法,实现代码如下:

Background{

groundAngle[0.7,1.5,1.57]

groundColor[0 0.333 0,0 0.4 0,0 0.5 0,0.62 0.67 0.60]

skyAngle[0.9,1.5,1.57]

skyColor[0.21 0.18 0.66,0.2 0.44 0.85,0.51 0.81 0.95,0.77 0.8 0.82] }

上述代码描述了这样一个背景:浅绿色的大地,淡蓝色的天空,大地和天空相接处颜色渐白。

采用颜色插值来设置背景的优点在于:可减小文件大小,从而减少网上传输的数据量,提高传输速率及漫游效果。而且在一个较大的场景中包含的对象很多,本身就是一个比较完整的特定环境,背景可以简化处理。

3.1.3 创建视点和游览模式

Vrml提供了多种的视点和浏览模式,本系统选择了以飞行的方式进行浏览,这种方式的好处是可以使用户的活动比较自由及随意性,可以从各个角度察看虚拟场景。同时我们设置了两个视点,一个是真实的等高视点;一个是高空鸟瞰视点。实现代码如下:

NavigationInfo {

avatarSize [0.25, 1.6, 0.75]

headlightTRUE

speed100

type "FLY"

visibilityLimit0.0 }

DEF Camera01 Viewpoint{

position 950 40 6000

fieldOfView 1.05

orientation 0 1 0 0

description "Camera01" }

DEF Camera02 Viewpoint{

position 950 9000 18000

fieldOfView 1.05

orientation 0 1 0 0

description "Camera02" }

效果图见图4、图5。

3.1.4 树木、花草、路灯等的建模实现

树木的实现采用了电子公告板节点(Billboard),此节点允许在场景中使用二维图像来模拟三维造型并旋转, 从而始终面对观察者。具体建模过程需要注意以下几个问题:

图4 等高视点

图5 高空鸟瞰视点

(1)场景中树木的高度及宽度通过设置Box的属性来加以确定;

(2)纹理图的背景要进行透明设置:将拍摄来的照片进行软件处理(如Photoshop),去除背景及空隙像素。

通过这种方法创建的树木模型形象逼真,具有较好的视觉效果。效果图见图6,实现代码如下:

Billboard{

children [Shape{

appearance Appearance{

texture ImageTexture{

url"tree_a.gif"}}

geometry Box{size 50 80

0.00001}}]}

校园中的花草、路灯、静态人物等也可通过这种方法实现。

3.1.5 汉字的实现

虚拟校园中需要完成大量楼宇建筑的建模,其中楼宇的名称涉及到汉字的实现。汉字的实现方式有多种:

可以直接从3Dsmax所生成的模型中直接导出场景中的中文字体,但这种方法生成的汉字容量比较大,会增大Vrml文件的大小,影响网络传输的速度。

亦可使用Vrml的text节点来完成汉字的制作,不过各个楼宇名称涉及到的汉字字体较多,颜色也比较丰富,所以直接使用text节点来制作汉字比较复杂

我们采取的方法是使用gif贴图:即把要使用的汉字用Photoshop等图像处理工具制作成gif图片,然后使用贴图功能添加到Vrml文件中。这样既可以有不错的视觉效果,又不会增加VRML的渲染负担。

3.1.6背景音乐的选择

给场景加入背景音乐可以增加虚拟空间的动感效果。多数的

Vrml浏览器都支持两种格式的声音文件:wav和midi。由于midi格式音乐占用的存储空间很小,便于网上传输,因此我们选用midi格式文件作背景音乐。

3.1.7 整体场景的合成

整体场景合成使用内联节点( Inline)来实现。该节点可实现主体Vrml文件和外部子场景Vrml文件的自动链接。下面代码实现了将博观楼场景载入主场景的功能:

Transform {

children Inline {

url "boguanbuild.WRL" }

translation -1378 0 500

rotation 0 1 03.14159

scale 1 1 1 }

3.2 交互功能的实现

在Vrml中实现交互控制主要有两种方式:非编程交互控制及编程交互控制。

非编程交互控制主要通过Vrml自带的传感器节点、检测器节点及路由设置完成事件的触发和传递,从而实现交互功能。而比较复杂的交互要求则需要以编程控制的方式进行,可通过Script节点(JSAI接口)或相关的Java类包(EAI接口)将Vrml场景和能够实现复杂控制的Java有效地连接在一起,通过Java辅助Vrml场景提高与内、外部环境的通信联系和融合交互能力。

以自动感应门来说明非编程交互控制的实现:首先在感应门附近设置感知区域,检测虚拟人物是否进入该区域;然后使用时间感应器及位置插补器控制门的开关动作。原理流程如图7所示:

图7 自动感应门的控制原理流程

编程交互控制结合具有强大交互功能的Java语言实现复杂控制要求。以二维导航功能为例:处于三维立体场景中的用户由于受建筑物及自身视觉限制的影响,容易迷失方位,这时可以将三维场景中的方位在二维导航地图中相应显示,以帮助用户确定方向和位置。

实现过程为:制作校园二维平面图,并确定二维平面图与三维场景位置坐标的对应关系。通过浏览器节点类获取用户在三维场景中的位置坐标,同时使用Java设置用户在二维平面图中的对应位置坐标。实现效果如图8所示(其中三角点对应于用户在三维场景中的位置)。

3.3 优化设计

Vrml文件的大小不但决定了它在网络上的传输速度,而且还影响着文件装入内存后的浏览速度。因此为保证能顺畅地漫游虚拟校园,我们必须对Vrml文件进行优化处理。

3.3.1 3Dsmax建模环节的优化

建模环节的优化目标是尽量控制场景模型的复杂程度。为实现这个目的,我们所采取的设计方法是控制建筑物建模的网格面片数,外形尽量使用纹理贴图(处理成jpg格式或gif格式)来代替建模造型,这样既减小了文件的容量和设计工作量,同时也可以达到逼真的视觉效果。

图8 二维电子导航图

3.3.2 Vrml建模及实现环节的优化

3.3.2.1 使用Vrml中的LOD节点

LOD (level of detail)节点可对模型进行优化处理,它通过为每个物体建立多个相似模型,根据观察者和模型之间的距离远近使用从粗糙到细致的物体模型,从而加速模型绘制速度。

3.3.2.2 尽可能使用重用机制

对于相同造型的物体, 第一次使用DEF命名,以后就可以使用USE 来引用;而对相近造型的物体可以使用原型节点PROTO来复制使用。这样可大大简化代码。

3.3.2.3 使用Vrml中的VisibilitySensor节点

该节点可以控制观察者的视力范围, 在视力范围之外的场景可以先不进行调用, 减少传输的数据量, 从而达到实时的目的。

3.3.2.4 使用Gzip对Vrml文件进行压缩优化

3.3.2.5 Vrmlpad自带功能

Vrmlpad自带的压缩和“优化代码”功能可以对生成的文件进行自动压缩和优化,大大减小了文件的冗余。

4 结论

我们基于VRML及相关软件构建了真实逼真的宁波大学科技学院虚拟校园,为师生提供了方便、快捷的交流环境。同时也为虚拟城市、虚拟小区等三维建筑楼群的设计和实现提供了有益的思路。

参考文献:

[1]Yusdi S, Edmond C. Building a netwo rked 3D virtual environment using VRML and Java [J]. IEEE, 2000,(2).

[2]万剑华, 郑红霞, 盛辉,等. 基于VRML 的虚拟校园中三维景观建模[J]. 计算机应用与软件, 2003,(6).

[3]赵一鸣, 吴署F, 潘志庚,等. 网上3D虚拟商城的设计与实现[J]. 系统仿真学报, 2003,(7).

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:网页防火墙研究与实现 下一篇:浅议数据加密技术