1/44第8章VRML应用随着计算机网络技术的快速发展,人们已不满足于从网上查询一般静态的结果,而是希望能通过视、听、触、嗅觉及形体、手势,参与到具体的实际环境中去,获得身临其境的体验,虚拟现实建模语言(VRML)就提供了这样一种在网络上既能创建又能体验虚拟世界的沉浸式交互环境,使用户可以以自然的方式与虚拟环境中的对象交互影响,从而产生等同真实环境的感受和体验。8.1VRML概述VRML是一种建模语言,用来在Web环境中描述三维物体及其行为,从而在Web环境中构建虚拟场景。VRML的基本目标是建立Internet上的交互式三维多媒体,它以Internet作为应用平台,作为构筑VR应用的基本构架。8.1.1VRML基本概念VRML即虚拟现实建模语言,是VirtualRealityModelingLanguage的简称,本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。是目前Internet上基于的三维互动网站制作的主流语言,VRML是一种国际标准,其规范由国际标准化组织(ISO)定义。熟悉的人都知道,受HTML的限制,网页只能是平面的结构,就算JAVA语言能够为网页增色不少,但也仅仅停留在平面设计阶段,而且实现环境与浏览者的动态交互是非常繁琐的,于是VRML应运而生。1.VRML发展历史(1)VRML1.01994年5月,第一届因特网国际会议上,有关专家发表的在网络上运行三维立体世界的研究引起了广泛的讨论。1994年10月,VRML1.0规范正式发布。现在,VRML1.0已基本被淘汰。(2)VRML2.01996年8月,VGA决定设计小组决定将SGI的MovingWorlds方案改造为VRML2.0。VRML2.0已经完全脱离HTML的影响,被正式命名为:虚拟现实建模语言。VRML2.0较VRML1.0添加了场景交互、多媒体支持,碰撞检测等功能。(3)VRML971997年12月VRML作为国际标准正式发布,1998年1月正式获得国际标准化组织ISO批准,简称VRML97。VRML97只是在VRML2.0基础进行上进行了少量的修正,但它这意味着VRML已经成为虚拟现实行业的国际标准。从此VRML的发展更为迅速,更为成熟。(4)X3D1999年底,VRML的又一种编码方案X3D草案发布。X3D整合正在发展的XML、JAVA、流技2/44术等先进技术,包括更强大、更高效的3D计算能力、渲染质量和传输速度。2002年7月23日,Web3d联盟发布了可扩展3D(X3D)标准草案并且配套推出了软件开发工具供人们下载和对这个标准提出意见。这项技术是虚拟现实建模语言(VRML)的后续产品,是用XML语言表述的。X3D基于许多重要厂商的支持,可以与MPEG-4兼容,同时也与VRML97及其之前的标准兼容。X3D标准的发布,为Web3D图形的发展提供了广阔的前景。2.VRML的基本特性(1)平台无关性VRML的访问方式为C/S模式,其中服务器提供VRML文件,客户通过网络下载要访问的文件,并通过本地平台的浏览器对该文件描述的虚拟现实世界进行访问。也就是说,VRML文件包含了虚拟现实世界的逻辑结构信息,浏览器根据这些信息可以实现许多虚拟现实的功能。由于浏览器是本地平台提供的,从而实现了虚拟现实的平台无关性。(2)实时性传统虚拟现实中使用的实时3D着色引擎在VRML中得到了更好的体现,这一特性把虚拟现实的建模与实时访问更明确地隔离开来,也是虚拟现实不同于三维建模和动画的地方。后者预先着色,因而不能提供交互性,VRML提供了7个自由度,即三个方向的移动和旋转,以及和其他3D空间的超链接。(3)可扩充性VRML作为一种标准,不可能满足所有应用的需要,有的应用希望画面质量更高,有的希望交互性更强,有的希望VR世界更复杂,这些要求往往是相互制约的,同时又受到用户平台硬件性能的制约。因而要求VRML是可扩充的,即可以根据需要定义自己的对象及其属性,并通过Java语言等方式使浏览器可以解释这种对象及其行为。(4)网络传输高速性VRML像HTML一样,用ASCII文本格式来描述世界和链接,保证在各种平台上通用,同时也降低了数据量,从而在低带宽的网络上也可以实现。3.VRML技术的应用与其他在Web实现虚拟环境的实现技术相比,VRML的学习相对容易,但这并不意味着VRML的功能简单。在构建Web虚拟场景方面,VRML具有很强的能力,并且由于可以嵌入Java、JavaScript等脚本语言,其表现能力得到极大的扩充。更为重要的是,它能够实现人机交互,实现动画,形成更为逼真的虚拟环境。VRML融合了二维和三维图像技术、动画技术和多媒体技术,借助于网络的迅速发展,构建了一个交互的虚拟空间。VRML技术和其他的计算机技术的结合,在Web环境中创建虚拟城市、虚拟校园、虚拟图书馆以及虚拟商店已经不再是一种幻想。比如在电子购物中,用户在虚拟商店里感受到的是和真实商品一样实在的质地,而不再是简单的图片。又如在线房产的推销中,虽然制作精良的建筑效果图能够给用户以很好的感官认识,但是如果借助于VRML构建的虚拟场景,能使用户有如身临其境,这无疑更具有吸引力和感召力。8.1.2VRML场景的编辑与浏览同许多程序设计语言类似,VRML是文本叙述文件,因而可以用各种文本编辑器(比如Windows中的记事本NotePad、写字板WordPad等)来编辑VRML源程序代码,但要求程序存盘时文件的扩展名必须是.wrl(world的缩写),否则VRML的浏览器将无法识别。1.VRML场景的编辑3/44由于VRML文件往往结构比较复杂,文本编辑的过程中很容易由于疏忽而出现错误,而一般的文本编辑器没有纠错提示的功能。针对VRML的编程需求,为了提高效率,可以借助于专门的VRML编辑器编写VRML文档。VRMLPad就是一个功能强大并且使用简便的编辑器。VrmlPad具有VRML代码下载、编辑、预览、调试功能,是当今VRML代码编辑最强的工具之一,VRMLPad的操作界面如图8.1所示。右边是编辑区,VRMLPad提供了节点和域的提示功能,每当输入节点或者域的第一个字母时,会出现相应的节点列表或者域列表,供设计者选择,极大的提高了编辑VRML文档的效率。此外,在编辑过程中,对不同的代码用不同的颜色标记便于区别,可以自动检测VRML的语法、语义和结构性错误。图8.1VRMLPad操作界面在VrmlPad编辑器中主窗口的左半部分,还提供了一些辅助窗口以帮助设计者更方便的设计和管理VRML文件,主要包括场景树、路径图、资源和文件列表。(1)场景树(SceneTree):可以显示场景的结构树,提供浏览层次结构,编辑标志符名称和文本快速定位的功能,如图8.2所示。(2)路径图(RoutingMap):显示VRML文件中所有的节点、事件等信息,如图8.3所示。(3)资源(Resources):显示了该文件引用到的所有外部资源文件,可以包括纹理贴图、声音和插入的VRML文件。(4)文件列表(FileList):相当于资源管理器里的文件列表,可以方便地管理文件。图8.2Vrmlpad的场景树图8.3Vrmlpad的路径图4/442.VRML场景的浏览要在浏览器中观察VRML场景,需要另外安装VRML浏览器插件。目前,有许多VRML浏览器插件,例如Cortona、CosmoPlayer、BlaxxunContact和WorldView等。Cortona浏览器使用方便,支持MPEG等视频文件,流媒体文件,Mp3等多种音频文件,Flash动画文件,多种材质效果,支持Nurbs曲线,粒子效果,雾化效果。而且交互性能近乎完美,是目前大多数用户使用的VRML浏览器,下面以ParallelGraphics公司的Cortona4.0为例说明VRML浏览器的使用。先下载Cortona4.0安装包,下载地址为:。安装很简单,都可用默认自动设置,安装完毕自动识别后缀名为.wrl的VRML文件(蝴蝶标志)。本例子是打开一个用VrmlPad编辑的VRML文件,在浏览器中进行浏览,出现的三维场景,如图8.4所示。图8.4Cortona4.0VRML浏览器Cortona4.0VRML浏览界面包括两部分:(1)三维窗口:位于浏览器窗口的中央,显示3D场景画面的窗口。(2)控制栏:位于浏览器窗口的底边,左边的八个按钮为交互按钮,使用方法一般是先按一下按钮,然后回到三维窗口中,按下鼠标左键移动进行交互观察;而右边的四个按钮则是非交互式按钮,只要按一下按钮,就可以看到相应变化。表8-1给出了交互按钮的具体功能;表8-2给出了非交互按钮的具体功能。表8-1交互按钮的功能按钮功能Walk按钮:漫步浏览模式。在窗口中按下鼠标左键拖动,观察者可以类似于在地面上前进、后退、左右旋转等方式观察行为。Fly按钮:飞行浏览模式。在窗口中按下鼠标左键拖动,观察者可以在三维空间中做上升、下降、前进、后退、左右旋转等方式观察行为。不与物体发生碰撞。Examine按钮:观察浏览模式。按下鼠标左键拖动,可以将三维场景绕其自身的中心沿任意轴旋转,或平移、缩放三维场景。Plan按钮:水平平移方式。在窗口中按下鼠标左键拖动,可以在水平面内任意前后左右移动。Pan按钮:垂直平移方式。在窗口中按下鼠标左键拖动,可以在垂直面内任意上下左右移动。Turn按钮:水平旋转方式。此时拖动鼠标可以改变观察的方向,水平面内任意前后左右旋转三维场景。5/44Roll按钮:垂直旋转方式。此时拖动鼠标可以改变观察的方向,垂直面内任意上下左右旋转三维场景。Goto按钮:走近方式。先点击此按钮,然后单击三维场景上的某一对象或部分,浏览器会自动将观察的位置和视角调整到浏览该对象的最佳状态。表8-2非交互按钮的功能按钮功能Straighten按钮:恢复水平面。点击此按钮,视角恢复到水平面或地面。View按钮:视点切换。点击此按钮,前进一个或后退一个视点。Restore按钮:恢复初始状态。场景变换了方位、移动了位置后,点击此按钮,视角会恢复到初始状态。Fit按钮:自动适应视角。点击此按钮,可以自动切换到一个能观察到整个三维场景的视角。此外,在浏览器的三维场景窗口中单击鼠标右键,还可以弹出一个快捷菜单,可以对三维效果进行更进一步的设置,如图8.5所示。图8.5VRML浏览器浏览参数设置参数说明如下:(1)Viewpionts:视点切换。如果设置了视点,则在下级菜单中会看到选项,否则为空。(2)Headlight:顶头灯。关闭它时,若场景中没有设置光源并且造型没有设置发光则场景中将一团漆黑。(3)Navigation:浏览模式选择。有几个选项供浏览者选择。(4)Speed:浏览移动速度选择。如图8.5所示,选择了标准(Normal)模式。(5)FullScreen:全屏浏览。屏蔽IE浏览器的导航条等,能达到显示器最大分辨率,令三维场景画面质量更高。(6)HideToolbars:隐藏控制栏。(7)ShowConsole:显示Console信息提示。如果程序有错误,在运行时会出现提示信息。(8)Preferences:浏览器参数选择。有几个类别的选项供浏览者选择。(9)Help:浏览器帮助文件。8.1.3VRML文件的基本特点1.VRML的空间坐标与计量单位在构建虚拟场景中,构成场景的造型有大小的差别,物体间有相对位置的不同,并且6/44造型还会有旋转、移动等运动,这就涉及到物体的空间坐标系、相应的长度、角度及颜色等。在VRML中,采用空间直角坐标系来确定造型的位置,并且用特定的计量单位定量表示长度。在VRML场景中,空间直角坐标满足右手螺旋法则,如图8.6所示为空间直角坐标系,就是说,右手四指从x方向转到y方向,则拇指的指向是z方向。在默认情况下,x坐标向右为正,y坐标向上为正,而z坐标指向观察者