您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > VRML(虚拟现实建模语音) 第9章 增强的静态场景
第九章增强的静态场景VRML2.0中提供一些特征使得场景看上去更加真实。例如,声音(sound)节点允许为场景加上背景音乐、动作声响、对话等等;背景(background)节点允许为场景加一幅背景图画;雾(fog)节点能产生逼真的雾化大气效果。9.1空间背景在VRML中,天空、地面的场景都是以背景的形式出现的。其空间背景可以理解为包围在VRML空间周围的无限大的球体外壳。而这个空间背景就是通过Background节点创建的。测览者可以看到这个背景的任意部分,但是永远不能接近它。这就和现实中的天空和地平线一样,空间背景分为两部份:天空背景和地面背景。这两部分是通过地平线来分开的。地平线位于VRML空间的垂直方向上的中线上,也就是以VRML空间的中心为原点的世界坐休系的X-Z平面上。在X-Z平面以上的为天空背景,在X-Z平面下的为地面背景,而X-Z平面和背景球体的相接处,就是地平线.9.1空间背景在VRML中,空间背景中的位置确定是通过空间角来确定。这就同地球仪上的纬度差不多。在天空背景上,天空角为0°相当北纬180°,天空角180°相当南纬180°;而地面角正好相反,地面角0°就是南纬180°,地面角180°就是北纬180°,地平线就是位于天空角90°和地面角90°的地方。利用这么空间角,就可以对空间背景采用梯度着色,避免了单一色彩的问题。9.1空间背景9.1.1Background节点——控制背景Background节点用来生成VRML的背景,其生成的背景是立体式的,它会带给你一种层次感。在VRML中,大地和天空都是无限大的,观察者无论怎样走,也走不到大地和天空之外。所以大地和天空总是出现在任何物体之后。其节点语法定义如下:Background{ExposedFieldMFFloatskyAngle[]ExposedFieldMFColorskyColor[0.00.00.0]ExposedFieldMFFloatgroundAngle[]9.1空间背景ExposedFieldMFColorgroundColor[0.00.00.0]ExposedFieldMFStringbackUrl[]ExposedFieldMFStringbottomUrl[]ExposedFieldMFStringfrontUrl[]ExposedFieldMFStringrightUrl[]ExposedFieldMFStringtopUrl[]exposedFieldSFBoolset_bind[]exposedFieldSFBoolbind_changed[]}9.1空间背景skyAngle域的值指定了空间背景上需要着色的位置的空间角。VRML浏览器就是在这些空间角所指定位置进行着色的。第一个天空颜色着色于天空背景的正上方,第二个天空颜色着色于第一个天空角所指定的位置,第三个天空颜色着色于第二个天空角所指定的位置,依此类推。如果最后一个天空角小于180°,则将使用天空颜色为最后剩下的天空背景部分进行着色。两个天空角之间的颜色是慢慢过渡的,这就形成了颜色梯度。该域值必须以升序的方式排列。缺省值为空。SkyColor域的值指定了用来进行着色的颜色,该域值是一系列RGB颜色。其缺省值为0.00.00.0。9.1空间背景同skyAngle域的作用差不多,groundAngle域的值指定了地面背景上需要着色的位置的空间角。第一个地面颜色着色于地面背景的正下方,第二个地面颜色着色于第一个地面角所指定的位置,第三个地面颜色着色于第二个地面角所指定的位置,依此类推。如果最后一个地面角小于180°,则地面背景剩下的部分保持透明。该域值中地面角必须以升序的方式排列,其缺省值为空。GroungColor域所指定的是对地面背景进行着色的一系列RGB颜色。该域值的缺省值为空。9.1空间背景我们可以通过对背景设定颜色来产生天空和地面效果,也可以在空间背景上添加背景图像,以生成山脉等场景。利用frontUrl、backUrl、leftUrl、rightUrl、topUrl和bottomUrl这几个域分别在6个不同的面添加背景图像。可以在VRML中使用的背景图像只能是JPGE、GIF和PNG格式。Set_bindeventIn和isBoundeventOut在使用背景变换时被用来接收事件和发送事件。9.1空间背景9.1.2Fog节点——雾化效果在VRML中添加空间背景,使场景更真实,同样也可以在VRML中增加雾气的效果,因为现实空间中是有大气的。在VRML中雾不只是简单的白色自然雾,也可生成黑色的烟雾等。通过雾的生成使VRML空间中的造型有一种朦胧感,而远近的区别将更加明显。在VRML中添加大气效果是通过Fog节点来实现的。Fog节点定义可见度递减的区域来模拟烟或雾。浏览器将雾的颜色与被绘制的物体的颜色相混合。物体的距离越远,雾的浓度越大,物体的能见度越低。9.1空间背景其节点语法描述如下:Fog{ExposedFieldSFColorcolor1.01.01.0ExposedFieldSFFloatfogType“LINEAR”ExposedFieldSFStringvisibilityRange0.0ExposedFieldSFBoolset_bindExposedFieldSFBoolbind_changed}9.1空间背景color域的值指定了雾的颜色,可以任意设定雾的颜色,以产生不同的视觉效果。该域的缺省值为1.01.01.0。fogType域的值指定了雾的类型。当域值为“LINEAR”时,雾的浓度将随观察距离的增加而线性增大;当域值为“EXPONENTIAL”时,雾的浓度将随观察距离的增加而指数增大。该域值的缺省值为“LINEAR”。VisibilityRange域的值指定了浏览者在当前VRML场景中的可见度。在浏览者的距离超过可见度范围时造型完全被雾挡住,而看不见了。当该域值比较大时,雾是逐步变浓的,就会产生薄雾的效果;当该域值比较小时,雾是突然变浓的,就像浓雾。该域值的缺省值为0.0,即没有烟雾的效果。Set_bind和bind_changed用来接收事件和输出事件。9.2声音效果在VRML中可以添加声音,与静态网页上的声音相比,VRML场景所播放的声音不是简单的2D声音,而是有其自己的声源,以及模拟现实中的声音传播路径的3D声音,它会给人一种和现实中一样的听觉感应。VRML提供了声音节点来在VRML场景中添加声音,声音节点包括AudioClip节点、MovieTexture节点和Sound节点。以下将介绍这些节点的语法和用法。9.2声音效果9.2.1AudioClip节点AudioClip节点在VRML世界中描述了一个声源,指定了其他需要声源的节点可以引用的声音文件的位置及播放的各种参数,就如生成一台播放音乐的装置,如CD机。其语法结构如下:AudioClip{ExposedFieldMFStringurl[]ExposedFieldSFStringdescription“”ExposedFieldSFBoolloopFALSEExposedFieldSFFloatpitch1.0ExposedFieldSFTimestartTime0.09.2声音效果ExposedFieldSFTimestopTime0.0EventOutSFTimeduration_changedEventOutSFBoolisActive}url域的值指定了一个需要引入的声音文件的url地址,或一组url地址列表。该域值提供了在该VRML场景中所要播放的声音文件的具体位置,其排列顺序为从高优先权的到低优先权的。通常VRML浏览器从地址列表中第一个url指定地址试起,如果声音文件没有被找到或不能打开,浏览器尝试打开第二个url指定的文件,依此类推。当找到一个可以打开的声音文件时,该声音文件被读入,9.2声音效果作为声源。如果找不到一个可以打开的声音文件,则不播放声音。该域的缺省值为一张空的url列表,这表明没有任何文件被打开,不播放任何声音。VRML所支持的声音文件有WAV、MIDI和MPEG-1文件,而可以通过AudioClip节点引用的声音文件有WAV文件和MIDI文件。MPEG-1是通过MovieTexture节点来引用的。Loop域的值指定是否循环播放所引用的声音文件,该域值为布尔运算值,如果该域值为TRUE,只要startTime大于stopTime,声音便一遍又一遍地循环播放,如果该域值为FALSE,则声音只播放一次就停止,该域的缺省值为FALSE。9.2声音效果Description域的值指定了一组描述所引用声音文件德文本串。其依赖于浏览器的方式使用,可在浏览器播放该声音文件的同时显示,或在不能播放该声音文件时显示该文本串,以说明该声音文件,就如同在网页中因为不能显示图片而以文字代替一样。该域值的缺省值为空。Pitch域的值指定了播放声音的相乘因子,用来加快或减慢声音的播放速度。将pitch域的域值同这个声音文件的固有播放时间相乘就是该声音文件在VRML空间中的播放时间。当该域值为1.0时,声音按正常速度播放,当该域值在0.0和1.0之间时,将减慢声音的播放速度,并降低音调,当该域值大于1.0时,将加快声音的播放速度,并提高音调。注意,该域值最好不要大于5.0,该域值的缺省值为1.0,即按原声音文件本身的播放速度来播放。9.2声音效果StartTime域的值指定了所引用声音文件开始播放的绝对时间。表示以格林威治时间1970年1月1日午夜15时开始计时,并以秒为单位的绝对时间。该域值的缺省值为0.0秒。StopTime域的域值指定了所引用声音停止播放的绝对时间,同startTime域相对应,该域的缺省值为0.0秒。StartTime、stopTime、pitch、loop等域共同作用,控制声音文件的播放,其作用情况如表9.2.1所示:9.2声音效果表9.2.1startTime、stopTime、pitch、loop域值共同作用的效果9.2声音效果duration_changed事件出口用来在声音被打开后,与声音的播放时间(以秒为单位)一起发送出去,使其他节点知道当前所播放的声音的持续时间。所输出的播放时间与pitch域中所规定的播放速度无关,即输出的是该声音文件本身所固有的播放时间。当声音文件不能被打开或不能确定其播放时间时,duration_changedeventOut输出-1,而不是播放时间。IsActive布尔事件在声音开始时发送一个TRUE事件,当声音停止时,发送一个FALSE事件。通过这个布尔值告诉其他节点当前该声音是否正在播放。9.2声音效果9.2.2MovieTexture节点该节点已在前面的纹理映射中涉及,这里不再赘述。9.2.3Sound节点AudioClip节点和MovieTexture节点在VRML文件中并不能作为独立的节点,它们只是创建了声源,而要播放声音,并按VRML设计者所希望的来播放,就需要通过Sound节点来实现。9.2声音效果Sound节点在VRML世界中生成了一个声音发射器,它用来指定声源的各种参数,即指定了VRML场景中声源的位置和声音的立体化表现。声音可以位于局部坐标系中的任何一个点,并以球面或椭球的模式发射出声音。Sound节点也可以使声音环绕,即不通过立体化处理,这种声音在离它所指定的距离渐变为0。同AudioClip节点不同,Sound节点可以出现在VRML文本文件的顶层,也可以作为组节点的子节点。其节点语法定义如下:Sound{ExposedFieldSFVec3fdirection0.00.01.09.2声音效果ExposedFieldSFFloatintensity1.0ExposedFieldSFVec3flocation0.00.00.0ExposedFieldSFFloatmaxBack10.0ExposedFie
本文标题:VRML(虚拟现实建模语音) 第9章 增强的静态场景
链接地址:https://www.777doc.com/doc-3508757 .html