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