3 X3D场景建模
3.1 X3D节点建模
3.1.1 X3D文件结构
X3D 文件结构采用 ISO/IEC 19775—1的 7.2.3,Abstract X3D structure中的定义。X3D文件结构包括 X3D文件头、文档类型(DTD格式)及X3D主程序概貌等内容。X3D主程序概貌包括头文档和场景。头文档包括组件和元数据。X3D场景包括各种节点。通过组织各种节点来创建虚拟的三维场景。X3D的文件结构如图 2所示 。
3.1.2 X3D 的语法结构
在 ISO/1EC 19775—1中规定 X3D文件头是一个单行的 UTF一8文本用以识别此文件为一个 XML文件 ,然后为用以识别验证用的 XML DTD 的 XML声明.然后为包括用以识别验证用的 XML Schema、文件所必需的 X3D概貌和 (可选的)额外的组件 的 X3D标签。X3D主程序概貌定义了一 系列 内建节点及其组件的集合,X3D文档使用的属性必须在指定 的概貌的集 合的范围内。组件就是有相同功能的一类节点的集合,比如 Geometry3D组件包含 了所有的三维几何节点。X3D场景主体 由一对<Scene>和</Scene>组成的.中间可以插入背景节点 、视 觉节点 、导航节点 、集合节点 、复杂造 型节点等 ,通过这些节点 的组织来创建要 表示的三维空间的场景和造型。图3是床头的背 子的语法结构 图。
实现的背景部分和被子部分伪代码如下:
具体实现环境为 X3D—Edit 3.1编辑器,浏览器是 BS Contact 7.0,实现后的效果如图4所示 。
3.2场景 的优 化
3.2.1场景模型优化
为了保证虚拟场景的实时绘制,我们有时必须舍弃一部分真实性。我们采用了贴图的办法,主要有两种方法 :一是应用绘 图软件或者是已有的图库 。二是对建筑物的各个观察面进行拍照。纹理贴图,对于建筑物等实体建模过程中,造型与贴图是 密不可分的,实体的细节 ,建模时可以用贴 图达成近似的效果,从而减少实体面数,提高运行速度。但是贴图的要求有两点 :一是格式为 RGB,大小以像 素为单位,长和宽都应该是2的幂,否则会扭 曲或无法正常显示。二是编辑贴图时,最好将同一实体所有面的贴图编辑到 同一文件中,编辑操作点来对不 同部分贴 图,可以提高运行速度。要想加强真实感,需要添加光照,主要景物上可以采用环境光照和方向性光照两种最基本的光照模式来照亮场所中的景物,其光照影响范围设为无穷远,在局部处理细节上,还可以添加点光 照和探照灯两种光照模式,在创建白云背景,添加雾效果和声音对象到场景图分支,效果就比较逼真了。使用简单的纹理分量,在取得预想效果的前提下尽可能使用小面积的纹理。纹理的几何尺寸越小,文件的数据量也就越小,对于内容比较简单的纹理使用 128 128与使用 16 16像素看起来区别并不明显,但文件的大小却差了几十倍。还有使用单分量(灰度图 )的纹理通常 比使用三分量(R,G,B)更为有效 。因为单分量纹理每一个字节只用一个十六进制值就可以表示了,而一个三分量纹理则需要 3个十六进制来表示。把简单分量纹理与物理的基本材质颜色综合起来,就会产生一种非常真实的表面 。