《虚拟现实技术第4章3942034.pptx》由会员分享,可在线阅读,更多相关《虚拟现实技术第4章3942034.pptx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、虚拟现实技术4-2第4 章 虚拟现实建模语言VRML 4.1 VRML 语言概述4.2 VRML 的语法基础4.3 VRML 的空间造型4.4 VRML 的场景效果4.5 VRML 的动态交互4-34.1 VRML 语言概述 VRML VRML(Virtual Reality Modeling LanguageVirtual Reality Modeling Language,虚,虚拟现实建模语言)是一种用于创建三维造型和渲拟现实建模语言)是一种用于创建三维造型和渲染的图形描述语言。染的图形描述语言。4.1.1 VRML 的发展历程4.1.2 VRML 的特点4.1.3 VRML 编辑器4.1
2、.4 VRML 浏览器4-44.1VRML 语言概述4.1.1 VRML 的发展历程l l 1994 1994 年,年,Mark Pesce Mark Pesce 和 和Tony Parisi Tony Parisi 创建了可用来浏览 创建了可用来浏览Internet Internet 上三维 上三维画面的浏览器原型,称为 画面的浏览器原型,称为Labyrinth Labyrinth(迷宫),首次提出了(迷宫),首次提出了VRML VRML 一词。一词。l l 1994 1994 年,由 年,由SGI SGI 公司的工程师 公司的工程师Gavin Bell Gavin Bell 组织制订了 组
3、织制订了VRML 1.0 VRML 1.0 的规范 的规范草案,并于同年 草案,并于同年10 10 月在芝加哥召开的第二届万维网国际会议上公布。月在芝加哥召开的第二届万维网国际会议上公布。l l VRML 2.0 VRML 2.0 是以 是以SGI SGI 公司的 公司的Moving Worlds Moving Worlds 提案为基础的,节点类型被 提案为基础的,节点类型被扩展为 扩展为54 54 种,支持的对象也已包括动态和静态两大类。种,支持的对象也已包括动态和静态两大类。l l VRML VRML 的国际标准草案于于 的国际标准草案于于1998 1998 年 年1 1 月正式获得 月正
4、式获得ISO ISO 的认定和发布,通 的认定和发布,通常被称为 常被称为VRML 97 VRML 97。l l 1998 1998 年,年,VRML VRML 组织更名为 组织更名为Web3D Web3D 组织,并制订了一个新的标准 组织,并制订了一个新的标准X3D X3D(Extensible 3D Extensible 3D)。)。4-54.1VRML 语言概述4.1.2 VRML 的特点l l基于基于InternetInternet共享的虚拟世界共享的虚拟世界l l较低的配置需求较低的配置需求 l l真正的动态交互真正的动态交互l l适用于网络现状的技术适用于网络现状的技术l l开放式
5、的标准开放式的标准 4-64.1VRML 语言概述4.1.3 VRML 编辑器 编辑编辑VRMLVRML源程序代码,可以使用几乎任何一源程序代码,可以使用几乎任何一种文本编辑器。在此推荐一个功能强大并且使用便种文本编辑器。在此推荐一个功能强大并且使用便捷的捷的VRMLVRML编辑器编辑器VrmlPadVrmlPad。l l VrmlPad VrmlPad 的安装与运行:的安装与运行:VrmlPad VrmlPad 的试用版可以从 的试用版可以从VRML VRML的资源站点下载安装即可。的资源站点下载安装即可。l l VrmlPad VrmlPad 主要功能包括文件管理、文本编辑、浏览等。主要功
6、能包括文件管理、文本编辑、浏览等。4-74.1VRML 语言概述4.1.4 VRML 浏览器 浏览 浏览VRML VRML 虚拟空间,需要使用浏览器插件,常用的有:虚拟空间,需要使用浏览器插件,常用的有:l l Cosmo Player VRML Cosmo Player VRML 浏览器 浏览器l l Microsoft VRML 2.0 Microsoft VRML 2.0 浏览器 浏览器l l 其它浏览器,如 其它浏览器,如SVR SVR(兼容(兼容VRML97 VRML97),),Community Place Community Place,Liquid Reality Liquid
7、 Reality 等。等。显示在Cosmo Player VRML 浏览器中的三维虚拟会议大厅 4-84.2 VRML 的语法基础4.2.1 VRML 的组成要素4.2.2 VRML 的文件结构4.2.3 VRML 的空间计量4-94.2 VRML 的语法基础4.2.1 VRML 的组成要素 11、节点(、节点(NodeNode)和域()和域(FieldField)节点是 节点是VRML VRML 文件中最基本也是最核心的组成部分。单个 文件中最基本也是最核心的组成部分。单个节点可描述造型、颜色、光照、视点、传感器等。节点可描述造型、颜色、光照、视点、传感器等。VRML VRML 虚拟世界的对
8、象往往是由一组具有一定层次结构关 虚拟世界的对象往往是由一组具有一定层次结构关系的节点来构造。系的节点来构造。4-104.2 VRML 的语法基础4.2.1 VRML 的组成要素 11、节点(、节点(NodeNode)和域()和域(FieldField)典型节点语法定义如下:典型节点语法定义如下:4-114.2 VRML 的语法基础4.2.1 VRML 的组成要素 22、事件(、事件(EventEvent)和路由()和路由(RouteRoute)事件的接口类型有事件入口和事件出口两种:事件的接口类型有事件入口和事件出口两种:事件入口(事件入口(eventIn eventIn,也称入事件)是节点
9、的逻辑接收器,也称入事件)是节点的逻辑接收器,它负责监听和接收外界事件;它负责监听和接收外界事件;事件出口(事件出口(eventOut eventOut,也称出事件)是节点的逻辑发送器,也称出事件)是节点的逻辑发送器,它负责向外界发送节点产生的事件。它负责向外界发送节点产生的事件。4-124.2 VRML 的语法基础4.2.1 VRML 的组成要素 22、事件(、事件(EventEvent)和路由()和路由(RouteRoute)事件出口和事件入口通过路径相连,这就是 事件出口和事件入口通过路径相连,这就是VRML VRML 文件中 文件中的另一个基本组成部分 的另一个基本组成部分 路由。路由
10、。路由为事件的传播提供了传输通道,使事件在事件链中依 路由为事件的传播提供了传输通道,使事件在事件链中依次向前传递,每经过一个节点就改变该节点的一些域,从 次向前传递,每经过一个节点就改变该节点的一些域,从而引发 而引发VRML VRML 世界一系列的变化。世界一系列的变化。4-134.2 VRML 的语法基础4.2.1 VRML 的组成要素 22、事件(、事件(EventEvent)和路由()和路由(RouteRoute)典型的事件路由定义如下:典型的事件路由定义如下:DEF SENSOR TouchSensor#DEF SENSOR TouchSensor#定义一个触摸传感器 定义一个触摸
11、传感器 DEF SOUND Sound#DEF SOUND Sound#定义一个声音对象 定义一个声音对象 ROUTE SENSOR.touchTime TO SOUND.startTime#ROUTE SENSOR.touchTime TO SOUND.startTime#建立事件的路由 建立事件的路由4-144.2 VRML 的语法基础4.2.1 VRML 的组成要素 33、脚本(、脚本(ScriptScript)Java Java、JavaScript JavaScript 行为脚本、插补器、行为脚本、插补器、C+C+函数、函数、VRMLScript VRMLScript、LiveCon
12、nect LiveConnect、VRML VRML 外部制作界面等,都 外部制作界面等,都是用于生成动态、复杂及逼真的 是用于生成动态、复杂及逼真的VRML VRML 场景的技术、语言 场景的技术、语言和 和API API(Application Programming Interface Application Programming Interface)。)。Script Script 节点可以看作是一个节点的外壳:它拥有域、节点可以看作是一个节点的外壳:它拥有域、eventIn eventIn 事件、事件、eventOut eventOut 事件。其本身没有任何动作,但 事件。其本身没
13、有任何动作,但可以通过程序来赋予脚本节点动作。可以通过程序来赋予脚本节点动作。4-154.2 VRML 的语法基础4.2.1 VRML 的组成要素 44、原型(、原型(PrototypePrototype)用户还可以通过原型构造机制定义新的节点类型,例如新 用户还可以通过原型构造机制定义新的节点类型,例如新的几何节点、新的造型、新的材料和新的声音节点等。的几何节点、新的造型、新的材料和新的声音节点等。新节点类型既可以在该原型定义的文件中引用(即内部原 新节点类型既可以在该原型定义的文件中引用(即内部原型,型,PROTO PROTO),也可以在外部文件中定义后在其它),也可以在外部文件中定义后在
14、其它VRML VRML 文件中引用(即外部原型,文件中引用(即外部原型,EXTERNPROTO EXTERNPROTO)。)。4-164.2 VRML 的语法基础4.2.2 VRML 的文件结构典型的典型的VRMLVRML文件结构如下:文件结构如下:#VRML V2.0 utf8#VRML#VRML V2.0 utf8#VRML 文件头 文件头节点名 节点名#创建 创建VRML VRML 中各种类型的节点以构成 中各种类型的节点以构成 造型 造型 域名 域名 域值 域值#设置节点的各个域和域值 设置节点的各个域和域值 Scipt#Scipt#添加脚本节点,编写脚本程序 添加脚本节点,编写脚本程
15、序 ROUTE TO#ROUTE TO#建立出事件与入事件间的 建立出事件与入事件间的 路由 路由4-174.2 VRML 的语法基础4.2.2 VRML 的文件结构11、文件头、文件头头文件向浏览器表述了如下含义:头文件向浏览器表述了如下含义:本文件是一个 本文件是一个VRML VRML 文件。文件。本文件遵循 本文件遵循VRML VRML 规范的 规范的2.0 2.0 版本。版本。本文件使用国际 本文件使用国际UTF-8 UTF-8 字符集。字符集。4-184.2 VRML 的语法基础4.2.2 VRML 的文件结构22、造型、造型 物体的造型(又称场景图)由节点按一定的层次关系组成,物体
16、的造型(又称场景图)由节点按一定的层次关系组成,它用于构造虚拟世界的主体 它用于构造虚拟世界的主体 各种静态和动态对象。各种静态和动态对象。在造型层次模型中,上下层节点之间存在两种关系:包容 在造型层次模型中,上下层节点之间存在两种关系:包容关系和父子关系。关系和父子关系。节点的包容关系是指后代节点作为祖先节点的一个属性域而存在。节点的包容关系是指后代节点作为祖先节点的一个属性域而存在。在父子关系中,子节点并不直接出现在父节点的属性域中,它们 在父子关系中,子节点并不直接出现在父节点的属性域中,它们集中在父节点的 集中在父节点的MFNode MFNode(多节点数据类型)子域内,依次排列。(多
17、节点数据类型)子域内,依次排列。4-194.2 VRML 的语法基础4.2.2 VRML 的文件结构33、路由、路由 路由不是节点,路由语句可以放置在节点内域可以出现的 路由不是节点,路由语句可以放置在节点内域可以出现的任何地方。任何地方。建议将所有 建议将所有ROUTE ROUTE 语句集中放置在文件的末尾,以构成 语句集中放置在文件的末尾,以构成一个系统的事件体系。一个系统的事件体系。路由中引用的节点名称都应该在 路由中引用的节点名称都应该在ROUTE ROUTE 语句之前被定义。语句之前被定义。4-204.2 VRML 的语法基础4.2.2 VRML 的文件结构44、注释、注释 注释信息
18、以符号 注释信息以符号“#”“#”开始,结束于该行的末尾,开始,结束于该行的末尾,VRML VRML 不支持多行注释。不支持多行注释。文件头中的 文件头中的“#”“#”不代表注释含义。不代表注释含义。4-214.2 VRML 的语法基础4.2.3 VRML 的空间计量11、VRMLVRML空间坐标系空间坐标系 VRML VRML 的立体空间采用三维坐标系。该坐标系的原点位 的立体空间采用三维坐标系。该坐标系的原点位于 于VRML VRML 浏览器的中心,浏览器的中心,X X 轴的正向水平向右,轴的正向水平向右,Y Y 轴的正 轴的正向垂直向上,向垂直向上,Z Z 轴的正向垂直向前,即指向浏览者
19、,如 轴的正向垂直向前,即指向浏览者,如图所示。图所示。4-224.2 VRML 的语法基础4.2.3 VRML 的空间计量22、VRMLVRML的计量单位的计量单位 VRML VRML 描述长度的计量单位是 描述长度的计量单位是VRML VRML 单位。它与现实世界 单位。它与现实世界或其它三维建模工具的计量单位都没有可比性。或其它三维建模工具的计量单位都没有可比性。VRML VRML 描述旋转等角度的计量单位是弧度。常用角度与 描述旋转等角度的计量单位是弧度。常用角度与弧度的对应关系如表所示。弧度的对应关系如表所示。角 角 度 度 0 0 30 30 45 45 60 60 90 90 1
20、20 120 135 135 150 150 180 180弧 弧 度 度 0 0 0.523 0.523 0.785 0.785 1.047 1.047 1.571 1.571 2.094 2.094 2.356 2.356 2.618 2.618 3.141 3.1414-234.2 VRML 的语法基础4.2.3 VRML 的空间计量33、VRMLVRML的色彩规范的色彩规范 VRML VRML 使用红绿蓝(使用红绿蓝(RGB RGB)颜色规范来描述造型、光线)颜色规范来描述造型、光线和背景等的色彩。和背景等的色彩。RGB RGB 颜色包含三个域值均在 颜色包含三个域值均在0.0 0.0
21、 1.0 1.0 之间的浮点数,它 之间的浮点数,它们分别对应红、绿、蓝三种颜色的取值。们分别对应红、绿、蓝三种颜色的取值。0.0 0.0 值表示该颜 值表示该颜色被关闭,色被关闭,1.0 1.0 值表示该颜色完全打开。值表示该颜色完全打开。4-244.3 VRML 的空间造型 任何一个任何一个VRMLVRML虚拟场景中的空间造型都必须虚拟场景中的空间造型都必须使用使用ShapeShape(形状)节点加以创建。(形状)节点加以创建。Shape Shape节点的语法格式如下:节点的语法格式如下:Shape Shape appearance NULL#SFNode appearance NULL#
22、SFNode geometry NULL#SFNode geometry NULL#SFNode 4-254.3 VRML 的空间造型4.3.1 基本造型4.3.2 空间变换4.3.3 文本造型4.3.4 复杂造型4-264.3 VRML 的空间造型4.3.1 基本造型 VRML VRML的基本几何造型节点有的基本几何造型节点有44种:种:l l Box Box(立方体)节点(立方体)节点l l Cone Cone(圆锥体)节点(圆锥体)节点l l Cylinder Cylinder(圆柱体)节点(圆柱体)节点l l Sphere Sphere(球体)节点(球体)节点 例例4-1 4-1 制作
23、灯笼制作灯笼 参见教材参见教材P P 5757。4-274.3 VRML 的空间造型4.3.2 空间变换 利用利用Transform Transform(变换)节点可以在(变换)节点可以在VRMLVRML空空间创建新的坐标系,可以随意间创建新的坐标系,可以随意translationtranslation(平移)、(平移)、rotationrotation(旋转)和(旋转)和scalescale(缩放)。(缩放)。例例4-2 4-2 制作茶几制作茶几 参见教材参见教材P P 5858。4-284.3 VRML 的空间造型4.3.3 文本造型l lTextText(文本)节点用来创建文本造型,通常
24、使用(文本)节点用来创建文本造型,通常使用ShapeShape节点的节点的geometrygeometry域的域值。域的域值。l lVRMLVRML文本造型是一个没有厚度的平面造型,但也文本造型是一个没有厚度的平面造型,但也可以具有不同的外观和材质属性。可以具有不同的外观和材质属性。例例4-3 4-3 恭贺新年恭贺新年 参见教材参见教材P P 6060。4-294.3 VRML 的空间造型4.3.4 复杂造型l lVRMLVRML提供了一些非常灵活的节点使用户能够通过提供了一些非常灵活的节点使用户能够通过使用点、线和面等来构造所需的几何形体。使用点、线和面等来构造所需的几何形体。l l这些节点
25、主要包括:这些节点主要包括:PointSetPointSet(点)、(点)、IndexedLineSetIndexedLineSet(线)、(线)、IndexedFaceSetIndexedFaceSet(面)(面)以及以及ElevationGridElevationGrid(海拔栅格)、(海拔栅格)、ExtrusionExtrusion(挤出(挤出造型)。造型)。例例4-4 4-4 制作椅子制作椅子 参见教材参见教材P P 6262。4-304.4 VRML 的场景效果4.4.1 纹理映射4.4.2 声音技术4.4.3 光照效果4.4.4 其它效果4-314.4 VRML 的场景效果4.4.
26、1 纹理映射l l纹理是一种位图,把纹理图按照一定规则包裹到几纹理是一种位图,把纹理图按照一定规则包裹到几何体造型表面的过程称为纹理映射。何体造型表面的过程称为纹理映射。l lVRMLVRML提供了提供了33种纹理节点,包括种纹理节点,包括ImageTextureImageTexture(图像纹理)节点、(图像纹理)节点、PixelTexturePixelTexture(像素纹理)节(像素纹理)节点和点和MovieTextureMovieTexture(电影纹理)节点。(电影纹理)节点。例例4-5 4-5 制作书柜制作书柜 参见教材参见教材P P 6464。4-324.4 VRML 的场景效果
27、4.4.2 声音技术l l 在 在VRML VRML 中加入声音涉及到两个部分:声源和声音发射器。中加入声音涉及到两个部分:声源和声音发射器。l l Sound Sound(声音)节点用于创建声音发射器,并指定场景中声(声音)节点用于创建声音发射器,并指定场景中声源的位置以及立体化的表现形式。源的位置以及立体化的表现形式。l l AudioClip AudioClip 节点和 节点和MovieTexture MovieTexture 节点则用于提供声源,仅可 节点则用于提供声源,仅可以作为 以作为Sound Sound 节点中 节点中source source 域的域值。域的域值。l l VR
28、ML VRML 场景中可引用的声音文件类型主要包括 场景中可引用的声音文件类型主要包括WAV WAV、MID MID 和 和MPEG MPEG 等 等3 3 种。种。例 例4-6 4-6 放映电影 放映电影 参见教材 参见教材P P 66 66。4-334.4 VRML 的场景效果4.4.3 光照效果l l在在VRMLVRML中创建光源时,除了要指定光源的空间位中创建光源时,除了要指定光源的空间位置、光线的发射方向等,还需要设置发射光线的颜置、光线的发射方向等,还需要设置发射光线的颜色和亮度等。色和亮度等。l lVRMLVRML中光源节点的分类及特点如下:中光源节点的分类及特点如下:l l P
29、ointLight PointLight 点光源 点光源l l DirectionalLight DirectionalLight 平行光源 平行光源l l SpotLight SpotLight 锥光源 锥光源 例例4-7 4-7 光照与阴影光照与阴影 参见教材参见教材P P 6767。4-344.4 VRML 的场景效果4.4.4 其它效果l lBackgroundBackground(背景)节点:可以控制(背景)节点:可以控制VRMLVRML世界中世界中天空和地面的颜色,指定一组全景图放置在天空和地面的颜色,指定一组全景图放置在VRMLVRML世界的上方、下方或四周。世界的上方、下方或四
30、周。l lViewpointViewpoint(视点)节点:用来设置浏览者在(视点)节点:用来设置浏览者在VRMLVRML世界中的观察位置、空间朝向和视野范围等。世界中的观察位置、空间朝向和视野范围等。l lNavigationInfoNavigationInfo(导航)节点,用来提供浏览者的(导航)节点,用来提供浏览者的替身信息以及该替身如何在替身信息以及该替身如何在VRMLVRML世界中进行导航。世界中进行导航。例例4-8 4-8 宇宙飞行宇宙飞行 参见教材参见教材P P 7070。4-354.5 VRML 的动态交互 4.5.1 动画设计4.5.2 传感器交互4.5.3 脚本设计4-36
31、4.5 VRML 的动态交互4.5.1 动画设计 在在VRMLVRML中,通过时间传感器和插补器节点,中,通过时间传感器和插补器节点,即可实现最常用的线性关键帧动画。即可实现最常用的线性关键帧动画。l lVRMLVRML提供了诸如提供了诸如PositionInterpolatorPositionInterpolator(位置)、(位置)、OrientationInterpolatorOrientationInterpolator(朝向旋转)、(朝向旋转)、ColorInterpolatorColorInterpolator(颜色)、(颜色)、ScalarInterpolatorScalarIn
32、terpolator(标量)等多个插补器节点来控制动画。(标量)等多个插补器节点来控制动画。l lTimeSensorTimeSensor(时间传感器)节点的作用是创建一(时间传感器)节点的作用是创建一个虚拟时钟。个虚拟时钟。例例4-9 4-9 地月运行地月运行 参见教材参见教材P P 7272。4-374.5 VRML 的动态交互4.5.2 传感器交互 VRML VRML 提供了一系列传感器来检测用户在虚拟场景中的 提供了一系列传感器来检测用户在虚拟场景中的动作,再通过事件的传递,实现用户与虚拟世界之间的交互。动作,再通过事件的传递,实现用户与虚拟世界之间的交互。l l 接触型传感器:用于检
33、测用户对于鼠标的各种操作 接触型传感器:用于检测用户对于鼠标的各种操作,如单击、,如单击、拖动等动作,节点包括 拖动等动作,节点包括TouchSensor TouchSensor(触摸)、(触摸)、PlaneSensor PlaneSensor(平面)、(平面)、CylinderSensor CylinderSensor(圆柱体)和(圆柱体)和SphereSensor SphereSensor(球体)传感器。(球体)传感器。l l 感知型传感器用于检测用户与造型的接近程度或造型在场景 感知型传感器用于检测用户与造型的接近程度或造型在场景中是否可见等,节点包括 中是否可见等,节点包括Visibi
34、litySensor VisibilitySensor(可视)、(可视)、ProximitySensor ProximitySensor(接近)传感器及(接近)传感器及Collision Collision(碰撞)编组。(碰撞)编组。例 例4-10 4-10 自动门 自动门 参见教材 参见教材P P 74 74。4-384.5 VRML 的动态交互4.5.3 脚本设计 Script Script 节点的操作包括事件接收、数据操作、数据存储和 节点的操作包括事件接收、数据操作、数据存储和事件产生等 事件产生等4 4 个步骤,与之对应的脚本可以由 个步骤,与之对应的脚本可以由4 4 个部分组成:个
35、部分组成:l l 一定数目的 一定数目的eventIn eventIn,当接收到事件时引发脚本的执行。,当接收到事件时引发脚本的执行。l l 与 与eventIn eventIn 对应的同名函数,当接收到一个 对应的同名函数,当接收到一个eventIn eventIn 时执行其 时执行其中的脚本程序;函数可以用于设置 中的脚本程序;函数可以用于设置Script Script 节点内部的域,实 节点内部的域,实现复杂的算法,以及向其它节点发送事件。现复杂的算法,以及向其它节点发送事件。l l 在脚本执行过程中,各个函数存储中间数据所使用的域。在脚本执行过程中,各个函数存储中间数据所使用的域。l l 在脚本执行过程中,各个函数所发送的 在脚本执行过程中,各个函数所发送的eventOut eventOut。例 例4-11 4-11 家具选色 家具选色 参见教材 参见教材P P 76 76。4-39本 章 结 束谢 谢 大 家