(1)VRML的特点 (a)是造型语言, 可描述3D场景。 (b)用户可进入VRML建立的世界,去探索它。 (c)VRML建立的世界是交互的,受用户控制。 (d)把2D,3D物体、动画、多媒体效果混合于一体。 (e)平台无关,可在PC或SGI上浏览。 (f)基于Web,可建立三维可视化服务器。 (g)着色不如OpenGL快。 (h)没有底层控制。 (j)有限的界面。 (2)VRML的概念与实例 VR世界中的坐标系:X轴指向屏幕右侧,Y轴指向屏幕上方,Z轴指向观察者。 VRML程序是解释执行,实时建模着色的文本程序。它的两个要点是: ①节点(node):构成虚拟世界的基本要素, ②路由(route):节点间传送信息的途径。 VRML文件都是扩展名WRL的文本文件,或扩展名WRZ(压缩格式)的二进制文件。它一般包括如下四部分: ①文件头:位于首行,提供版本信息。如:# VRML V2.0 utf8。 ②注释:以#开始的一段文字。 ③节点:场景信息的单位。可以描述造型,灯光,声音等。如:Cylinder{…}描述一个圆柱体。 ④域值:域用于描述及改变节点的属性,值反映域的大小。如:Cylinder{ height 2.0 radius 1.5 } 中,height(高度)和radius(半径)是域,2.0和1.5是值。 (3)VRML的语言结构 VRML的基础,是一个利用HTIP协议传输数据的全球网,以及一个SGI设计的Open Inventor文件格式。VRML是标准语言,与平台无关,易扩展,基于低带宽的网络连接。用户可在虚拟场景中漫游,还可用超链接(hyperlink)到达新的三维世界。 (a)节点(node)是描述三维场景的图形对象。 一个场景由具有层次结构的多个节点组成。共有50多个节点,定义三维场景。 一个节点有多个域(field)。域名、类型及缺省值都有规定。如圆柱体节点。 Cylinder { field SFBool bottom TRUE field SFFLoat height 2 field SFFLoat radius 1 field SFBool side TRUE field SFBool top TRUE } 定义的圆柱体,高度为2,半径为1,具有下底面,有圆柱侧面,有上顶面。 (b)节点有各种类型。 形状(shape)节点:定义物体形状。 基本形状(Primitive)节点:是标准积木块,如球。 外表(Appearance)节点:定义外观,如色彩、纹理。 变换(Transformation)节点。 照相机节点。 光学节点。 超链接节点:包括WWWInline和WWW Anchor。 WWW Inline节点:支持集成不同文件或URL的虚拟世界。 WWW Anchor节点:指定到新的URL的连接。 (c)传感器(Sensor)节点是一类特殊的节点。 包括七种节点: Cylinder Sensor, Plane Sensor, Time Sensor, Touch Sensor, Visibility Sensor, Proximity Sensor。 Proximity Sensor{ exposed Field SFVec3f center 0,0,0 exposed Field SFVee3f size 0,0,0 exposed Field SFBool enabled TRUE eventout SFBool isActive eventou SFVec3f position-changed eventout SFRotation orientation-changed eventout SFTime enter Time eventout SFTime exit Time } 这时接近传感器节点。当用户接近、退出空间,或在空间移动时,会产生事件。Center和Size定义长方体,分别用三个数字定义长方体的中心点三维坐标和三维尺寸。Enabled域的值为TRUE表示允许工作。进入退出长方体空间时发生isActive, enter Time和exit Time事件。这些事件应该为对于接近的响应行为,进入时间和推出时间。也可以利用position-changed和orientation-changed,改变位置和方向。 (d)描述符(Script)节点,内插器(Interpolator) 节点: Script是Java描述符语言的子集,同时由Java 的内置对象支持VRML数据类型。 Script分析输入,由输出改变世界。Interpolator是内置的动作机制,对数据内插,产生动画。 (e)声音(Sound)节点描述声音定位和空间效果。 声音定位在一点,以球或椭圆形发射。域Intensity调节音量。域 Priority是占用声道的优先权。 |