毕业论文-基于X3D的虚拟校园漫游系统设计与实现(3)

2019-03-10 11:30

基于X3D的虚拟校园漫游系统设计与实现

扩展的内核之中,并实现了 VRML 的全部功能[14]。

X3D 在 VRML 的基础上提出了新的特性,2004 年 8 月,X3D 规范通过国际标准化组织(ISO)的审批,成为新一代的 Web3D 国际标准。X3D 的主要特性有以下几点:

1. 整合 XML

XML 已经成为整合并管理信息的必选。X3D 采用 XML 作为它的编码规范是有利于增强 X3D 的可移植性,有利于对数据归档和移植,有效延长了数据信息的生命周期。同时,XML 编码可以让 X3D 的开发、播放都变得更加简洁、高效[15]。

2. 统一性

X3D 中订制了在不同浏览器之间协同运作场景和环境的 X3D 行为规范,保证了 X3D场景和环境在不同播放器中的操作的统一性。

3. 组件化

使用轻型的可扩展内核。VRML97 是相对庞大的标准,完全实现是比较复杂的。把VRML 的功能分割到一系列较小的内核,就可以比较容易的实现 X3D,减少实现的复杂性,因而改善了执行过程的可维护性。

4. 可移植性

允许在计算机以外的设备上使用 X3D。

2.3.2 X3D的组成

X3D整体结构包括四个部分:内核(核心特性集),VRML97特性集,应用程序接口和扩展集。如图3所示。特性集是VRML元素的一个子集,是满足特定用户需求的一组功能的集合[13]。 1.内核(核心特性集):定义了VRML中最关键的特性,形成核心构件,并将其封装在一个小型的、可扩展的内核。规范规定内核实现的大小应在Flash和Realplyaer之间,可被用户快速下载,运行时占用很少的系统资源,当前的核心特性集已确定只实现VRML97的54个节点中的23个节点。

2.VRML97特性集:实现内核以外的VRML97元素\的节点被设计为可插拔的构件,通过扩展内核,完整的实现了VR人IL97规范定义的功能,从而确保了X3D与已有的VRML应用兼容。

3.应用程序接口:X3D是描述几何体和行为的一种文件格式,由于使用XML编码,文档对象模型(Document Object Model简称DOM)自动为X3D提供了一组API,外部应用程序可以通过DOM访问X3D文件。

4.扩展集:通过在内核之上进行特性集扩展,实现复杂的或是用户自定义的功能。用户可以在内核之上建立一个完整的VRML97特性集\也可以添加其它的扩展,如NURBS扩展,二进制文件格式扩展等。通过扩展还可以利用VRML97规范中未定义的新的硬件渲染技术。构件化的设计为X3D的内核提供了一种插件机制,允许扩展功能被实时的加入到运行内核。

11

基于X3D的虚拟校园漫游系统设计与实现

图3 X3D的组成

2.3.3 X3D的关键技术

X3D 的两项关键技术是 XML 文档和组件思想。 1.XML 文档

可扩展标记语言(Extensible Markup Language,简称 XML)是万维网联盟(W3C)创建的一组规范。与 HTML 一样,它也源自 SGML(Standard Generalize Markup Language 通用标记语言)。但与 HTML 不同,XML 是一种元标记语言,可以依据用户的需求,自行定义标签

[16]

及属性名,从而突破了 HTML 固定标记集合的约束,具有自描述性和可扩展性的特点。

2. 组件思想

组件思想来源于面向对象理论。基于面向对象的思想的特点,以及传统 VRML 的不易扩展性在最新的X3D规范中,使用了组件思想对X3D规范进行实现,以增强与其他编程语言的交互。依据开发人员的需求,通过调用模块动态的将有用的底层摸块装配成应用处理。使用组件模型的好处有以下几点[17]:

(1)精巧的内核。就实现而言,VRML97 是一个庞大而复杂的标准。通过将 VRML精简为一个小的核心功能集合,减少了实现的复杂度,并且增强了软件的可维护性。同时,精巧的内核可以方便用户,因为并不是每个用户都需要那些复杂的扩展,如果不加分辨的将这些复杂的应用集成上去,无疑会增加用户端的大小,所以只为用户提供简单的内核,扩展依照用户的需求自行加入。

(2)扩展能力。借助扩展集和特性集的概念,开发者可以在内核上添加新的扩展集,也可扩展新的特性。这样就可以依据不同的需求,定制不同的应用。

(3)减少了对资源的占用。一个小型但可扩展的浏览器为用户节省不必要的资源开支将会大大地方便用户的使用。

X3D的组件模型如图4所示。

12

基于X3D的虚拟校园漫游系统设计与实现

图4 X3D的组件模型

2.3.4 X3D文件结构

X3D文件架构包含文件结构、文件头、文件体及注释等内容。X3D文件结构又包含文件头、主程序概貌,在主程序概貌中包括头文档、组件、说明及场景等。在场景中利用基本几何造型造型节点、复杂节点、组节点、纹理节点、效果节点、组件节点、人性化节点及动态感知节点等创建虚拟现实三维立体场景。在编写X3D文件、节点和域时,特别要注意大小写,X3D语言对大小写是敏感的[18]。

X3D文件结构图如图5所示。 Scene(场景): 节点 节点 13

X3D主程序概貌 Head(头文档): component(组件) X3D文件结构 X3D头文件 metadata(元数据) 基于X3D的虚拟校园漫游系统设计与实现

图5 X3D文件结构图

X3D文件语法结构是由X3D文件头、主程序概貌(头文档和场景)组成,其中,头文档又包含组件和元数据;场景主体涵盖X3D所有节点。X3D文件头是序码部分,是X3D文件必须书写的部分。主程序概貌是X3D文件主程序框架的主题部分,是X3D文件的精髓和灵魂。概貌中的头文件作用是引入外部组件及文档说明,概貌中的场景主体描述是对X3D文件三位立体场景中的自然景观、人文环境、建筑造型、街道等创建和编码过程。

2.3.5 X3D场景

X3D 使用场景图(Scene Graph)数据结构来建立 3D 虚拟境界, 虚拟境界由对象构成,而对象及其属性用节点描述,节点是 X3D 的基本单元。每个节点由类型、域、事件、实现、名字组成,X3D 文件包含包括零个或多个根节点。节点按一定规则构成场景图(Scene graph)

[19]。

X3D节点层次结构:场景(Scene)根节点、父节点、子节点。以场景作为三维立体场景的根节点,以此增加节点和子节点以创建种复杂的三维立体场景。在每个X3D文件中只允许有一个场景根节点,在此基础上在增加需要的节点造型。

在一个嵌套节点中,最顶层节点就是根节点,由它派生整个场景的全部节点。父节点是根节点派生出来的,再由父节点派生子节点,循环下去直至全部场景。例如:在场景根节点下,创建一个模型节点(shape节点),此节点成为父节点。父节点又包含两个子节点,分别为Appearance节点和Geometry节点,在Geometry节点下又包含一个叶节点(Sphere节点),完成三维立体空间整体造型。X3D场景节点层次结构如图6所示:

父节点

子节点 Appearance节点 Geometry节点

Sphere节点 场景(Scene) 场景(Scene) 根节点 图6 X3D根节点层次结构图

根据X3D语法结构的要求,除根节点外,其他节点之间可以并列或层层嵌套使用。不同作用的节点有着不同语法结构,父节点包含一个或多个子节点,子节点中又包含子节点等。

2.3.6 X3D常用节点

在虚拟现实中,节点是 X3D 核心所在,可以说如果没有节点,就没有 X3D,所以 X3D

14

基于X3D的虚拟校园漫游系统设计与实现

的节点起着重要作用。学好 X3D 的节点,也就学好 X3D。以下是 X3D中常用的节点[18]。

1.基本2D节点

X3D 支持点的节点是 PointSet,它可以包含 Color 和 Coordinate 节点。Color 节点是用来构造颜色值的索引表用于指定对应点或对象的颜色,Coordinate 节点是用来构造坐标的列表。

绘制直线是采用 IndexedLineSet 节点,它可以包含 Color 和 Coordinate 子节点。IndexedLineSet 节点属性中,coordIndex 属性用来指定直线端点在Coordinate子节点的索引号(0表示第一个点),每条直线索引值3个数组成,前两个是点的索引号,第三个是-1。 Rectangle2D 几何节点用来指定一个平面矩形。Arc2D、ArcClose2D、Circle2D 和 Disk2D节点分别用来绘制圆弧、封闭圆弧、圆和环。

2.基本3D节点

X3D 提供了立方体(Box)、圆柱(Cylinder)、圆锥(Cone)、球体(Sphere)等基本 3D 造型节点。

Box 节点的主要属性是 size,用来确定长度(x 方向)、高度(y 方向)和宽度(z)方向的大小。

Cylinder 节点的主要属性有 height(高度)、radius(半径)以及是否包含顶面(top)、侧面(side)和底面(bottom)等。

Cone 节点的主要属性有 height(高度)、bottomRadius(底面半径)以及是否包含侧面(side)和底面(bottom)等。

Sphere 节点的主要属性是 radius,用来确定球体的半径。 3.复杂节点

利用X3D的几何2D和几何3D节点,可以创建出一些简单的几何造型。一个虚拟现实空间的内容是丰富多彩的,仅有一些简单造型不能满足X3D设计需要,因此需要创建出更加复杂多变的场景和造型以满足设计需求。

X3D复杂几何造型节点涵盖PointSet(点)节点、IndexedLineSet(线)节点、IndexedFaceSet(面)节点、ElevationGrid(海拔栅格)节点及Extrusion(挤出造型)节点等复杂节点。

ElevationGrid节点先将某一个地表区域分割成很多网格,定义网格的个数,再定义网格的长和宽,最后定义网格的高度,可创建该区域所需的海拔栅格几何造型。该节点可以创建高山、丘陵、及不规则地表的空间造型。

Extrusion节点可以创建出用户需要的所有立体空间造型,是X3D文件中最重要、最复杂、也是最有用的节点。Extrusion用以创建出造型,创建挤出造型过程类似于在工业生产中加工材料的流体通过一个金属板的模型孔,按照模型孔的设计,挤压成为一个新的造型,这个过程就是挤出。Extrusion节点主要由crossSection域和spine域 的域值决定。crossSection域控制断面形状,是一系列的二维轮廓线,可以组成圆形、方形、多边形等。Spine域定义一系列的三维路径,crossSection域定义好的断面的几何中心沿spine路径创

15


毕业论文-基于X3D的虚拟校园漫游系统设计与实现(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:预应力空心板施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: