VRML2.0简介及新特性
来源:第三维度
作者:施寅,周葆芳,赵志勇
选自《VRML2.0使用速成》第一章
什么是VRML ?
“虚拟现实造型语言”(virtual reality modelling language, 缩写为VRML) 是一种描述交互式三维世界和对象的文件格式。也就是说, VRML 允许你去描述三维对象并把它们组合到你所构想的虚拟场景和世界中。你能用VRML 来建立仿真系统, 系统中可以包括动画、具有动力学特性的物体以及实时多用户参与等等。你所建立的虚拟场景能通过服务器在万维网(World Wide Web )上发布。这样, 全世界的万维网用户, 不论离你多么遥远,都能在计算机屏幕上看到你的作品, 并能交互式地在你设计的虚拟世界中浏览。
VRML 标准由VRML 结构组( VRML Architecture Group, 缩写为VAG) 制定, 这是一个咨询委员会, 目前它正在不断完善这一标准。
一、VRML 的几种应用
VRML 的应用和我们现实的三维世界一样多种多样、五彩缤纷。下面是几种典型的应用:
1. 星期天, 一个三口之家想到北京工人体育场去观看足球劲旅国安队怎样挑战来访的某一欧洲队。票价范围在60~180 元, 问题是票价与观看效果一定是成正比的吗? 利用VRML 技术, 你可以在售票处或家里的计算机上输入坐位号, 并看一看从这个位置看到的模拟比赛。这时, 你就能决定你买到的票是否是物有所值了。
2. 一个意大利教堂的壁画遭到长期的破坏, 但是有足够的信息保存下来, 可以利用这些数据来重建这个教堂的原貌。用结构造型构造出整个建筑, 用图象扫描技术重建那些壁画, 这个教堂就被一个VRML 文件完整描述下来。通过计算机学习历史和艺术, 能置身其中, 在教堂的长廊里漫步, 欣赏顶上的壁画, 观察不同时刻透过窗棂射到画上的光所产生的不同效果。另外, 对壁画进行介绍的导游声音和每幅壁画引出的超连接提供了更多的相关信息。
3. 两辆高速行驶的汽车撞到了一起, 急刹车的车辙印横过公路, 被撞断的树枝躺在一边, 路边的泥土有被冲击和车轮轧过的痕迹, 面对以上现场, 这起事故是怎么发生的?谁应该负主要责任呢? 路况、记录下的车速、撞击点等数据反馈到了交通部总部的交通事故仿真系统, 看结果支持哪一方的证词, 分析人员能重建整个事故经过并从屏幕上看到它。
4. 一个珠宝设计者正为一位外地客户工作, 这位客户希望能保证最终的成品和她开始时的想象一致。设计者不是送设计的草图去让客户过目, 而是按自己的设计思想用VRML 写作工具做一个项链的造型, 通过万维网传给客户。虽然这位客户不能亲手抚摸这件逼真的作品, 但她能从各个角度仔细观察它, 检查它的外型并决定宝石突出的程度。
这样, 在真正投入对昂贵的宝石进行加工之前, 各种可能的修改方案都可以提前做出。
VRML 的应用范围很广, 从严肃的自然学科应用( 医学成像、分子模型、机械设计与制造等方面)、吸引人的娱乐业(游戏、各种广告制作、虚拟主题公园等等) 到现实的日常生活(选择并在卧室摆放家具的模拟、周末郊游的计划等等)。
VRML 不像C、Java 这样的编程语言, 也不像HTML ( hypertext markup language ) 这样的标记语言, 它是一种造型语言, 这表明你可以用它来描述三维场景。它比HTML 复杂得多, 但比编程语言要简单。
二、 三维模型与二维图象
VRML 提供了一种高效的描述简单和复杂三维对象和世界的文件格式, 它之所以被要求具有高效性, 一是由于万维网上各处的通信线路质量良莠不齐, 既有很慢的电话线连接, 也有高速的ISDN( 综合业务数字网络)和租借的专线; 二是由于浏览虚拟场景的计算机有低级的PC, 也有超级计算机。
把观看二维图象与浏览VRML 场景做个比较, VRML 的优势是很明显的。举个例子, 假设你有六幅北京某一地区的图片和一个描述同一地区的VRML 文件, 那些图片只是在平面矩形中显示一种特定景象, 你所能做的就是看着它们, 图片上的每个像素都是定死的, 不能改变, 而通过VRML 文件, 你可以从无穷多个视点观察这个场景。浏览器( 显示VRML 文件的软件)提供的导航工具允许你按你希望的不同路径去浏览场景, 重复你的旅行或由着你的兴趣去探索新的疆域。VRML 世界中也能包含动画、声音和影像来丰富浏览者的体验。
一般来说, 二维图象作为一种媒体, 所载的信息不如三维造型的多。例如, 你有一组说明如何组装一台计算机的图片, 同时你也有一个示例这一工作的VRML 文件, 三维造型所展示的空间深度使你很容易就能想象出实际的各部件是什么样的, 而图片只给出了一个固定的操作次序。用VRML 描述的示例, 你可以用鼠标在屏幕上自己先组装几遍,甚至在你组装好后能点这台虚拟计算机的电源开关, 看一看有没有问题, 如果发现有错就重新再来, 直到你找到是一位熟练工人的感觉为止。
三、前沿技术
无论是教学上的应用、商业应用还是科技方面的应用, 设计优秀的VRML 场景大多数都有以下几个共同点:
1. VRML 描述的世界是一个逼真的世界。用户在计算机屏幕上进入这个三维世界并去探索它, 就像他( 她)真的置身于一个现实世界。每个人都能根据自己的喜好制定探索的路线。
2. 整个探索过程由用户控制而不是计算机。用户使用的浏览器允许用户以任何他(她) 决定的方式去探索VRML 世界, 虽然VRML 世界的设计者可以向用户推荐一种好的方式, 计算机并不提供一套固定的选择或预先指定一种, 这样, 在探索的过程中存在着无穷的可能性。
3. VRML 世界是一个交互的世界。VRML 世界中的对象能对别的对象或用户产生的外部事件做出响应。用户能“触摸”这个虚拟的世界并改变其中的元素。
4. VRML 世界把二维三维对象、动画和多媒体融合成了一种媒体。VRML 是一种强有力的工具, 但是像所有强大的工具一样, 它必须被小心有效地使用。如果你已经开始在万维网上探索应用的VRML 站点, 你可能既被一些漂亮、有创造性的优秀站点所打动,同时也对一些呆板的站点感到失望, 更对蜗牛行走般的网络传输速率感到痛苦。由于VRML 是一门比较新的技术, 场景设计者和编程人员都正在学习如何更好地应用它。写作工具还处于开发阶段, 所以, 在各种平台上没有一套好的开发工具的时候, 场景设计者们有时不得不“手工”去完成他们的工作。
四、VRML 技术发展的简单回顾
长期以来, 三维计算机图形学的一个主要目标就是在计算机屏幕上建立一个具有真实感的世界。早在1965 年, 伊凡·萨斯兰特( Ivan Sutherland) 就指出最终的计算机显示的场景将看起来和真的一样, 听起来和真的一样, 其中的物体的行为表现也像真的。大约二十年后, 研究者和编程人员还在为实现这一梦想而奋斗着。现在, 研究的目标就不再只是建立一个真实感的仿真环境, 而是建立一个基于网络用户间交互与共享的虚拟世界。
网络技术与图形技术在开始结合时只包含二维图象, 而万维网技术开创了以图形界面方式访问因特网的方法。自1991 年投入应用后, 万维网迅速膨胀成为今天最有活力的商业热点。VRML 的形成是三股力量相互交识、互相促进的结果, 万维网技术正是其中最重要的一股力量。
第二股力量在随后的一年出现, 从时间上来说仿佛和VRML 没什么关系。当时, 硅谷图形公司(SGI ) 推出了它的新一代三维计算机图形接口“Open Inventor”, 它使得程序员在基于场景结构和对象描述的基础上快速有效地开发各种交互式的三维图形程序。由于它被作为一种通用接口来设计, 在网络这一特定方面功能很弱。Open Inventor 后来成为了VRML 的技术基础。
第三股力量是一股把各种有利因素结合起来并推动VRML 诞生的力量, 它出现在硅谷图形公司发布Inventor 一年半以后, 也就是1994 年5 月, 在日内瓦举行的第一届万维网会议上。马克·皮斯(Mark Pesce) 和托尼·巴利斯( Tony Parisi) 在对以虚拟现实界面方式访问万维网进行了几个月的研究后, 把他们的思想介绍给正在筹划中的BOF(Birds-ofa-Feather 一个关于虚拟现实的会议)会议, 并获得大力支持。这个会议决定制定一种能连接万维网的场景描述语言,“VRML”这一术语就是在这次会议上定下的。刚开始是作为“virtual reality markup language”的缩写( 为了类同于第一代万维网技术所用的hypertextmarkup language) , 后来为准确起见, 用“modelling”代替了“markup”。
制定VRML 规范的积极参与者有许多, 其中一位积极参与的是杰维·贝尔( GavinBell) , 他是硅谷图形公司开发Inventor 的工程师。他看到了把Inventor 作为VRML 规范基础的巨大潜力( Inventor 现在演变成了一种开放格式, 叫做Open Inventor ) , 在一次In-ventor 小组的午餐会上, 把关于VRML 以及正急需一种万维网上描述三维场景的语言的情况告诉了该公司的经理, 午餐会后, 这个经理被说服了。
同时,Mark Pesce 在电子邮件清单上征集一份VRML 规范的初稿, 时间只有5 个月,因为第二届万维网会将在十月份召开。这是一个冒进的计划, 但参与者们都对按时拿出一份基本的初稿很有信心, 大家一致同意采纳一种现有的造型语言比设计一种新的要容易得多, 所以寻找工作开始了。
几星期后, 马克·皮斯提出了SGI 公司的建议, 这是一个经过修改并扩充一些网络功能的Open Inventor 三维图形文件格式的子集。SGI 公司同意无偿提供这种新的文件格式并放弃对其的所有权, 在1994 年10 月的万维网会议上, VRML 1 .0 规范正式出台。
帕尔·斯特劳斯( Paul Strauss) , SGI 公司的另一位工程师, 也是Open Inventor 的缔造者, 他开始为VRML 开发一个通用的语法分析器, 也就是后来的“QvLib”, 它能把VRML文件从可读的文本格式转换成一种浏览器能理解的格式。QvLib 于1995 年1 月发布, 并被移植到各种平台上, 之后, 各式各样的浏览器就如雨后春笋般涌现出来。
在第一批完全的(指能解释VRML 规范的所有语法的)浏览器中, 主要有SGI 公司的WebSpace 浏览器。而Template Graphics Software 公司很快把WebSpace 从SGI 平台移植到了其他几种平台(在Microsoft 公司的Visual C + + 4 .0 以上版本的光盘中带有Web-Space 的Windows 平台版本) , 所有这些版本的WebSpace 浏览器都是免费的。
1995 年秋季, SGI 公司又推出了配套的VRML 写作工具WebSpace Author , 利用它可以交互地构造场景并生成VRML 文件, 同时, VRML 结构组( VAG) 开会讨论制定VRML 下一个规范的事宜。
在1996 年春, VRML 委员会讨论了几种对VRML 2 .0 规范的建议, 包括SGI 公司的“Moving Worlds”方案、Sun 公司的“HoloWeb”方案、Microsoft 公司的“Active VRML”方案、Apple 公司的“Out of This World”等等。委员会的许多成员参与了一些方案的修改工作, 其中尤其是对Moving Worlds 方案的修改。在二月份的投票中, Moving Worlds 得票率超过70% , 1996 年5 月VAG 决定采纳这种方案作为VRML 2 .0 规范, 并于8 月最终确定下来。
五、VRML 2 .0 新增加了什么?
VRML 1 .0 版允许开发者建立三维的静态场景, 并且场景中的对象能超连接到别的场景, 这和HTML 文档非常相似。2 .0 版除继承1 .0 版的造型和超连接功能外, 还扩充了大量的内容。用VRML 2 .0 版, 场景中的对象可以移动, 能对基于时间的以及用户激发的事件产生响应。总的看来, 新增加的内容可以分为以下五个方面。
1 . 增强的静态场景
VRML 2 .0 中一些新增的特征使得场景看上去更加真实。例如: 声音( sound )节点允许你为场景加上背景音乐、动作声响、对话等等; 背景( background) 节点让你能为场景加一幅背景画面; 雾( fog) 节点能产生逼真的雾化大气效果。
2 . 交互性
新增加的对三维对象的行为描述使得进行实时完全仿真成为可能。碰撞检测( collisiondetection) 节点包含了碰撞检测信息, 这样就避免了穿墙而过的现象发生; 感知器( sensors )节点等待一个特定事件的发生, 然后作出响应。例如, 可以设计一个感知器完成当门被打开时就自动开灯的功能。
3 . 动画和行为脚本
插值节点( interpolators )是VRML 2 .0 中新加进的行为描述节点。利用它, 你可以在场景中加入关键帧动画, 你只需提供对象在几个关键点的描述, 插值节点就自动计算动画的各个中间状态。另一个重要的节点是脚本( script )节点, 可以把这种节点看成一个自定义的黑盒, 它用自己的语言描述( 通常是Netscape 公司的Javascript 或Sun 公司的Java )。
脚本不仅能进行简单的逻辑处理, 而且能对场景中的用户或环境事件进行复杂分析并灵活地作出响应, 它主要用于较复杂的仿真应用中。
4 . 原型定义
VRML 自己定义的一套对象集, 这些对象集称为节点, 它们能满足大部分情况下的需要, 但有时用户要建立自己的对象, 原型定义就可以加入到VRML 2 .0 中, 允许用户建立自己的复杂对象, 并同别的对象一样使用。
5 . VRML 文件信息
VRML 2 .0 新增几种用于给浏览器提示信息的特征, 它们允许你保存文件中额外的信息。导航信息( navigation information ) 节点描述了浏览场景的最适当方式———用户是以行走方式( walk )、飞翔方式( fly ) 还是用虚拟的手以仔细观察方式( examine ) 来欣赏VRML 文件所描述的东西。导航信息节点还指定你在场景中的移动速度, 以及是否打开头上的顶灯; 场景信息( world information ) 节点让你为文件指定标题和其他信息, 比如作者、版权等等。