基于 VRML 的三维虚拟校园的设计与实现
摘 要 VRML 是可以用来创作桌面虚拟现实系统的建模语言。本文在介绍了 VRML 的基础
上,以南通大学三维虚拟校园为例,讨论了虚拟场景的构建技术,介绍了一些常用的建模
的 方法 。 关键词 虚拟现实;VRML;虚拟校园 0 引言 VRML(Virtual Reality
Modeling Language),是一种用于描述交互式三维空间的虚拟现实建模语言。借助 VRML
,可以建造虚拟的房间、建筑物、城市甚至星球等现实中的和想象中的事物;可以编写小
程序来控制虚拟空间,赋予浏览者和虚拟空间进行交互的能力。 VRML 制作的三维空间
是以文本文件的形式保存的,由已安装过插件的浏览器来解释展示。文件短小的特点使之
能够很方便的在 网络 上进行传输。因此,这一语言为软件实现网上的虚拟现实系统提供
了重要途径。构建网络上的三维虚拟校园就是 VRML 的一个有效 应用 。1 VRML 要点
VRML 是解释展示的,浏览器就是其解释器。为了使 IE 浏览器能够支持 VRML,需要安
装相应插件。一种比较流行的插件是 Intervista 公司的 World View,另有一种是 SGI(
Silicon Graphics Inc)公司的 Cosmo Player。 VRML 使用场景图数据结构来建立 3D 实
境,这是以 SGI 的 Open Inventor 3D 工具包为基础的一种数据格式,其基本单元被称为节
点,场景图规定了节点之间的等级关系与嵌套关系。VRML 总共定义有 54 个节点,它大
致可以分为如下几类: ● 造型节点:用于表示各种基本的几何体和用于任意几何体
的线框图和面框图。 ● 属性节点:用于定义相关对象的颜色、材质、纹理以及摄像
机组、灯光组、视点、背景等。 ● 组节点:用于将节点分组,把相关节点组合成为
同一个对象。 ● 感应节点:用于感知用户的输入或动作,以触发相应的动作。 ●
其它节点:包括移动和旋转动作,脚本(Script)节点、超链接节点等。 每个具体节
点都包含有一个或多个域(Field),VRML 对域名、域值类型以及缺省值都有规定。下面
就是一个造型(Shape)节点的结构。 Shape{ appearance
NULL //exposed SFNode geometry NULL //exposed SFNode }
这个节点包含 2 个域:appearance 域用于指定节点的外观,;geometry 域用于指定造
型的 3D 构造或几何构造,缺省的 NULL 值表示没有几何结构。 VRML 使用符合右手规
则的三维坐标系统,原点在屏幕中心,它也是使用这一坐标系统的各种几何体的中心。所
以,当根据构图要求,某个几何体的中心不在屏幕中心时,就需要移动坐标系统,即使用
Transform 节点,在该节点内定义的几何体都使用该节点中所定义的平移后的坐标系统。
最后,在场景图结构中需要提及的 Group 节点,即组节点。由于 VRML 只提供最基本
的几何体,因而,要表现一个三维对象或场景,设计者只能通过组合这些基本几何体来实
现。Group 节点为这种组合提供了支持。 VRML 规定使用“#”来标记注释。2 南通大学三
维虚拟校园设计 使用 VRML,可以构建基于网络的三维虚拟校园,下面就以南通大学三
维虚拟校园为例,进行讨论。 构建南通大学三维虚拟校园的目的 虚拟的南通大学校
园是一个规模较大的三维场景,旨在通过网络展示南通大学的校园风貌。游览者可以走进
校园,观赏校园的 自然 风貌,领略校园的生活氛围,在虚拟 旅游 中了解通大。 为了
较真实的反映校园的风貌,可以通过两个方面来表现这个虚拟境界: 第一,要根据南通
大学实际的景观风貌对校园内的各个场景进行建模。这些场景包括道路、楼宇、校门、花
草树木及其它一些建筑物。通过对这些场景的建模构建出虚拟的南通大学校园。并且有一
定的交互能力,例如游览者可以进行门、窗的开关。 第二,通过声音、文字、图片等多
媒体技术手段辅助性的介绍南通大学的概况、 历史 等情况,从而实现介绍南通大学的目
的。 虚拟校园的场景结构 考虑到整个场景中的各个对象是通过空间相对位置的关
系组织在一起的,因此我们先建立一个对象,然后将它作为 参考 来放置其它的对象。
经过 分析 ,我们首先建立整个校园的主干道。主干道在整个校园中起到基线的作用。
这然后以这条道路作为参照,把独立构建的各个楼群、校门、花草树木及其它场景组合安
放在相应的位置。完整的南通大学三维虚拟校园如图 1 所示。图 1 南通大学三维虚拟校园
结构 3 南通大学三维虚拟校园实现 校园背景 为了更逼真的表现出虚拟现实所描述
的环境,需要给虚拟校园设置背景。建立的虚拟校园处于大地中心。背景可以通过
Background 节点实现。具体代码如下: Background { skyColor [0 0
0] frontUrl "" #为前景选择文件 作为贴图,下同
backUrl "" leftUrl "" rightUrl "tia
" } 其效果如图 2 所示。 校园正门 任何一所学校,校园正门都是最为
突出的标志性景观。也是整个学校给游览者的第一印象。就南通大学而言,整个校门由“
南通大学”校名、传达室、自动伸缩门等场景组成。图 2 三维虚拟校园背景 图 3 校名建模
在场景构建中要解决的第一个 问题 是造型的外观的控制。造型的外观是通过材料控制
的,材料属性包括造型的颜色,是否发光,所发光的颜色,是否半透明,透明到什么程度
等等。使用 Appearance 和 Material 节点,就能控制造型的颜色,发光颜色和透明度。例
如,在校门的建模中,传达室是由三个正方体造型构成的,外部是半透明的玻璃。 在场
景构建中要解决的第二个问题是汉字的显示。按照 VRML 规范,它应该支持包括汉字在内
的所有 UTF8 字符,但许多插件都不支持汉字的显示。VRML 不能显示汉字的原因不在于
其语言本身,而是在于 VRML 浏览器的 3D 引擎。为了在 VRML 中实现 3D 字的渲染,通
常有两种方法:第一中是用多边形围成字体,第二中是对字体进行纹理渲染。我们采用的
是第二种方法。校名场景的具体实 现代 码如下: Transform
{ rotation translation 6 0
2 children [ Shape { appearance
Appearance { material Material {diffuseColor
} #使用学校创始人张謇先生手书“南通大学”的纹理贴图
texture ImageTexture {url""}} geometry Box
{size } } ] } 校名建模的效果如图 3
所示。整个学校正门场景如图 4 所示。图 4 学校正门场景
校内建筑举例——方肇周教学楼 校内建筑在虚拟校园中是比较重要的建模对象,特
别是对相关教学楼的建模要比较细致。在我们的设计中,对教学楼外观的建模要求较高,
对于楼外观上标志性的对象进行了仔细的设计,让熟悉校园的游览者一眼就能认同这就是
那幢教学楼。 在教学楼的建模中应该做到以下几点: ● 由于这个系统虚拟的是一
个现实存在的环境,为了取得较真实的效果,现实存在的楼在虚拟环境中都应该进行建模
。 ● 为某一楼宇建模时,要尽可能的利用重用机制简化程序代码。这一方面可以减
少工作量,另一方面可以减轻浏览器负担,提高浏览速度。 ● 选择校园中的典型楼
宇作细化场景,其它楼可进行复制,或稍做修改。 教学楼的建模是一个较复杂,较大的
场景,需要将整个教学楼分割建模,例如:窗户、单个房间、由多个房间构成的楼层、由
多个楼层构成的大楼。在方肇周教学楼的建模中,由于教学楼的前后大部分是对称的,因
此我们可以先对前面的部分进行建模,最后用 rotation 节点旋转,再进行修改。 下面的
代码描述了模型插入和旋转的运用: Group { children [ Transform
{ Translation -3 children [ DEF Part
Inline { bboxSize bboxCenter
url "" } ] } #这一
段用于插入教学楼的一部分 Transform { Translation
-3 children USE Part } #对上面的建模重用
Transform { Translation -12 rotation 0 1 0
children USE Part } #旋转 ] } 方肇周
教学楼建模的效果如图 5 所示。图 5 方肇周教学楼建模 植物 在真实校园中,种植
有大量景观植物。这一点在构建虚拟校园时也应当加以考虑。以树为例,在建模过程中可
以遵循以下步骤: ● 节点使用 Billboard,它有一项特殊的功能,就是使它的子节点
永远面向观看者。 ● Box 的设置是根据树的高低来决定的,并且要使长方体基本没有
厚度。 ● 使用 PhotoShop 生成和处理树的纹理映像。首先将拍摄的树的照片上除了
树以外的其它事物处理掉,最好树叶间的空隙也能处理出来,使树的最终效果更好;然后
把图像的背景设置为背景透明;调整图像的大小,将其存储为 GIF 文件格式。这是因为
GIF 文件格式可以存储一些背景颜色并将其转换成透明性信息,而 JEPG 和 MEPG 不能存
储透明性信息。 ● 将处理好的树的图像映射到 Box 节点上去。 树的建模代码具体
如下: Billboard{ Children Shape{ appearance
Appearance{ texture
ImageTexture{url””} } geometry Box{size 2 5
} } } 其建模的效果如图 6 所示。 校园中的花草也可以通
过类似 方法 实现。 图 6 树的建模 场景组合 当各部分场景构建完成后,即可使用
行插入节点 Inline 将这些场景组合成为一个完整的三维虚拟校园。Inline 节点有一个 url 域
,该域值指定了一个 URL,这个 URL 就是将要插入到 VRML 世界中的文件位置。URL 告
诉了 VRML 浏览器如何能获得这个文件,在哪里能找到这个文件以及这个文件的文件名。
URL 还可以指出该文件是在 WEB 上还是在本机的硬盘中。在场景组合时,经常需要调整
个部分场景之间的物理位置和比例。 下面的代码将构建好的方肇周教学楼安置在虚拟校
园中。 Transform { translation 0 0 -
150 rotation 0 1 0 children
[ DEF JSJ Inline
{ url "" } ]
} 最终构建完成的三维虚拟校园效果如图 7 所示。图 7 南通大学三维虚拟校园 4
结束语 VRML 提供了较为完善的节点来构建具有真实感的三维场景。使用 VRML 构建的
三维虚拟校园,可以供浏览者在网上进行参观。浏览者在参观时可以自由走动,而不是象
一般的三维造型软件那样必须预先设定好一条参观路径。 需要说明的是, 目前 还没有
一个成熟的如网页设计那样的所见即所得的创作工具。在使用 VRML 进行三维场景构建时
,工作是相当繁琐的。 参考 文献 [1]Andrea L Ames, David R Nadeau, John L
Moreland 著,宗志方等译. VRML 资源手册[M]. 北京: 电子 工业 出版社,1998。 [2]
顾翔,王汝传. Internet 上的虚拟现实建模语言—VRML[J]. 电子工程师,1999,(6):10-
13。