荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: VRML的语言结构及应用
发信站: BBS 荔园晨风站 (Wed Jan 27 17:47:14 1999), 转信


VRML的语言结构
    VRML(虚拟现实造型语言)用来在Internet网上建造虚拟世界。它
的基础是一个利用HTT P协议传输数据的全球网;另外一个是SGI设计
的Open Inrentor文件格式。设计目标是使VRM L成为一种标准的语言
,能在Internet上变换虚拟世界,同时具有很好的交互性以及支持大量
用户。VRML的开发重点集中在与平台无关、易扩展并且基于低带宽的
网络连接,通过VRML浏览器,用户能在一个虚拟的场景中自由移动。还
能与其中的实体相互作用并且通过超链接(H yperlink)到达一个新的
三维世界。
    VRML通过许多图形对象来描述一个三维场景。这些对象称为结点
(Nodes)。一个场景由具有层次结构的多个结点组成。VRML2.0在VRML
1.0原有的结点类型基础上,增加了具有特色的三种类型结点,即:传
感器(Sensors)、描述符(Scripts)和声音(Sound)。
    我们先来看一个例子,这是一个十分简单的VRML文件,描述了一个
蓝色的立方体。
    Separator
    {
      Material {
        diffuse Color 001
      }
      Cube {
        width 3
        height 3
        depth 3
      }
      WWW Inline {
        name "http://www.sgi.com/some.wrl"
      }
    }
    从上述例子中可以区分出不同类型的结点。其中包括:
    ·形状结点(如Cube结点)
    ·属性结点(如Material结点)
    ·群组结点(如Separator结点)
    ·超链接结点(如WWW Inline结点)
    形状结点定义了三维场景中物体的几何形状(Geometry)。相应的
例子还有圆锥体、球体等等。属性结点描述了具有一定几何形状物体
的外观,比如说色彩、纹理等等。这种类型的结点也包括变换结点(Tr
ansformationnodes)、照相机和光学结点。而群组结点允许把多个结
点当作一个单元来处理。超链接结点包括两种特殊类型的结点,即WWW
Inline和WWW Anch or结点。WWW Inline结点支持来自不同文件或UR
L的虚拟世界,而WWW Anchor则指定了到新的URL的连接。
    每个结点包括一个或多个域(Field)。对域名、类型以及缺省值
都有规定。也就是说,在VRML2.0的Specification中,对各个不同结点
具有的语法和语义进行了详细的定义。目前一共定义了50多个不同类
型的结点,分别用来满足在Internet网上创建三维世界的需要。下面
来看一个圆柱体(Cylinder)结点的定义:
    Cylinder {
    field    SFB001    bottom      TRUE
    field    SFFLoat   height      2
    field    SFFLoat   radius      1
    field    SFB001    side        TURE
    field    SFB001    top         TURE
    }
    每个圆柱体有三个部分:侧面、顶面和底面。每个部分都有与之
相关的SFB001类型的域,用来指出这个部分是否存在(TRUE或FALSE)。
如果有些部分不存在,则在碰撞检测中不予考虑。而radius域和heigh
t域则分别规定了一个圆柱体的半径和高度。这两个域的取值必须都
大于零。
    除了一些较简单的结点,VRML中的结点大多具有较多的域,从而能
够完成非常丰富的功能。下面我们来看看VRML2.0中所特有的传感器(
Sensors)、描述符(Scripts)以及声音(Sound s)结点。

    传感器(Sensors)结点
    传感器结点代表一个结点的类别。具体包括Cylinder Sensor、P
lane Sensor、TimeSe nsor、Touch Sensor、Visibility Sensor和P
roximity Sensor等七种结点。它们提供用户与虚拟世界中的物体进
行交互的机制。从具体功能上来说,根据时钟或者用户的动作它们能
够产生相应的事件,然后虚拟世界中的对象再来响应这些不同的事件

    下面看一下Proximity Sensor的例子。
    Proximity Sensor {
    exposed Field       SFVec3f     center     000
    exposed Field       SFVec3f     size       000
    exposed Field       SFB001      enabled    TRUE
    eventout            SFB001      is Active
    eventout            SFVec3f     position-changed
    eventout            SFRotation  orientation-changed
    eventout            SFTime      enter Time
    eventout            SFTime      exit Time
    }
    当用户接近、退出和在一个空间中移动的时候,proximity senso
r就会产生不同的事件。当观察者进入或退出一个由center和size定
义的长方体空间时,就会产生is Active TRUE /FALSE事件,同时生成
了enter Time或exit Time事件。当观察者在位置和方向上有所改变
时,就会向外发送positionchanged和orientationchanged的事件。因
而Proximity Sensor根据用户的动作产生和发送不同类型的事件来完
成与用户交互的功能。
    描述符(Scripts)和内插器(Interpolators)结点
    VRML的Script是用于VRML 2.0各个结点的一种描述语言。它是Ja
va描述符语言的子集, 同时由Java的内置对象支持VRML的数据类型。
而内插器是一个内置的动作机制,它在基于大量关键数据线性插值的
基础上产生输出帧。描述符节点自身包含有源代码和指向别的代码的
指针。创作人员能够向Script提供数据,由Script分析各种输入事件
。并且输出事件来改变虚拟世界的状态。所以说描述符和内插器结点
为虚拟世界带来了动作和动画,使得虚拟世界能够更加逼真和具有真
实感。
    我们先来看Position Interpolator结点。
    Position Interpolator {
    eventIn        SFFLoat     set-fraction
    exposedField   MFFLoat     key             []
    exposedField   MFVec3f     keyvalue        []
    eventOut       SFVec 3f    valuechanged    []
    }
    这个结点在一组SFVec3f类型的数值中进行线性插值。这一点对
于位置转移非常合适。keyvalue域是一组关键的数值,这些数值的个
数要key这个域中包含的元素个数相同。
    描述符语言包括VRML Script和Java两种。VRML Script的语法与
Javascript和其它语言有相似之处。VRML Script设计成能被YACC进
行语法分析,因此是一个LALR(1)的文法。具体的语法BNF格式参见VRM
L 2.0的Specification。它对各种函数,语句都有十分详细的规定。
    声音(Sound)结点
    先看一下声音结点的定义。
    Sound {
    exposedField    SFVec3f    direction      001
    exposedField    SFFLoat    intensity      1
    exposedField    SFVec3f    location       000
    exposedField    SFFLoat    maxBack        10
    exposedField    SFFloat    maxFront       10
    exposedField    SFFloat    minBack        1
    exposedField    SFFloat    minFront       1
    exposedField    SFFloat    priority       0
    exposedField    SFNode     source         NULL
    field           SFBool     spatialize     TRUE
    }
    三维空间立体声用来增加虚拟世界中的真实感和临场感。合理地
使用声音能够对用户的体验有十分显著的影响。如果声音文件处理不
当,会导致虚拟世界数据太大而无法下载,必须切记VRML支持MIDI用于
背景音乐,而且可以使用较小.wav文件来营造四周环绕的效果。
    Sound结点描述了在一个VRML场景中声音的定位和空间效果。声
音能被定位在某一点并且可以球形或椭圆形模式发射声音。Sound结
点中的Source域指定了Sound的来源。这个域必须指定或是一个Audio
Clip结点,或是一个Movie Texture结点。结点中的intensity域调节
每个声源的音量。intensity是一个浮点型值,取值从0.0到1.0。0表
示无声音,1则表示声音最大,而priority域则是用来控制当声音通道
少于要播放的声音数量时,选择合适的声道播放。取值也从0.0到1.0,
并且1.0是表示最高的优先级。minFront和minBack域则决定了声音音
源前后音量最大的空间位置。与此类似,maxFront和maxBack域决定了
声音前后能否被听到的区域限制。总而言之,通过Sound结点能对场景
中某块区域的声音效果做出十分逼真的规定。
    VRML的应用
    人类社会正在发生深刻的数字化革命。这场革命首先是从计算机
配置声卡开始,接着是进入多媒体世界,它把声音、视频以及二维、三
维图像结合在一起。目前已进入交互式网络时代,它要求以数字化集
成各种类型媒体并具有高速通信能力。计算机工业正朝着虚拟现实方
向发展,而VRML正是这场革命发展的产物。
    VRML能在不同的应用领域以三维形式输出可视化数据。VRML提供
了新的用户界面,使用者能以更直观的方式与三维世界中的对象交互
。三维数据表达比二维数据更直观和更易理解。采用VRML能给人以更
大的启发,营造更为逼真的三维虚拟世界。
    VRML已成为业界标准。Microsoft、IBM、Netscape、Apple、Ora
cle、SGI、Sony等50余家著名的大公司都支持VRML。VRML的管理团体
正式命名为AG。三维代表着未来。VRML在教育、娱乐、工程和商业方
面已得到应用。
    ·教育应用
    SGI已经把VRML用于建造人体模型、电脑太空旅行、化合物分子
结构显示等领域。由于数据更加逼真,大大提高了人们的想象力,激发
了受教育者的学习兴趣,学习效果十分显著。随着计算机技术、心理
学、教育学等多种学科的结合与相互促进和发展,能够提供更加协调
的人机对话途径。
    ·娱乐应用
    娱乐领域是VRML的一个重要应用领域。VRML是一个功能十分强大
的在Internet网上交换三维场景的描述性语言。它能提供更好的多人
之间的交互。提供更加逼真的虚拟环境,从而使得人们能够享受其中
的乐趣,带来更多更好的娱乐感觉。VRML正朝着实时通信、大规模用
户交互方向发展。
    ·工程应用
    当前的工程很大程度上要依赖于图形工具,以便直观地显示各种
产品。某些设法提高生产率并削减成本的公司,特别需要那些能通过
全球网或内部网按协作方式使用VRML建立三维模型的工程人员。
    ·商业应用
    对于那些期望与客户建立直接联系的公司,尤其是那些在他们的
主页上向客户发送电子广告的公司,全球网具有特别的吸引力。VRML
有可能大幅度改善顾客购买商品的经历。例如,顾客可以访问虚拟世
界中的商店,在那里挑选商品,然后通过全球网办理付款手续,商店及
时把商品送到顾客手中。

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店