基于X3D的虚拟校园漫游系统设计与实现
图13 图书馆建筑设计层次结构
图书馆北馆场景建设主要用到了以下的X3D节点:
(1)Shape造型节点。该节点是一切几何造型的父节点。该节点包含两个子节点,分别为Appearance(外观)节点与Geometry(几何造型)节点。
(2)Appearance节点。该节点用来定义物体的外观属性,通常为Shape节点的子节点。Appearance节点指定几何物体造型的外观视觉效果,包含了Material(外观材料)节点、Texture(纹理印象)节点和TextureTransform(纹理坐标变换)节点。通过Material域,可以设定材料的颜色,该颜色为单一的颜色。通过texture域,可以对几何造型进行贴图,使造型更为逼真。而TextureTransform域,则可以定义贴图的方式,比例等,已达到更好的贴图效果。
(3)Box节点。该节点的作用是生成立方体。通过调整该节点的size(尺寸)域的域值,可以改变立方体的长、宽、高。
(4)Cylinder节点。该节点的作用是生成圆柱体。Cylinder 节点的主要属性有 height(高度)、radius(半径)以及是否包含顶面(top)、侧面(side)和底面(bottom)等。 (5)IndexedFaceSet节点。该节点是一个三维立体几何造型节点,表示一个由一组顶点构建成的一系列平面多边形形成的3D立体造型。
(6)Billboard节点。该节点可以在世界坐标系之下创建一个局部坐标系,选定一个旋转轴后,这个节点下的子节点所构成的虚拟对象的正面会永远自动地面对观众。通过该节点axisOfRotation域,可以设定绕哪一个坐标轴旋转。
(7)Group节点。该节点可以用来编组各种几何造型,并将其作为一个整体造型来看待。把Group节点中所包含全部节点视为一个整体,当作一个完整的空间造型来对待。如果利用DEF(重定义节点)为Group节点命名,则可使用USE(重用节点)在相同的文件中重复使用这一节点,从而增强程序设计的可重用性和灵活性。
(8)Transform节点。该节点能对几何造型进行平移、旋转、缩放。通过translation(方位)域值、rotation(旋转)域值、scale(规模)域值,可以达到改变造型位置、大小的目的。
图书馆北馆的场景建设方法如下: (1)图书馆
图书馆的造型大体上可以看做是大小不同的立方体,根据空间方位的不同而拼凑而成的。可以从图书馆的第一层起,逐层往上添加造型。方法如下:
1)利用Box节点、Cylinder节点,根据比例构造出立方体圆柱体等造型,作为图书馆的部件。
2)利用Group节点,对几何造型进行编组、组合,生成更为复杂的几何造型。 3)充分利用DEF节点和USE节点,增强程序的可重用性和灵活性。
4)利用Transform节点对几何造型进行大小以及空间上的变换,将几何造型有层次的拼合起来。
26
基于X3D的虚拟校园漫游系统设计与实现
5)利用Appearance节点对几何造型的外观进行编辑,使之形象更为逼真。 (2)图书馆周边环境
图书馆周边环境大体上有绿化带、树木以及道路所构成。建设方法如下:
1)道路。利用Box节点,生成大小不同的立方体,利用Transform叠加起来,形成不同层次的路面,用TextureTransform节点进行纹理的映射。
2)绿化。利用Box节点,生成立方体覆盖于地面之上,利用TextureTransform节点映射绿地图片。
3)树木。首先需要一张png格式的树木图片,图片只保留树木的形象,此操作可通过photshop抠图实现。利用IndexedFaceSet节点,将图片竖直于世界坐标系中。利用Billboard节点节点将该造型包含进去。这样生成的树木就会始终正面面向观众。此方法避免了构造复杂的树木造型,且真实感较强。
将上述构建的对象有机地结合起来,就构建出图书馆了,如图14所示。
图14 图书北馆运行效果图
其他建筑物的构建方法与图书北馆的构建方法大致相同,此处不再一一累述。现在展示其余几个标志性建筑物的运行效果图。
2.图书馆南馆
运行效果图如图15所示。
27
基于X3D的虚拟校园漫游系统设计与实现
图15 图书馆南馆运行效果图
3.科技楼
运行效果如图16所示。
图16 科技楼运行效果图
4.原平体育馆 运行效果如图17所示。
28
基于X3D的虚拟校园漫游系统设计与实现
图17 原平体育馆运行效果图
4.2.4 树木的设计
在虚拟场景中,树木的添加极大地改善了场景的逼真程度和真实感,场景中的绿色树木越多,视觉感观效果越好。虚拟校园系统中一些景观植物的设计,制作树木场景最为复杂。主要是因为树木本身结构复杂、制作时间长、系统开销增大。所以,树木作为自然场景的重要构成因素,一直是虚拟环境中非常重要的研究对象。如果将树分解成大量的小段,每一段用基本几何体来近似,这样得到的树木场景模型的多边形数将达到一个极高的数量级,这显然是不可取的,而且对于实时响应要求也是不合理的。所以,想通过详细建模的方法来表示大量的树木是很难的。利用纹理映射来实现树木的简单表示是可取的捷径。有几种表示方法:粒子分形法和利用纹理来表示的方法、十字交叉法和公告牌(Billboard)法等。下面主要介绍本系统用到的公告牌(Billboard)法。
公告牌技术(Billboard)是采用多边形面模拟,当视点改变时,此多边形会绕指定的轴旋转从而保证始终面向着视点。只要时刻保持二维纹理树林图像的法线矢量指向观察者,就可以形成非常真实的三维景观,从不同的角度观察均可获得树木的较为完整的图像。在X3D中,Billboard节点提供了这一功能。通过设定Billboard中axisOfRotation域,可以规定树木的旋转轴。
以下是利用Billboard技术构建的树木,不论如何改变视角,树木始终正面朝向浏览者。如图18、19所示。
29
基于X3D的虚拟校园漫游系统设计与实现
图18 树木效果图
图19 树木效果图
4.3 虚拟校园的整体拼合
要把不同的模型整合在一起,必须首先深刻了解坐标系。在X3D中,能创建任意数目的坐标系。每个新坐标系都是相对于另一个坐标系的原点而定位的,称为坐标平移。当一个新的坐标系相对于另一个时,我们说新坐标系是嵌入到父坐标系中的子坐标系。同样地,父坐标系也能嵌入到另一个坐标系中等等。坐标系的这种父子关系产生一个坐标系的家族树。坐标系树中最上面的父坐标系是X3D文件中的根坐标系。每个X3D文件都有一个根坐标系。所有其他坐标系,根据它们在坐标系家族树中的位置,直接或间接地是根坐标系地后代。所以根坐标系常常被称为世界坐标系(World Coordinate System)。
造型总是创建于一个坐标系中。如果使用Transform节点创建另一个坐标系,在该坐标系中创建的任何造型都是被放置在新坐标系的原点上。如果Transform节点的坐标原点是由父坐标系的原点平移而得,在Transform节点的坐标系中的任何造型将坐标系一起平移,相对于父坐标系来说是平移过的。
30