一个复杂的VRML场景的设计

时间:2022-10-30 11:25:23

一个复杂的VRML场景的设计

摘要: 本文通过对html和vrml的比较,阐述了vrml的工作原理及特性,简要介绍了vrml的核心体系,并分析了一个复杂的vrml场景的设计制作流程,对可能出现的问题作了相应的解答。

关键词:html语言 vrml语言、虚拟现实、交互

1. 前言

未来信息社会的三大特征是:多媒体(multimedia)、因特网(internet)、和虚拟现实(vr,virtual reality)。1995年,html(超文本标识语言,hyper text marked language)语言以其简单及跨平台特性,将全球处于十分分散的计算机连接起来,它以超链接为基础,把文本、图片、声音、动画、影像集成在一起,提供了基本的多媒体功能。

但是受html语言自身局限,网页只能是简单的平面结构,就算java语言为www增色不少,也仅仅停留在平面设计阶段;即使cgi(通用网关接口,common gateway interface)能使wed有更强的交互功能,但也仅限于单调的文档及表格。

近几年出现的vrml(虚拟现实造型语言,virtual reality modeling language)彻底改变了www上单调、交互性差的弱点,它将用户的行为作为浏览主体,展现在用户面前的是一个三维、逼真的多媒体界面。

2. vrml的工作原理

vrml的访问方式是基于客户/服务器模式(见图1),其中服务器提供vrml文件(后缀为.wrl)及支持资源客户通过网络下载希望访问的文件,并通过本地平台上的vrml浏览器(browse)交互式访问该文件描述的虚拟境界(virtual world),因为浏览器是本地平台提供的,从而实现了和硬件平台的无关性。

vrml象html一样,是一种ascii码描述语言,它是一套告诉浏览器如何创建一个三维世界并在其中航行(navigation)的指令,这些指令由再现器(render)解释执行,再现器是一个内置于浏览器中或外部的程序。

由于vrml是一个三维造型和渲染的图形描述性语言,复杂的3d术语转换为动态虚拟世界是高速的硬件和浏览器,又由于其交互性强和跨平台性,使虚拟现实(vr,virtual reality)在internet上有着广泛的应用,例如远程教育、商业宣传、娱乐等等,下面作者就一个大型复杂的vrml场景设计,做一些粗浅的分析,先介绍有关概念。

3. vrml的核心体系

vrml文件描述的基于时间的三维空间称为虚拟境界(virtual world),它由对象构成,而对象及其属性用节点描述,节点是vrml的基本单元。每个节点由类型、域、事件、实现、名字组成,节点按一定规则构成场景图(scene graph),场景图中分两类节点,第一类节点用于视觉、听觉角度表现对象,它们按层次体系组织,反映境界的空间结构,提供颜色、灯光、超链接、材质、化身、重力、碰撞、地形随动、飞行等功能,支持局部坐标系;第二类节点参与事件产生和路由机制,形成路由图,确定境界随时间推移如何动态变化。

环境变化、用户交互、时间推移产生事件,传感器(sensor)检测并发出初始事件,实践产生其他事件或修改场景图结构,从而提供动态特性。插入器(interpolator)是特殊事件处理器,利用它可以设计动画。

对于复杂行为处理则须利用脚本节点(script node),它包含一组脚本描述语言编写的函数,script节点收到事件后,将执行相应的函数,该函数可以通过常规的事件路由机制发送事件或直接向script节点指定节点发送事件,脚本也能动态增、删路由。以下(图2)是场景中事件流程图。

4. 基于vrml的场景设计

vrml,从用户的角度来说,基本上是html加上第三维,但从开发者角度来说,vrml环境的产生提供了一套完全的新标准,新过程以及新的web 技术。

交叉平台和浏览器的兼容性是首先要解决的问题。设计之前,必须明确指定目标平台(pc、mac、sgi的新o2等等),cpu速度、可以运行的带宽以及最适合使用的vrml浏览器。

vrml制作大致可分为两个阶段

⑴ 第一阶段 独立与计算机工作之外的建模

vrml世界的建造概念和其他工程建模概念相似,必须解决交流的问题,画出草图并研究材质的处理,生成模型(models)、空间(spaces)、化身(avatars),但必须考虑一些技术的限制,如,考虑到目标平台,决定在vrml文件中放入多少多边图形;预先考虑到vrml世界的运动和执行的动作,把相应的目标归类,用于设定三维物体之间的相互联系,建模与动画相互配合,如果归类正确合适,就会缩小生成动画效果之后文件的体积。

虚拟现实的设计中必须考虑加入重力(gravity)和碰撞(collision)的效果,以使虚拟现实的场景和生活中的相似。建模者需要生成几何模块(一系列的调用指令),其作用在于是浏览器在虚拟现实场景中只需监测一个很小的子目标,而无须计算虚拟场景中所有目标的重力和碰撞效果,最大限度的减少浏览器的工作量,并改善vrml的演示效果。

还必须考虑vrml文件的体积。vrml文件对自由曲面描述方式一直是基于ploygon,文件中描述了曲面上各个点在场景中的位置,故而文件中产生了大量的数字,致使文件体积庞大,nurbs(非均匀有理b样条,non-uniform b-splines)是一种在3d模型空间中,用曲线和曲面表示物体轮廓和形状的方法,简化了对复杂曲面的描述,vrml97(vrml的最新国际标准)的扩展标准里已经加入了nurbs的描述语句,nurbs在vrml上的广泛应用使得三维模型文件变得很小,效果也要比ploygon的描述方式好的多,另外,vrml文件格式支持zip压缩,也使模型文件体积进一步缩小,减少对网络带宽的要求,却不影响浏览效果。

加入虚拟颜色、材质和灯光。各个浏览器有不同的染色器(负责转换颜色),各个染色器的工作方法个不一样,染色器中使用适时的3d着色引擎,它使虚拟现实建模与实时访问隔离,可能出现在不同浏览器里颜色不同的现象,因而着色必须保证制作者与用户在不同的平台、浏览器里显示都是相同的。

加入材质、灯光能够产生层次感和现场效果,增加真实性,但也必须质感与实际运行效果之间权衡,因为使文件体积增大,占用cpu执行时间。

设定执行参数。navigationinfo(vrml文件的一个要素)用于设定用户航行的基本原则,例如,用户在场景中显示的比例,穿过整个场景的速度,采用何种方式穿过场景。

视角选定。建模者应设想出最能表现出场景效果的某一区域,因此视角人员最好能有较好的技术背景以便分析出制作工具在实际应用上述特色时可能会遇到的问题及在不同浏览器上显示效果及该浏览器是否支持这些特色,视角设计对vrml世界设计至关重要,视角选择不当可能将之毁于一旦。

⑵ 第二阶段 生成vrml行为并设定虚拟现实中可以实现的功能

vrml97的交互性很强,用户可以通过化身(用户在虚拟空间的代表)与其他的用户化身“面对面”交流和沟通,真正实现www上的多人环境,而它的实现需要编制复杂的行为。

vrml制作的内容应当能在所有的浏览器上运行。一种方法是使用动画,动画可以使vrml世界更加逼真,许多制作程序都需要用大量的时间检测节点(timesensors)来驱动动画,但同时也占用大量的cpu工作时间,减少timesensors的数量并在其不执行实时工作时关闭是提高vrml文件运行性能的通用方法。

另一种方法是通过语言编制复杂的行为,vrml97互动性很强,除了包括内部的属性,更支持java、ecmascript(javascript)、vrmlscript,甚至cgi等的接口,以便建立真3d虚拟社区,目前vrml主流编程是基于java、javascript,特别是java语言的日益成熟将成为vrml的实时动态交互提供良好的程序环境。无论那一种都必须使用script节点。

现在有三种编程方式:一,内嵌在script节点中的描述性语言 二,在script节点中引用外部的java字节流(后缀为“.class”),通常只是实现一些特殊的,描述性语言不能实现的功能,或者是为了源程序保密 三,通过vrml浏览器eai(外部编程接口,external authoring interface)进行编程,允许vrml世界与网页上其他对象沟通。虽然编程方式各不相同,但所用语言都必须是有面向对象、面向事件、跨平台的特性。

由于各浏览器对上述编程语言可能不支持,为了使其在各平台都能运行,可以在script节点将所有编程方式逐一列出,当然将加大文件的体积,以后vrml浏览器标准编程语言的规范化,这种现象或许将得到改观。

5. 结束语

虽然目前主宰www服务的仍是html标准,但由于vrml以其交互性强、分布式、三维、多媒体集成、境界逼真等特性,加之价格低廉、易于实现,受到各大公司重视,相信作为代web的强力后盾,从其诞生之日就预示它取代html的趋势。

参考文献:

①黄铁军 柳键《vrml国际标准与应用指南》 电子工业出版社 1999年1月

②张旆 杜可亮 刘见灼等《www上的虚拟现实技术-??vrml语言》电子工业出版社 1998年8月

上一篇:车联网推升车用电子新商机台湾电电公会预估 下一篇:论地质工程复杂地质体可视化分析