虚拟现实技术主讲:杨文晖第四章VRML1VRML简介2VRML编程语法基础3VRML基本节点编程4群节点创建VRML立体空间造型5VRML场景效果节点编程设计6VRML动态感知虚拟现实节点7VRML通用接口节点8VRML实例编程1VRML简介虚拟现实三维立体网络程序设计语言VRML是计算机科学的前沿技术。作为第二代网络程序设计语言的VRML完全改变了网络的二维平面世界,实现了真正意义上的三维立体网络世界、动态交互与智能感知等,实现计算机网络、多媒体及人工智能的完美结合使人们真正感受到21世纪计算机网络世界的无穷魅力。1.1VRML的发展历史计算机技术的迅猛发展,已由初级计算、实时控制、事务处理等迅速朝着巨型化、微型化、网络化、智能化及多媒体化等方面发展。计算机将人类社会带人崭新的信息时代。尤其是计算机网络的飞速发展;使我们的地球变成了一个地球村早期的网络系统主要传送文字、数字等信息,但多媒体技术在网络上的应用,使目前计算机网络无法承受如此巨大的信息量。为此,人们开发出信息高速公路,即宽带网络系统,而在信息高速公路上驰骋的高速跑车就是VRML虚拟现实建模语言系统,也就是“虚拟现实三维立体网络程序设计语言”。VRML(VirtuslRealityModelingLanguage)是什么?虚拟现实建模语言,是一种三维造型和渲染的图形描述语言,通过创建一个虚拟场景以达到现实中的效果。VRML给网络带来了什么?VRML支持功能大大改变了原来万维网上单调、交互性较差的弱点,创建一个全新的可进入、可参与的三维虚拟现实世界。VRML的重要性?是虚拟现实三维立体网络程序设计语言,是宽带网络、多媒体与人工智能相融合的高科技产品,是把握未来网络、多媒体及人工智能的关键技术。VRML虚拟现实建模语言用来在网络上创建逼真的三维虚拟场景。它改变了网络上2D画面的状态,并能实现3D动画效果,特别是改变了当前网络与用户交互的局限性,使得人机交互更加方便、灵活,使虚拟世界的真实性、交互性和动态性得到了更充分的体现。VRML是虚拟现实建模语言,是一种三维造型和渲染的图形描述性语言,它把“虚拟世界”看做一个“场景”,而场景中的一切都被看做“对象”(也称为节点),对每一个对象的描述就构成了.wrl文件。VRML主要为了在网页中实现三维动画效果及基于三维对象用户的交互。由于HTML网页不支持三维图像和立体声音文本的显示,因而只能停留在平面设计阶段,更不要说动态交互了。VRML改变了原来上的单调、交互性差的弱点,将人的行为作为浏览器的主体,VRML创造的是一个可进入、可参与的世界。你可以在计算机网络上看到生动活泼、逼真的三维立体世界,并可以自由地在网络上遨游、驰骋。发展历史虚拟现实三维立体网络程序设计语言始于20世纪90年代1991年MarkPesce和TonyParsi在美国旧金山开始计算机空间的设计并开发Web的3D接口,这是三维浏览器的原型,用来在因特网上浏览三维画面。1994年5月,在瑞士日内瓦CERN实验室举行的万维网()第一届国际会议上介绍了可在万维网上运行的虚拟现实界面,即虚拟现实建模语言。1994年10月,在芝加哥召开的第二次万维网会议上公布了VRML1.0版规范草案。1996年初,VRML委员会审阅并讨论若干个VRML2.0版本。1996年3月,VGA、VRML设计小组决定将SGI(硅图公司SliconGraphicsInc)、Sony等公司的MovingWorlds方案改造成为VRML2.0版,并于1996年8月公布。1.2VRML的特点虚拟现实三维立体网络程序设计语言具有4大特点。(1)VRML具有强大的网络功能,可以通过运行VRML程序直接接入Intemet。可以创建立体网页与网站。(2)具有多媒体功能,能够实现多媒体制作,合成声音、图像以达到影视效果。(3)创建三维立体造型和场景,实现更好的立体交互界面(4)具有人工智能,主要体现在VRML具有感知功能。可以利用感知传感器节点来感受用户及造型之间的动态交互感觉。虚拟现实三维立体网络程序设计语言VRML是第二代Web网络程序设计语言,是21世纪主流高科技软件开发工具,是把握未来宽带网络、多媒体及人工智能的关键技术。掌握了虚拟现实三维立体网络程序设计语言VRML,就掌握了软件开发的主动权,可以在未来网络世界里驰骋翱翔。1.3VRML的发展前景虚拟现实建模语言VRML设计源于虚拟现实技术。I.虚拟现实技术是20世纪末发展起来的涉及众多学科的高新技术,它是集计算机、仿真、微电子、传感与测量技术于一体的高新科技的融合。II.而虚拟现实建模语言VRML正是利用虚拟现实技术在计算机中创建一种虚拟环境,通过视觉、听觉、触觉、味觉、嗅觉及生理反映等感知器,使用户产生一种与现实生活相同的感受,有身临其境的感觉,甚至生理感觉,可实现用户与虚拟现实环境直接进行交互。虚拟现实建模语言VRML涉及计算机网络、多媒体和人工智能技术三大领域及自然科学、社会科学和哲学。具体地讲,虚拟现实环境一般包括计算机图形学、图像处理、模式识别、传感器、语音处理、网络技术、并行处理、人工智能等高新技术,还涉及天文、地理、数学、物理、化学、美学、医学、军事、生理学和心理学等领域。计算机硬件技术、网络技术及多媒体技术的融合与高速发展使得虚拟现实技术获得了长足的发展,从而虚拟现实技术能在网络上得以实现和发展。目前网站使用的均为二维图像与动画网页,而采用虚拟现实建模语言VRML可以在网站上设计出虚拟现实三维立体网页场景和立体景物利用虚拟现实技术制造出一个逼真“虚拟人”,为医学实习、治疗、手术及科研做出贡献,也可应用于军事设计一个“模拟战场”,进行大规模高科技军事演习,这样既可以节省大量费用,又使部队得到了锻炼。在航空航天发射中,也可以制造一个“模拟航天器”,模拟整个航天器的生产、发射、运行和回收的全过程,从而可以节约大量的经费。虚拟现实技术还可以应用于工业、农业、商业、教学、娱乐和科研等方面应用前景非常广阔。虚拟现实建模语言VRML是21世纪计算机网络、多媒体及人工智能为一体的最为优秀的开发工具和手段。1.4VRML浏览器VRML文件需要通过VRML文件的浏览器支持才能运行,否则,它是无法运行的。支持VRML文件的浏览器,常见的有MicrosoftVRML浏览器和Cosmo播放器两种。这两款浏览器的操作按钮功能相似,但这两款浏览器(播放器)所定义的初始视点不同,所以同一VRML文件所显示的VRML场景不尽相同。在这个浏览器能正常浏览而在另一个浏览器中则不能正常运行的情况。Cosmo播放器的下载网站为http://.soft999.com,WindowsIE浏览器内嵌有VRML浏览器。或需要插件1.5VRML编辑器用记事本来编写源程序VRMLPad专用编辑器由ParallelGraphics公司开发的VRML开发工具2VRML编程语法基础1.介绍VRML的文件结构、文件头及注释等VRML文件主要由节点、事件、场景、原型、脚本及路由等组成,其中节点又由域名、域值及域值类型组成;2.介绍VRML立体空间的计量单位,包括立体空间坐标、长度单位、角度单位及立体空间的颜色等3.节点集2.1VRML基本概念虚拟现实三维立体网络(页)程序设计语言VRML涉及有关的基本概念和名词包括:节点域事件路由原型场景脚本它是编写VRML的基础。什么是节点?节点是VRML文件最基本的组成要素,是VRML文件基本的组成部分。节点是对客观世界中各种事物、对象、概念的抽象描述。VRML文件就是由许多节点之间并列或层层嵌套而构成的什么是事件?每一个节点一般都有两种事件,即一个“入事件”和一个“出事件”。在多数情况下,事件只是一个要改变域值的请求:1.“入事件”请求节点改变自己某个域的值2.“出事件”则是请求别的节点改变它的某个域值。什么是原型?原型是用户建立的一种新的节点类型,而不是一种“节点”。进行了原型定义就相当于扩充了VRML的标准节点类型集。节点的原型是节点对其中的域、入事件和出事件的声明,可以通过原型扩充VRML节点类型集原型的定义I.可以包含在使用该原型的文件中,II.也可以在外部定义III.原型可以根据其他的VRML节点来定义,IV.也可以利用特定于浏览器的扩展机制来定义。什么是物体的造型?物体的造型,即场景图由描述对象及其属性的节点组成。在场景图中,一类是由节点构成的层次体系组成;另一类是由节点事件和路由构成。什么是脚本?脚本是一套程序,与其他高级语言或数据库的接口。在VRML中可以用Script节点利用Java或JavaScript语言编写的程序脚本来扩充VRML的功能。脚本通常作为一个事件级联的一部分而执行,脚本可以接受事件,处理事件中的信息,还可以产生基于处理结果的输出事件。什么是路由?路由是产生事件和接受事件的节点之间的连接通道。路由不是节点,路由说明是为了确立被指定的域的事件之间的路径而人为设定的框架。路由说明1.可以在VRML文件的顶部,2.也可以在文件节点的某一个域中。3.在VRML文件中路由说明与路径无关,它既可以在源节点之前,也可以在目标节点之后,在一个节点中进行说明,与该节点无任何联系。路由的作用是将各个不同的节点联系在一起,使虚拟空间具有更好的交互性、立体感、动感性和灵活性。什么是事件体系?在场景图中,除了节点构成的层次体系结构外,还有一个“事件体系”。事件体系由相互通信的节点组成。在大多数的VRML节点中每一个事件都有一个输入和输出接口。1.输入接口就是能够接收事件的节点,称为eventIn,即入事件(也称事件入口);2.输出接口就是发送事件的节点,称为eventOut,即为出事件(也称事件出口)。3.一个节点一般具有多个不同的入事件和出事件,但有一些节点不同时具有这两种事件。入事件和出事件通过路径相连,这就是VRML文件除节点外的另一基本组成部分路由(ROUTE)。ROUTE语句把事件出口和事件入口联系起来,从而构成了“事件体系”。2.2VRML立体空间计量单位虚拟现实建模语言(VRML)要创建立体背景空间和立体造型空间就需要定位需要立体空间坐标系相应的长度角度单位颜色2.2.1VRML立体空间坐标系VRML立体空间物体造型定位依靠VRML立体空间坐标系来实现。这些坐标轴为每个空间物体的造型定义了一个坐标系。它包括:X轴、Y轴、Z轴X轴、Y轴和Z轴相交的点构成了该坐标系的原点X轴的正方向指向右边,Y轴的正方向指向正上方,Z轴的正方向指向前方(即浏览者),如图2-1所示。空间物体的造型在该坐标系中的位置由相对于该坐标原点的三维坐标来确定。xzy图2-1空间坐标系2.2.2VRML长度单位VRML三维立体空间长度单位是统一的,只有一个单位标量,即VRML单位。VRML单位并不是一个绝对的尺寸大小。VRML尺寸和现实中的长度单位不具有任何可比性,只有在VRML单位间才具有可比性VRML单位一般比实际的长度单位要小。在实际开发工作中,考虑到多个开发者在开发中协调统一的工作,通常都指定一个统一的参考标准,即以实际中的长度单位为准。2.2.3VRML角度单位在VRML立体空间中使用的角度单位不是普通的角度,而是通常所使用的弧度。当在VRML使用角度单位时,先将角度单位换算成弧度单位后,再将其编写入VRML源程序中。常用的角度与弧度换算表如表2‒1所示。2.2.4VRML空间立体着色VRML三维立体空间的着色,无论是立体空间背景、光线的颜色,还是立体空间中的各种物体,它们的颜色都是由3种基本颜色组合而成红、绿、蓝(RGB)。红、绿、蓝(RGB)3种基本颜色对应3个浮点数,它们的域值分别在0.0—1.0之间。红、绿、蓝3种颜色组成各种各样姹紫嫣红的“颜色”,如下表所示。VRML文件语法VRML文件语法主要包括哪些?VRML文件头、节点、原型、造型、脚本和路由等是否每一个VRML文件都必须包含这6个部分?只有VRML文件