X3D對多媒體的支持是通過這三個節點來實現的:AudioClip(音頻數據節點)、Sound(音頻播放節點)以及MovieTexture(影像紋理節點)。
在本講中,我們先來簡單地介紹這三個節點的屬性,然後舉一些例子分別說明這些節點的使用及音頻和視頻的播放。
一、音頻和視頻節點
1、AudioClip(音頻數據)節點
AudioClip 一般作為Sound的子節點,分其提供音頻數據,其主要屬性有:
description -- 此節點顯示的提示文本。
url -- 聲音文件的位置。該文件通常是 .wav 格式或 .midi 格式,其它格式不一定支持。
loop -- 是否循環播放。當loop=True時循環,當loop=False只運行一次。默認值為False。
pitch -- 加快或減慢播放聲音的相乘因子(例如:2.0意味著以兩倍的速度播放),只有正值是有效的。默認值為1。
startTime -- 聲音開始播放的時間(秒數)。默認值為0。
stopTime -- 結束播放聲音的時間(秒數)。默認值為0。
需要說明的是:如果loop設為True,聲音一直循環播放直到stopTime停止;如果loop設為False,聲音一次播放到文件末尾或者達到stopTime。
2、Sound(音頻播放)節點
Sound 節點用於聲音的回放,其主要屬性有:
intensity -- 聲源的強度,0為最小值,1為最大值。在有些浏覽器中最大值可以超過1。默認值為1。
priority -- 指出聲音的優先級。若為背景音樂,則設為0。
location -- 聲源的坐標。默認值為[0 0 0]。
direction -- 指定橢球的長軸方向。默認值為[0 0 1]。
minFront -- 聲源坐標點至內橢圓球前部端點的距離。默認值為1。
maxFront -- 聲源坐標點至外橢圓球前部端點的距離。默認值為10。
minBack -- 聲源坐標點至內橢圓球後部端點的距離。默認值為1。
maxBack -- 聲源坐標點至外橢圓球後部端點的距離。默認值為10。
spatialize -- 指出聲音是作為空間點播放(True),還是作為環境聲播放(False)。默認值為True。
上述屬性中所涉及到的位置關系可以用下圖來表示。
3、MovieTexture(影像紋理)節點
MovieTexture為指定的幾何面提供影像帖圖,或為Sound 節點提供聲音。其主要屬性如下:
url -- 指定紋理文件的URL。如果指定了多個URL,則浏覽器按排列的順序裝載第一個能找到的文件。電影紋理通常上MPEG1,文件擴展名為.mpg。
speed -- 指定電影紋理播放速度的乘數因子。值1表示以正常速度播放;值2表示以雙倍的速度播放;負值表示倒放。默認值為1。
loop -- 指明電影是否循環播放。當loop=True時循環,當loop=False只運行一次。默認值為False。
startTime -- 指定電影開始播放的時間。默認值為0。
stopTime -- 指定電影停止播放的時間。默認值為0。
repeatS -- 指明在s水平方向重復紋理。True表明是重復,False表明將鎖定紋理坐標。默認值為True。
repeatT -- 指明在t垂直方向重復紋理。True表明是重復,False表明將鎖定紋理坐標。默認值為True。
說明:
(1) MovieTexture節點指定了一幅電影紋理圖和控制播放及紋理映射的參數。紋理圖是在水平軸(s)和垂直軸(t)均從0到1延展的二維圖像。電影紋理是由Appearance節點的texture域或Sound節點的域(只作為一個聲源)指定。
(2) 如果speed的值是正的,電影從0幀開始播放;如果speed的值是負的,則從最後一幀開始播放。如果speed為0,MovieTexture將總顯示第0幀。當一個電影紋理變為非激活狀態時,相應變化的那一刻的幀將保持為物體上的當前紋理。
(3) 若要同時播放音頻和視頻,最好先使用DEF定義一個紋理,然後使用USE作為Sound節點的源,這樣可以節省內存。
二、示例
示例1:
其中,winlogon.wav文件應和代碼文件同在一個文件夾中。編譯預覽後可以聽到播放的聲音,而且是循環播放。
示例2:
結果如下所示:
需要說明的是:對於X3D的多媒體效果,BS插件做了很多優化,使得不需要Sound節點的支持也可以在立體的表面上進行影像播放,而且也有聲音的輸出。事實上,X3D更為精彩的地方是動畫和交互的支持。在下一講中,我們將討論X3D的動畫效果。