第二代WWW标准语言VRML

—-VRML的英文全称为Virtual Reality Modeling Language,即虚拟现实建模语言,它是第二代WWW的标准语言。今天,随着计算机和多媒体技术的逐渐成熟,以及Internet和个人电脑的日益普及,VRML正逐渐深入我们每个人的生活。为较好地理解VRML,我们先介绍一下虚拟现实和第二代WWW。

—-第二代WWW

—-一、虚拟现实和VR系统

—-虚拟现实(Virtual Reality,简称VR)诞生于90年代初,目前尚处在一个研究、发展的阶段,至今并没有一个完整的、系统的定义。通常认为,虚拟现实是一项新的技术,它是以计算机技术为核心,综合使用了各种最新技术,融合视、听、触觉为一体的模仿现实的三维空间再现技术。通过虚拟现实系统,使用者借助一定的设备(头盔式显示器、数据手套等),利用其自然技能与之交互,达到身临其境的体验和沉浸感受。

—-将虚拟现实技术应用于计算机系统中,就形成我们常说的VR系统,即虚拟现实系统。VR系统一般应具备以下的特征:(1)以计算机系统为中心的一种计算机应用系统。(2)展现三维多媒体空间。(3)对象的交互性。(4)使用者的访问不以VR系统作者的设定为转移。

—-由以上介绍可以看出,VR系统是在多媒体系统基础上发展起来的新型计算机应用系统,是多媒体系统在三维时空领域的拓展,它是多媒体系统的一个子集。

—-二、第二代WWW系统

—-虚拟现实最重要的应用就是第二代WWW系统1。

—-我们知道,第一代WWW是基于HTML的超文本系统,系统的基本组成单元是Web页面,Web页面的所有对象都是二维的,即使部分对象具有三维的视觉效果,如按钮、划线等。

—-第二代WWW则是在第一代WWW基础上发展起来的,它保留了第一代WWW的基本框架,引入了虚拟现实技术,使得其实质发生了根本性的改变,第二代WWW是基于虚拟现实建模语言VRML的超媒体2VR系统。

—-在第二代WWW中,系统的基本组成单元是Web3D页面,一个或多个相关的Web3D页面组成虚拟世界(VirtualWorld,也称虚拟境界),虚拟世界和现实世界一样,建立在一个与时间相关的x-y-z三维坐标系统中,这个世界的所有组成对象都是三维的,可以提供一种更加自然的访问和人机交互。概括起来,第二代WWW的特点是:分布式、三维、交互性、模拟现实和多媒体集成。

—-三、第二代WWW的框架结构

—-第二代WWW框架上沿用第一代的Client/Server模式。客户端是VRML浏览器,它负责管理用户端资源,向服务器发出服务请求,定位和解释获取的VRML资源;服务器则负责管理和维护共享资源,响应客户机的请求,提供VRML文档及图像、音频、视频等相关资源。具体地说,该框架从结构上可以分为三层:

—-(1)用户接口层即客户端的VRML浏览器。

—-(2)超媒体抽象机由VRML文档和HTTP协议所组成,它用于处理和解释各种用户接口层的对象。第二代WWW保留了HTTP协议,也就保留了我们在第一代WWW上做过的所有工作。

—-(3)虚拟世界库由Internet上所有VRML服务器共同构成。

—-值得一提的是为了解决三维图形穿越网络所需要的高带宽,第二代WWW借助浏览器所在客户机的图形子系统来动态构造虚拟世界,这样,网络上传输的仅仅是含有建模信息的VRML文档,传输的瓶颈解决了,对客户机的系统性能要求却大幅提高——访问第二代WWW的最低配置应该是:Pentium100MHzCPU、16MB内存和1MB显示缓存的VGA显卡。

—-VRML语言

—-一、什么是VRML语言

—-按照Web3D协会的定义,VRML语言是一种用于在Internet上构筑3D多媒体和共享虚拟世界的开放式语言标准。它具有以下4个要点:

—-1.开放式标准

—-VRML的最新国际标准是ISO/IEC-14772-1:1997。能够被ISO接受这一点就足以说明该标准所处的地位和现实意义,现在,ISO已把它作为未来标准发展的重要模型加以开发和研究。

—-2.3D多媒体

—-在成为国际标准以前,VRML已经是CAD、动画制作以及3D建模软件等领域数据共享和数据发布的事实上的标准——这些软件有的直接输出VRML格式的文档,有的提供实用工具或插件实现这种变换;在一些最新的多媒体标准中,如:MPEG-4、Java3D等,也都包含或者涉及到VRML规范。

—-3.共享虚拟世界

—-VRML先驱们最早的动机之一就是能够在一个虚拟空间中工作和交谈,这个空间就是著名的Cyberspace。通过VRML97,我们已经可以部分地实现这一构想。

—-4.基于Internet

—-与以往的3D应用不同,VRML规范考虑的第一件事就是通过Internet共享3D实体和场景。实际上,VRML规范本身就是通过Internet探讨、研究和发布的。

—-二、VRML的发展

—-VRML的前身是SGI公司OpenInventer系统使用的一种文档格式,后经MarkPesce、TonyParisi和GavinBell等人的改进和努力,最终发展成第二代WWW的标准语言。

—-到目前为止,VRML标准的发展已经历了三代。

—-1.VRML1.0

—-1994年10月公布。VRML1.0非常简单,它只定义了36种节点类型,涉及的对象也只有静态对象,而没有声音、动画等动态对象。实际上,由于VRML1.0近似HTML的“3D版本”,因此,当时称VRML为虚拟现实标记语言(VirsualRealityMarkupLanguage)。现在,VRML1.0已基本被淘汰。

—-VRML1.0的标志:文档的第一行是“#VRMLV1.0ascii”。

—-2.VRML2.0

—-1996年8月公布。VRML2.0名义上是VRML1.0的修订版,但两者从内容到文档结构上都很不相同。在VRML2.0中,节点类型扩展为54种,支持的对象包括动态和静态两类。这时的VRML语言,已经完全脱离HTML的影响,被正式命名为:虚拟现实建模语言(VirsualRealityModelingLanguage)。

—-VRML2.0的标志:文档的第一行是“#VRMLV2.0utf8”。

—-3.VRML97

—-VRML1.0和VRML2.0并不是真正的国际标准。直到1997年12月,VRML才被国际标准化组织ISO和国际电子工业协会IEC正式接纳为国际标准,国际标准号ISO/IEC14772-1:1997,习惯上称为VRML97。

—-VRML97是在VRML2.0的基础上,进行了少量功能性调整而形成的,对用户而言,两者完全一样。可以认为,VRML97是VRML2.0的国际正式名称。

—-VRML97的标志与VRML2.0一样:文档的第一行是“#VRMLV2.0utf8”。

—-除了以上3个版本外,预计1999年中期将公布VRML99,这将是一个崭新的更有建设性的VRML版本。

—-三、Web3D协会(Web3DConsortium)

—-VRML标准是由一个称为Web3D协会的组织来管理和发布的。

—-Web3D协会的前身是VRML协会,它创建于1996年,是一个非盈利性的开放式贸易协会,主要负责有关VRML标准的研究、定义和推广工作。

—-协会下设工作组(WorkingGroup),工作组按自愿原则组成,分别从事某个技术专题方面的研究,如:KeyboardInputWG、CompressedBinaryFormatWG、DatabaseWG等,目前这样的工作组共有17个。

—-VRML的基本概念

—-一、节点

—-使用VRML语言编写的文档称为VRML文档(或VRML程序),其扩展名为.wrl。VRML文档的格式有两种:utf8文本格式和二进制格式,目前我们所用的都是文本格式。每个VRML文档是一个Web3D页面,VRML虚拟世界是由一个或多个VRML文档所共同展现。不同的VRML文档之间通过超链接组织在一起,共同构成了遍布全球的非线性超媒体系统。

—-节点(Node)是VRML文档基本的组成单元,它描述对象某一方面的特征:如形状、材质等。VRML虚拟世界的对象往往由一组具有一定层次结构关系的节点来构造。节点具有节点名、节点类型、域、事件接口和实现五个组成部分。节点可以用DEF语句命名,用USE语句引用。

—-节点类型可分为基本类型和用户自定义类型两大类,基本类型由系统提供,自定义类型由用户在基本类型的基础上通过原型机制构造,它们都是对虚拟世界的某些共性的提炼,如:Appearance节点描述实体的外观、Material节点描述对象的材质……域、事件接口和实现通常包含在节点类型的定义中,并在构造节点时被使用。域描述节点的静态固有属性,域可以有多个,每个域都必须具有一个域值;事件接口描述节点的动态交互属性,它提供节点与外界的通信接口,事件接口也可以有多个。接口类型有事件入口和事件出口两种:事件入口(eventIn)是节点的逻辑接收器,它负责监听和接收外界事件;事件出口(eventOut)是节点的逻辑发送器,它负责向外界发送节点产生的事件。实现则是域和事件接口机制的实现代码,它一般由系统提供。需要提醒注意的是事件具有事件值和时间戳属性,事件值即该控制信息本身,时间戳则标识事件发生或传送的时间。

—-每个域(或事件)都具有一个数据类型,用于描述数据的结构、值域、个数等属性。数据类型按照包含的数据个数分为单值型和多值型两类,单值型以SF打头,只能包含一个数据;多值型以MF打头,可包含一个数据列表。

—-二、场景图(SceneGraph)

—-场景图由节点按一定的层次关系组成,它用于构造虚拟世界的主体——各种静态和动态对象。

—-在场景图层次模型中,上下层节点之间存在两种关系:包容关系和父子关系。

—-节点的包容关系是指后代节点作为祖先节点的一个属性域而存在,如Appearance节点,它只能用于Shape节点的appearance域中,参见下文例3。

—-而在父子关系中,子节点并不直接出现在父节点的属性域中,它们集中在父节点的MFNode类型的子域内,依次排列。父节点必须由群节点担任,VRML97的群节点有8个:Anchor、Billboard、Collision、Group、Inline、LOD、Switch、Transform。(未完待续)

表1第二代WWW与第一代WWW的几个区别比较项目第一代WWW第二代WWW
冲浪方式Web页面虚拟世界
通信和交往电子邮件或文字交谈可含各种表情的语言或文字交谈
共享资源文档文档、音频、视频、3D空间
时间相关性无关相关
MUD游戏文字角色扮演游戏真人三维立体游戏

表2域和事件的数据类型
单值型名称多值型名称基类型说明
SFBoolMFBool逻辑型值只有2个:TRUE和FALSE。
SFFloatMFFloat浮点数每个数据成员都是一个浮点数。
SFInt32MFInt3232位整数每个数据成员都是一个32位的整数,该整数可以使用十进制或十六进制表示,使用十六进制时应在数字前加0x,如:0xFF00。
SFStringMFString字符串每个数据成员都是一个utf8字符串,定义时应使用双引号(”)包围字符串。
SFVec2fMFVec2f2D向量每个数据成员都是一个2D向量,2D向量用一对浮点数表示。
SFVec3fMFVec3f3D向量每个数据成员都是一个3D向量,3D向量用3个浮点数表示。
SFTimeMFTime浮点数每个数据成员都是一个表示时间的浮点数,该值等于从1970年1月1日0:00到此刻的秒数。
SFRotationMFRotation每个数据成员都由4个浮点数所组成:3个限定旋转轴的x、y、z坐标和1个旋转角度。
SFNodeMFNode节点每个数据成员都是一个节点。
SFColorMFColor每个数据成员都是一种颜色,颜色由3个分别表示红、绿、兰的0~1间的浮点数所组成,如:001表示蓝色。
SFImage定义二维像素图像。它由三部分组成:(1)最前面两组整数,分别表示二维图像的宽度和高度,单位是像素(pixel);(2)接着的一个整数描述像素的性质:1表示灰度,2表示灰度透明,3表示RGB彩色,4表示RGB彩色透明;(3)最后是若干组十六进制或十进制的整数,分别描述每个像素的颜色、强度和透明度。

—-注释

—-1严格地说,第二代WWW还不是一个完全的VR系统,但它已经具有了VR系统的基本特征,并且正随着虚拟技术的发展而迅速地成熟起来,所以本文姑且称之为VR系统。

—-2超媒体是多媒体技术与超文本结合的结果。在超文本系统中,将节点拓展为多媒体演播单元就成为超媒体系统。超媒体系统与超文本系统的最大区别是其时间特性:超文本系统具有时间无关性,它的链、锚的特性都是时间无关的;而超媒体系统是时间相关的,它的音频、动态图像节点都具有时间相关性。

发布于 :未分类

发表评论

电子邮件地址不会被公开。