1、第六讲第六讲 虚拟现实建模语言虚拟现实建模语言X3D1X3D概述概述v Web3D出自出自Web3D联盟联盟(Web3D Consortium(W3DC),其前身是,其前身是VRML联盟。联盟。v所谓所谓X3D标准就是标准就是XML标准与标准与3D标准的有机结合标准的有机结合,X3D被定义为可交互操作,可扩展,跨平台的被定义为可交互操作,可扩展,跨平台的网络网络3D内容标准。内容标准。1.1坐标系统与计量单位坐标系统与计量单位vX3D采用常用的三维笛卡尔坐标系统。屏幕的正采用常用的三维笛卡尔坐标系统。屏幕的正右方默认为右方默认为X正轴,屏幕的正上方默认为正轴,屏幕的正上方默认为Y正轴,正轴,屏
2、幕向外默认为屏幕向外默认为Z正轴。正轴。vX3D的计量单位主要包括三维空间的长度、角度的计量单位主要包括三维空间的长度、角度、时间、颜色等单位的约定。、时间、颜色等单位的约定。1.2 X3D浏览器和制作软件浏览器和制作软件vX3D浏览器主要可以分成两种类型:浏览器主要可以分成两种类型:第一种是独立应用程序,即不依赖第一种是独立应用程序,即不依赖Web浏览器浏览器独立执行的应用程序,如独立执行的应用程序,如Octagon Player、Xj3D等。等。第二种是第二种是Web浏览器的插件形式,需内嵌至浏览器的插件形式,需内嵌至WWW浏览器内,如浏览器内,如BS Contact、Flux Playe
3、r等。等。vX3D制作软件有:制作软件有:X3D-Edit、BS Editor、Vivaty Studio、SwirlX3D Editor、Wings3D、Octaga Exporter、VrmlPad等。等。1.3 X3D文件的类型文件的类型vX3D的档案可以采用的档案可以采用XML或或VRML的语法,也可的语法,也可以使用以使用UTF-8文本格式或二进制编码格式。不同文本格式或二进制编码格式。不同的格式可以通过文件的后缀表示出来,一般的的格式可以通过文件的后缀表示出来,一般的X3D制作软件也同时支持制作软件也同时支持VRML格式的格式的.wrl文件。文件。2.1 场景图、节点与字段场景图、
4、节点与字段v场景结构图场景结构图2.2 字段的数据类型字段的数据类型vX3D中字段的值,可以是布尔值、整数、浮点数中字段的值,可以是布尔值、整数、浮点数、向量、字符串甚至表示图片的点阵值。、向量、字符串甚至表示图片的点阵值。2.3 文档头文档头2.4 注释和保留字注释和保留字v在编写在编写X3D代码时,为了使代码结构合理、清晰代码时,为了使代码结构合理、清晰、具有层次感,经常需要在代码重添加注释信息、具有层次感,经常需要在代码重添加注释信息。2.5 X3D文档结构文档结构v有些节点可以包含子节点,因而产生父节点子节有些节点可以包含子节点,因而产生父节点子节点的关系,但这样的关系并不是可以任意建
5、立的点的关系,但这样的关系并不是可以任意建立的。例如,。例如,Shape(形状)节点可以包含一个(形状)节点可以包含一个Box(立方体)节点以表示其几何形状:(立方体)节点以表示其几何形状:2.6 节点复用(节点复用(DEF与与USE)v在在X3D场景中往往有多个相同属性的节点出现,场景中往往有多个相同属性的节点出现,为了不重复添加节点属性,为了不重复添加节点属性,X3D中的节点属性窗中的节点属性窗口中提供了口中提供了DEF 和和 USE两个属性可以实现节点两个属性可以实现节点属性的复用。只需要使用属性的复用。只需要使用 DEF 语法命名第一次出语法命名第一次出现的节点,再以现的节点,再以 U
6、SE 语法使用该命名的节点,语法使用该命名的节点,并不需要每一个节点都重新定义一遍。并不需要每一个节点都重新定义一遍。3.1 X3D的编辑器的编辑器-X3D-EditvX3D-Edit 是图形化是图形化Extensible 3D(X3D)文件的文件的开源编辑器。它支持开源编辑器。它支持X3D和和VRML格式,它基于格式,它基于XML编辑器编辑器Xeena,并且在,并且在JAVA平台上运行。平台上运行。v在编辑在编辑 VRML 或或 X3D 场景图文件时,场景图文件时,X3D-Edit 可以提供简化的无错的创作和编辑方式。可以提供简化的无错的创作和编辑方式。X3D-Edit 通过通过 XML 文
7、件定制了上下文相关的工具提文件定制了上下文相关的工具提示,提供了每个节点和属性的概要,以方便作者示,提供了每个节点和属性的概要,以方便作者对场景图的创作和编辑。对场景图的创作和编辑。3.2 X3D-Edit最基本的安装和配置最基本的安装和配置v安装和配置步骤如下:安装和配置步骤如下:1.安装安装 VRML/X3D浏览器,本书使用浏览器,本书使用BS Contact 7.2作为作为Web浏览器插件。浏览器插件。2.安装安装 Java 虚拟机或虚拟机或Java SDK(http:/ X3D-edit。并安装。我们将使用。并安装。我们将使用X3D-Edit进行进行X3D的设计和应用。的设计和应用。3
8、.3创建一个新的创建一个新的X3D文件文件v1 运行运行X3D-Edit,出现如图所示的界面。,出现如图所示的界面。3.4 修改修改head节点下的内容节点下的内容vhead 是是 X3D的第一个节点,放在场景节点的开的第一个节点,放在场景节点的开头。它对应于头。它对应于HTML中的中的标记。标记。4.1 Shape及外观材质节点及外观材质节点v在在X3D 文档中,文档中,Scene 是是X3D场景图的根节点,场景图的根节点,所有的场景节点都应添加到该节点下,并且在每所有的场景节点都应添加到该节点下,并且在每个文件里只允许有一个个文件里只允许有一个Scene 根节点。根节点。4.1 Shape
9、及外观材质节点及外观材质节点vShape、Appearance和和Material三个节点可以搭三个节点可以搭建建X3D显示三维几何体的基本框架,常用的代码显示三维几何体的基本框架,常用的代码编码方式如下编码方式如下4.2 文本节点文本节点(Text)vText 是一个用于文本显示的几何节点,是一个用于文本显示的几何节点,Text节点节点的使用语法为:的使用语法为:4.2 文本节点文本节点(Text)v【例【例5-1】显示文字信息,代码如下】显示文字信息,代码如下4.3 2D图形的创建图形的创建v【例【例5-2】显示四个像素点】显示四个像素点4.3 2D图形的创建图形的创建v【例【例5-3】显
10、示】显示4个不同颜色点的像素点。个不同颜色点的像素点。4.4 基本基本3D造型造型vX3D提供了立方体提供了立方体(Box)、圆柱、圆柱(Cylinder)、圆锥、圆锥(Cone)、球体、球体(Sphere)等基本等基本3D造型节点。造型节点。4.4 基本基本3D造型造型v【例【例5-6】定义一个长为】定义一个长为2,宽和高均为,宽和高均为1的立方体的立方体。5 移动、旋转和缩放移动、旋转和缩放v在在X3D场景空间中,每一个造型都有其空间坐标场景空间中,每一个造型都有其空间坐标,通过修改空间坐标系就可以使该造型在场景空,通过修改空间坐标系就可以使该造型在场景空间中移动、旋转和缩放等。间中移动、
11、旋转和缩放等。平移使用平移使用Transform节点的节点的Translation属性。属性。旋转使用旋转使用Transform节点的节点的Rotation属性。属性。缩放使用缩放使用Transform节点的节点的Scale属性。属性。6 背景环境的设计背景环境的设计v背景环境主要讲两个节点,即背景环境主要讲两个节点,即Background背景背景节点和节点和Fog雾节点。雾节点。Background节点使用六张静态图片构成节点使用六张静态图片构成X3D世界中的背景,此背景节点用来表示彩色的背世界中的背景,此背景节点用来表示彩色的背景以模拟地表及天空,也是放在场景中所有几景以模拟地表及天空,也
12、是放在场景中所有几何对象与地表天空之间的背景材质、或全景画何对象与地表天空之间的背景材质、或全景画背景。背景。Fog节点将对象与节点将对象与color域指定的色彩相混合而域指定的色彩相混合而营造出一种类似现实环境中的营造出一种类似现实环境中的雾雾的大气效果的大气效果7 视点和导航视点和导航v在在X3D场景空间中,为了能够让浏览者方便地控场景空间中,为了能够让浏览者方便地控制自己的观察位置和角度,制自己的观察位置和角度,X3D提供了视点节点提供了视点节点Viewpoint。同时为了能以不同方式来浏览,。同时为了能以不同方式来浏览,X3D提供了提供了NavigationInfo导航节点。导航节点。
13、Viewpoint节点指明了一个节点指明了一个X3D场景空间中的场景空间中的观察位置和视角方向。观察位置和视角方向。NavigationInfo节点用来指定场景的观看方式节点用来指定场景的观看方式和替身的物理特征。和替身的物理特征。7 视点和导航视点和导航8 光源处理光源处理v在在X3D场景空间中,可以使用场景空间中,可以使用点光源节点点光源节点(PointLight)、平、平行光源节点行光源节点(DirectionalLight)和聚光性光源节点和聚光性光源节点(SpotLight)来处理造型物体的光照明亮程来处理造型物体的光照明亮程度。度。9 纹理映射纹理映射v通过纹理映射和处理可以为物体
14、的表面细节增强通过纹理映射和处理可以为物体的表面细节增强表现力。表现力。10 多媒体效果多媒体效果vX3D对多媒体的支持是通过这三个节点来实现的对多媒体的支持是通过这三个节点来实现的:AudioClip(音频数据节点音频数据节点)、Sound(音频播放音频播放节点节点)以及以及MovieTexture(影像纹理节点影像纹理节点)。v【例【例5-25】影像纹理】影像纹理11.1动画与交互实现原理动画与交互实现原理v在在X3D中,除了节点构成的层次体系结构之外,中,除了节点构成的层次体系结构之外,还有一个还有一个“事件体系事件体系”。“事件体系事件体系”由相互通信的由相互通信的节点组成。事件节点组
15、成。事件(Events)是在是在 X3D 运行时环境中运行时环境中产生行为的主要方法,这种方法用来改变域的输产生行为的主要方法,这种方法用来改变域的输入值或接受域的输出值。入值或接受域的输出值。11.2动画和交互节点动画和交互节点v在在X3D中,动画的产生除事件路由之外,必然涉中,动画的产生除事件路由之外,必然涉及到事件产生的源和作用的目标,包括时间触发及到事件产生的源和作用的目标,包括时间触发器、各种类型的插值器等。器、各种类型的插值器等。v【例【例5-26】使用坐标插值器节点】使用坐标插值器节点11.2动画和交互节点动画和交互节点v【例【例5-29】当】当鼠标鼠标处在立方体的时候,就会有一处在立方体的时候,就会有一个小球跟随个小球跟随鼠标鼠标移动移动11.2动画和交互节点动画和交互节点v【例【例5-30】当单击中间小球时,将打开点光源,】当单击中间小球时,将打开点光源,照亮周围的两个球照亮周围的两个球作作 业业v1、检索检索x3d相关资料,练习相关资料,练习教材教材p132-p173实例实例 THE END