X3D 通過三大節點實現多媒體支持:AudioClip (音頻數據)、Sound (音頻播放控制)、MovieTexture (視頻紋理/音視頻同步)。本講詳解屬性、空間音頻模型、音視頻同步播放技巧,附代碼示例。
三大多媒體節點詳解
1. AudioClip:音頻數據源
通常作為 Sound 子節點,支持 .wav、.midi 格式。
| 屬性 | 說明 | 默認值 |
| url | 音頻文件 URL,支持多備選 | — |
| loop | TRUE 循環播放,FALSE 單次 | FALSE |
| pitch | 播放速度倍率 (2.0=雙倍),僅正值有效 | 1.0 |
| startTime/stopTime | 開始/停止時間 (秒) | 0 |
邏輯:loop=TRUE 時循環至 stopTime;loop=FALSE 時播放至文件末尾或 stopTime。
2. Sound:空間音頻播放器
定義聲源在 3D 空間的位置、方向、衰減模型。
| 屬性 | 說明 | 默認值 |
| intensity | 聲源強度 0-1 (部分瀏覽器可>1) | 1 |
| priority | 優先級,背景音樂設 0 | — |
| location | 聲源座標 | 0 0 0 |
| direction | 橢球長軸方向 | 0 0 1 |
| minFront/maxFront | 內/外橢球前端距離 | 1 / 10 |
| minBack/maxBack | 內/外橢球後端距離 | 1 / 10 |
| spatialize | TRUE 空間定位,FALSE 環境聲 | TRUE |
空間模型:雙橢球模型 (內橢球全音量,外橢球靜音,中間線性衰減)。

3. MovieTexture:視頻紋理與音視頻同步
為幾何體貼圖播放視頻,或作為 Sound 聲源實現音視頻同步。
| 屬性 | 說明 | 默認值 |
| url | 視頻文件 (.mpg/MPEG1),多備選按序嘗試 | — |
| speed | 播放倍率 (負值倒放,0 靜止幀) | 1 |
| loop | 循環播放 | FALSE |
| startTime/stopTime | 播放區間 | 0 |
| repeatS/repeatT | S/T 方向紋理重複 | TRUE |
關鍵機制:
- 紋理座標 (s,t) 映射到幾何體表面,[0,1]×[0,1] 對應完整視頻幀
- speed>0 從第 0 幀播放,speed<0 從最後幀倒放
- 音視頻同步最佳實踐:
DEF 定義 MovieTexture,USE 引用作為 Sound 的 source,避免重複解碼、節省內存、保證同步
代碼示例
示例 1:循環播放背景音樂

需將 winlogon.wav 放置同目錄。預覽即可聽到循環播放。
示例 2:視頻紋理貼圖播放


BS Contact 插件優化了多媒體渲染,無需 Sound 節點也可在立體表面播放視頻並輸出聲音。
總結
掌握 AudioClip 數據封裝、Sound 空間定位參數、MovieTexture 視頻紋理映射與 DEF/USE 同步技巧,即可在 X3D 場景中構建沉浸式視聽體驗。下一講將進入動畫系統核心。
- 上一篇文章: X3D 實戰基礎講座(十):動畫核心 — 時間觸發器與插值器
- 下一篇文章: X3D 實戰基礎講座(八):紋理映射與座標變換
Copyright ©
程式碼之家 All Rights Reserved