
VRML(虚拟现实建模语音)-第9章-增强的静态场景.ppt
28页VRML(VRML(虚拟现实建模语音虚拟现实建模语音)-)-第第9 9章章- -增强的静态场景增强的静态场景9.1 空空间背景背景 v在VRML中,天空、地面的场景都是以背景的形式出现的其空间背景可以理解为包围在VRML空间周围的无限大的球体外壳而这个空间背景就是通过Background节点创建的测览者可以看到这个背景的任意部分,但是永远不能接近它这就和现实中的天空和地平线一样,v空间背景分为两部份:天空背景和地面背景这两部分是通过地平线来分开的地平线位于VRML空间的垂直方向上的中线上,也就是以VRML空间的中心为原点的世界坐休系的X-Z平面上在X-Z平面以上的为天空背景,在X-Z平面下的为地面背景,而X-Z平面和背景球体的相接处,就是地平线. 9.1 空空间背景背景v在VRML中,空间背景中的位置确定是通过空间角来确定这就同地球仪上的纬度差不多在天空背景上,天空角为0°相当北纬180°,天空角180°相当南纬180°;而地面角正好相反,地面角0°就是南纬180°,地面角180°就是北纬180°,地平线就是位于天空角90°和地面角90°的地方利用这么空间角,就可以对空间背景采用梯度着色,避免了单一色彩的问题。
9.1 空空间背景背景v9.1.1 Background节点点——控制背景控制背景 vBackground节点用来生成VRML的背景,其生成的背景是立体式的,它会带给你一种层次感在VRML中,大地和天空都是无限大的,观察者无论怎样走,也走不到大地和天空之外所以大地和天空总是出现在任何物体之后 v其节点语法定义如下:Background{ExposedField MFFloatskyAngle[]ExposedField MFColorskyColor[0.0 0.0 0.0]ExposedField MFFloatgroundAngle[] 9.1 空空间背景背景ExposedField MFColorgroundColor[0.0 0.0 0.0]ExposedField MFStringbackUrl[]ExposedField MFStringbottomUrl[]ExposedField MFStringfrontUrl[]ExposedField MFStringrightUrl[]ExposedField MFStringtopUrl[]exposedField SFBoolset_bind[]exposedField SFBoolbind_changed[]} 9.1 空空间背景背景vskyAngle域的值指定了空间背景上需要着色的位置的空间角。
VRML浏览器就是在这些空间角所指定位置进行着色的第一个天空颜色着色于天空背景的正上方,第二个天空颜色着色于第一个天空角所指定的位置,第三个天空颜色着色于第二个天空角所指定的位置,依此类推如果最后一个天空角小于180°,则将使用天空颜色为最后剩下的天空背景部分进行着色两个天空角之间的颜色是慢慢过渡的,这就形成了颜色梯度该域值必须以升序的方式排列缺省值为空vSkyColor域的值指定了用来进行着色的颜色,该域值是一系列RGB颜色其缺省值为0.0 0.0 0.0 9.1 空空间背景背景v同skyAngle域的作用差不多,groundAngle域的值指定了地面背景上需要着色的位置的空间角第一个地面颜色着色于地面背景的正下方,第二个地面颜色着色于第一个地面角所指定的位置,第三个地面颜色着色于第二个地面角所指定的位置,依此类推如果最后一个地面角小于180°,则地面背景剩下的部分保持透明该域值中地面角必须以升序的方式排列,其缺省值为空vGroungColor域所指定的是对地面背景进行着色的一系列RGB颜色该域值的缺省值为空9.1 空空间背景背景v我们可以通过对背景设定颜色来产生天空和地面效果,也可以在空间背景上添加背景图像,以生成山脉等场景。
利用 frontUrl、 backUrl、 leftUrl、 rightUrl、 topUrl和bottomUrl这几个域分别在6个不同的面添加背景图像可以在VRML中使用的背景图像只能是JPGE、GIF和PNG格式vSet_bind eventIn和isBound eventOut在使用背景变换时被用来接收事件和发送事件9.1 空空间背景背景v9.1.2 Fog节点点——雾化效果化效果 v在VRML中添加空间背景,使场景更真实,同样也可以在VRML中增加雾气的效果,因为现实空间中是有大气的在VRML中雾不只是简单的白色自然雾,也可生成黑色的烟雾等通过雾的生成使VRML空间中的造型有一种朦胧感,而远近的区别将更加明显v在VRML中添加大气效果是通过Fog节点来实现的Fog节点定义可见度递减的区域来模拟烟或雾浏览器将雾的颜色与被绘制的物体的颜色相混合物体的距离越远,雾的浓度越大,物体的能见度越低 9.1 空空间背景背景v其节点语法描述如下:Fog{ExposedField SFColorcolor 1.0 1.0 1.0ExposedField SFFloatfogType “LINEAR”ExposedField SFStringvisibilityRange 0.0ExposedField SFBoolset_bindExposedField SFBoolbind_changed} 9.1 空空间背景背景vcolor域的值指定了雾的颜色,可以任意设定雾的颜色,以产生不同的视觉效果。
该域的缺省值为1.0 1.0 1.0vfogType域的值指定了雾的类型当域值为“LINEAR”时,雾的浓度将随观察距离的增加而线性增大;当域值为“EXPONENTIAL”时,雾的浓度将随观察距离的增加而指数增大该域值的缺省值为“LINEAR”vVisibilityRange域的值指定了浏览者在当前VRML场景中的可见度在浏览者的距离超过可见度范围时造型完全被雾挡住,而看不见了当该域值比较大时,雾是逐步变浓的,就会产生薄雾的效果;当该域值比较小时,雾是突然变浓的,就像浓雾该域值的缺省值为0.0,即没有烟雾的效果vSet_bind和bind_changed用来接收事件和输出事件 9.2 9.2 声音效果声音效果 v在VRML中可以添加声音,与静态网页上的声音相比,VRML场景所播放的声音不是简单的2D声音,而是有其自己的声源,以及模拟现实中的声音传播路径的3D声音,它会给人一种和现实中一样的听觉感应vVRML提供了声音节点来在VRML场景中添加声音,声音节点包括AudioClip节点、MovieTexture节点和Sound节点以下将介绍这些节点的语法和用法 9.2 9.2 声音效果声音效果v9.2.1 AudioClip节点点 vAudioClip节点在VRML世界中描述了一个声源,指定了其他需要声源的节点可以引用的声音文件的位置及播放的各种参数,就如生成一台播放音乐的装置,如CD机。
v其语法结构如下:AudioClip{ExposedField MFStringurl[]ExposedField SFStringdescription“”ExposedField SFBoolloopFALSEExposedField SFFloatpitch1.0ExposedField SFTimestartTime0.09.2 9.2 声音效果声音效果ExposedField SFTimestopTime0.0EventOut SFTimeduration_changedEventOut SFBoolisActive}vurl域的值指定了一个需要引入的声音文件的url地址,或一组url地址列表该域值提供了在该VRML场景中所要播放的声音文件的具体位置,其排列顺序为从高优先权的到低优先权的通常VRML浏览器从地址列表中第一个url指定地址试起,如果声音文件没有被找到或不能打开,浏览器尝试打开第二个url指定的文件,依此类推当找到一个可以打开的声音文件时,该声音文件被读入, 9.2 9.2 声音效果声音效果作为声源如果找不到一个可以打开的声音文件,则不播放声音该域的缺省值为一张空的url列表,这表明没有任何文件被打开,不播放任何声音。
vVRML所支持的声音文件有WAV、MIDI和MPEG-1文件,而可以通过AudioClip节点引用的声音文件有WAV文件和MIDI文件MPEG-1是通过MovieTexture节点来引用的 vLoop域的值指定是否循环播放所引用的声音文件,该域值为布尔运算值,如果该域值为TRUE,只要startTime大于stopTime,声音便一遍又一遍地循环播放,如果该域值为FALSE,则声音只播放一次就停止,该域的缺省值为FALSE 9.2 9.2 声音效果声音效果vDescription域的值指定了一组描述所引用声音文件德文本串其依赖于浏览器的方式使用,可在浏览器播放该声音文件的同时显示,或在不能播放该声音文件时显示该文本串,以说明该声音文件,就如同在网页中因为不能显示图片而以文字代替一样该域值的缺省值为空vPitch域的值指定了播放声音的相乘因子,用来加快或减慢声音的播放速度将pitch域的域值同这个声音文件的固有播放时间相乘就是该声音文件在VRML空间中的播放时间当该域值为1.0时,声音按正常速度播放,当该域值在0.0和1.0之间时,将减慢声音的播放速度,并降低音调,当该域值大于1.0时,将加快声音的播放速度,并提高音调。
注意,该域值最好不要大于5.0,该域值的缺省值为1.0,即按原声音文件本身的播放速度来播放 9.2 9.2 声音效果声音效果vStartTime域的值指定了所引用声音文件开始播放的绝对时间表示以格林威治时间1970年1月1日午夜15时开始计时,并以秒为单位的绝对时间该域值的缺省值为0.0秒vStopTime域的域值指定了所引用声音停止播放的绝对时间,同startTime域相对应,该域的缺省值为0.0秒vStartTime、stopTime、pitch、loop等域共同作用,控制声音文件的播放,其作用情况如表9.2.1所示: 9.2 9.2 声音效果声音效果 表9.2.1 startTime、stopTime、pitch、loop域值共同作用的效果 9.2 9.2 声音效果声音效果vduration_changed事件出口用来在声音被打开后,与声音的播放时间(以秒为单位)一起发送出去,使其他节点知道当前所播放的声音的持续时间所输出的播放时间与pitch域中所规定的播放速度无关,即输出的是该声音文件本身所固有的播放时间当声音文件不能被打开或不能确定其播放时间时,duration_changed eventOut输出-1,而不是播放时间。
vIsActive布尔事件在声音开始时发送一个TRUE事件,当声音停止时,发送一个FALSE事件通过这个布尔值告诉其他节点当前该声音是否正在播放 9.2 9.2 声音效果声音效果v9.2.2 MovieTexture节点点 v该节点已在前面的纹理映射中涉及,这里不再赘述v9.2.3 9.2.3 SoundSound节点点 vAudioClip节点和MovieTexture节点在VRML文件中并不能作为独立的节点,它们只是创建了声源,而要播放声音,并按VRML设计者所希望的来播放,就需要通过Sound节点来实现 9.2 9.2 声音效果声音效果vSound节点在VRML世界中生成了一个声音发射器,它用来指定声源的各种参数,即指定了VRML场景中声源的位置和声音的立体化表现声音可以位于局部坐标系中的任何一个点,并以球面或椭球的模式发射出声音Sound节点也可以使声音环绕,即不通过立体化处理,这种声音在离它所指定的距离渐变为0同AudioClip节点不同,Sound节点可以出现在VRML文本文件的顶层,也可以作为组节点的子节点v其节点语法定义如下: Sound{ ExposedField SFVec3fdirection0.0 0.0 1.0 9.2 9.2 声音效果声音效果ExposedFieldSFFloatintensity1.0ExposedFieldSFVec3flocation0.0 0.0 0.0ExposedFieldSFFloatmaxBack10.0ExposedFieldSFFloatmaxFront10.0ExposedFieldSFFloatminBack1.0ExposedFieldSFFloatminFront1.0ExposedFieldSFFloatpriority0.0ExposedFieldSFNodesourceNULLExposedFieldSFBoolspatializeTRUE} 9.2 9.2 声音效果声音效果vdirection域的值指定了声音发射器的空间朝向,即规定VRML世界中声音发射器所指方向的矢量,声音发射器将以这个矢量的方向发射声音。
该矢量由三个浮点数表示,分别表示一个三维向量的X,Y,Z部分该域的缺省值为0.0 0.0 1.0,即指向空间坐标系的Z轴正方向的向量vIntensity域的值指定了声音发射器发射声音的强度,即音量该域值在0.0到1.0范围内变化1.0表示音量最大,为声音文件建立时的全音量;0.0表示静音在0.0和1.0之间的值则表示不同声音发射器的音量需要注意的是,当intensity域的域值大于1.0时,会使该声音失真,也就失去了其声音本来的效果,如果场景需要高音量的声音,最好先在更高音量下重新录制一次该域值的缺省值为1.0 9.2 9.2 声音效果声音效果vLocation域的值指定了当前局部坐标系中一个用来表示声音发射器位置的三维坐标该域的缺省值为0.0 0.0 0.0,即坐标系的原点vPriority域的值用来指定声音的优先级该域的取值范围为0.0到1.01.0表示最高的优先级,0.0最低Priority域的缺省值为0.0vSource域的值为VRML场景中播放的声音提供了声源其域值就是用来创建声源的AudioClip节点,或MovieTexture节点该域的缺省值为NULL,表示没有声源引入,即没有声音可播放。
vSpatialize域的值指定了是否实现声音立体化,即是否将声音经过数字处理,使浏览者听到声音的同时可感觉出声音发射器在三维空间中的具体位置,从而达到立体效果该域值为布尔值运算当域值为TRUE时,声音信号被转换为一个单耳信号, 9.2 9.2 声音效果声音效果经过立体化处理,然后由扬声器或耳机的左右输出;当域值为FALSE时,声音信号不经过处理,直接由扬声器或耳机输出vMaxBack域的值指定了在当前坐标系中,从声音发射器所在位置沿direction域所指定方向的相反方向假想的直线距离,超过此距离则听不到声音该域值的设定要大于或等于0.0其缺省值为10.0vmaxFront域的值指定了在当前坐标系中,从声音发射器所在位置沿direction域所指定方向假想的直线距离,超过此距离则听不到声音该域值的设定要大于或等于0.0其缺省值为10.0vminBack域的值指定了在当前坐标系中,从声音发射器所在位置沿direction域所指定方向的相反方向假想的直线距离,超过此距离则声音开始衰减,直到maxBack域所指定的距离处,音量为零该域值的设定要大于或等于0.0其缺省值为1.0 9.2 9.2 声音效果声音效果vminFront域的值指定了在当前坐标系中,从声音发射器所在位置沿direction域所指定方向假想的直线距离,超过此距离则声音开始衰减,直到maxFront域所指定的距离处,音量为零。
该域值的设定要大于或等于0.0其缺省值为1.0v在该节点作用下,声音的传播情况如图9.2.3所示: 9.2 9.2 声音效果声音效果结束!结束!。












