【摘 要】Web3D联盟发布的X3D标准作为下一代面向互联网的三维图形描述规范,已经被ISO批准成为国际标准,越来越广泛地应用于教育、训练、模拟等方面。该文从介绍虚拟现实技术的发展情况入手,深入分析了X3D规范的文件结构和语法结构。提出了利用X3D规范进行虚拟现实场景建模和系统优化的方法,对于提高景物建模的真实感和降低景物建模的复杂度都有重要的现实意义。
【关键词】虚拟现实 X3D 建模 核心期刊论文发表网
随着第三次科技革命的到来,特别是计算机 网络技术的飞速发展,虚拟现实技术作为第 二代互联 网技术的重要基础,已经越来越引起人们的广泛关 注并被广泛地应用于军事、教育、医学、科研、体育、卫生等?社会生活的方方面面 。虚拟现实系统主要由立体眼镜、数据头盔等硬件设备和 VRML、OpenGL、Java3D、X3D等软件组成。X3D是一种为描述网络上三维物体及其行为而设计 的面向对象的基于组件 的三维图形规范。2002年3月发布了第一版,2004年8月被 ISO(国际标准化组织 )正式批 准成为 旧际标准 (ISO/IEC19775)。由于X3D本身的平台无关性、易扩展性、实用性和灵活性,尤其是VRML和 XML的集成,非常适合于分布式虚拟环境系统的开发嘲。本文全面研究了利用 X3D进行场景建模和优化的关键技术并给出了具体示例。
1虚拟现实技术
虚拟现实(Virtual Reality简称VR)是1989年由美国VPL Research公司创始人Jaron Lanier正式提出并作为商 品加 以应用的 。虚拟现实技术日是指利用计算机系统、多种虚拟现实专用设备和软件构造一种虚拟环境,实现用 户与虚拟环境直接进行 自然交互和沟通的技术。比如我们在 电影 院戴立体眼镜看的 3D电影《大战外星人》,就有一种 “身临其境”的感觉 。虚拟现实是一门融合了计算机图形学、多媒体技术、计算机仿真、人机接口技术、人工智能、传感技术、网络技术等多种技术的交叉前沿学科。其显著特点是沉浸感 (Immeion)、交互性(Interaction)、想象力 (Imagination)的 3I特性。
虚拟现实系统主要 由硬件和软件两 部分组成 。当前虚 拟现实系统的主要硬件设备有立体投影 、立体眼镜 、三维 头盔 显示 器 、数据手套 、三维语音识别 系统 、三维 空间跟踪定位器 、三维空 间交 互球 、多通道环幕 系统等 。虚 拟现实软件 系统包括 :虚拟 现实 软件X3D(可扩展 3D)、VRML(虚拟现实建模语言 )、Java3D、OpenGL、Vega、Converse3d、3DMAX、Maya等。
2 X3D的组成
X3D(Extensible 3D)是 由 Web3D联盟于 1998年底提 出的,又称为 VRML2000X规范 。X3D采用 了 XMI 语苦进行描述便于 因特网传输及浏览器解析,是下一代具有扩充性的三维 图形规范 ,采用模块化 的结构 ,整合 了 XML、Java、流媒 体技术等先进技术,具有高效 的 3D计算能力、渲染质量和传输速度 。得到了包括 Sun、Sony、Shout3D、Oracle、Autodesk/Disereet、NASA等多家公司和科研机构的支持。
X3D系统结构是以组件技术为基础的。包括内核,VRML97特征集,应用程序接 I:1和扩展集四个部分,如图1所示。内核(Core)封装了VRML97中 54个节点里的 23个节点,形成一个非常小的核心组件,大小介于 Flash和 RealPlayer之间,运行时占有少量资源,具有可扩展性 VRML特征集将 VRML97的其余节点设计成可插拔的组件,保证了X3D能向前兼容 vRML及系统运行效率 。X3D采用 XML编码[41,文档对象模型(Document Object ModelDOM)自动为 X3D提供一组应用程序接口,外部应用程序可以通过 DOM 访问 X3D文件,此外内部(脚本)创作接口(Script Authoring Interface,SAI)和外部创作接口(External AuthoringInterface.EAI)可以实现 X3D内外部场景的动态交互。SAI是在X3D的 Script节点内部利用Java或者 JavaScript语言编写脚本来实现 X3D内外部场景交互 。EAI是用 Java语 言定 义的一系列类包。外部应用程序可以通过访问这些类包来实现对 VRML场景的操作 、控制和修改。X3D 允许用户在内核上进行特征集扩展 ,实现复杂的或者用户 自定义的功能 ,形成可插拔的扩展集 。
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场景主体 由一对和组成的.中间可以插入背景节点 、视 觉节点 、导航节点 、集合节点 、复杂造 型节点等 ,通过这些节点 的组织来创建要 表示的三维空间的场景和造型。图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个十六进制来表示。把简单分量纹理与物理的基本材质颜色综合起来,就会产生一种非常真实的表面 。
3.2.2多分辨率多层次细节模型
LODt~(1evel ofdetail),根据场景对象在虚拟环境中的默写特殊值 ,区分该对象被显示的细致程度,是其基本思想。可以采用基于距离的LOD,根据虚拟物体到观察者的距离,决定物体的细致程度。当虚拟物体距离观察者越来越远时,它的一些表现细节将消失.因此减少远距离物体的外观细节不仅不会影响整个场景的表现效果,还可以节省大量的计算资源。可以设定相应的阈值来标识距离的远近。有些资料也根据这个原理用来优化三角形的数量,比如一个圆,如果不是在近处看,用六边形就可以代替,如果再远甚至可以用一个方形代替。网格的运用单个多边形有自己一套属性和顶点,可以把许多属性相同的多边形整合成网格,如道路,小山等不同类的地形,网格使多边形共享共同的属性和顶点,在实时运行时系统处理网格效能更高,可以大大提高运行性能和显示效果。
X3D中的 GeoLOD[6]节点体现了上述思想 。图 5显示的是视点距离物体 的距离在由远及近变化时 ,观察到的一个房屋的示意图。部分伪代码如下
3.2.3复用技术
X3D的复用技术主要是包括两个方面:一个是文件外部的复用.一个是文件内部的复用。文件外部的复用主要是采用按层级集成进行渲染绘制。基本思想就是采用“分而治之”的思路,即把整个大的场景分成若干个小的场景进行渲染,再按照层次结构进行组织,自底层向上的进行渲染封装,自顶层向下的进行调用,X3D提供的 Inline节点体现了上述思想,允许在文件内部引用已经制作好的外部 x3d文件。文件内部的复用主要是在文件的内部可以预先定义一些节点 (比如 DEF节点),然后在文件中直接可以加以引用,而不需要重新定义(比如 USE节点)。X3D还允许自定义新的节点,可以在已经定义好的节点基础上进行扩展然后封装成新的节点 (比如 PROTO原型节点 ),都可 以直接加以引用,减少了代码的编写工作量。
3.2.4文件压缩
X3D二进制格式 (x3db文件 )支持加密和压缩 。开发中的 Compressed Binary encoding(压缩 二进制编码 )为 X3D提供一个安全的加密和高压缩比(比 VRML采用的 gzip格式更高的压缩比)的环境。X3D允许采用浏览器支持 的多种编码模式进行混合编码,解析时只需要按照特定浏览器需要进行解析即可.
4结束语
本文介绍了近年来虚拟现实的发展情况,分析了 X3D的系统结构,提出了场景建模和优化的具体方法。通过实验,可以发现:所制作出的场景文件体积较小(基本的模型建立都在lk),适合网络传输与下载;建模 和交互都 比较容易(支持节点比较多),特别是对于Java语言的支持,能够很好的应用于跨平台的系统中;与 XML语言的结合,能够保证所建系统 的鲁棒性。
参考文献:
[1]Kotz D,Gray R S.Mobile Agent and the Future of the Internet[J].ACM Operating System Review,1999,33(3):7-13.
[2]张金钊,张金锐,张金镝.X3D虚拟现实设计[M].北京 :电子工业 出版社,2007.
[3]王志强,蔡平.基于X3D的虚拟环境建模的应用研究[J].福建电脑,2008(11):109.
[4]刘广涛,吴升.基于X3D的场景交互技术在虚拟生物博物馆中的应 用[J].系统仿真学报,2008,20(S1):348—351.
转载请注明来自:http://www.lunwencheng.com/lunwen/lig/7403.html