|
執筆バージョン: Unreal Engine 5.7
|
ヘイガイズ!エンジニアの片平です!
今回は MetaSounds Interfaces を使用して、
音源とリスナーの角度によって変化する音響演出を実装していきます!
MetaSounds Interfacesとは
公式ドキュメントを引用すると
「インターフェースでは、特殊な入力と出力へのアクセスを提供することで、MetaSound を Unreal Audio Engine の他のシステムと連動させることができます。」
とのことです。
MetaSounds には、あらかじめ用意されたインターフェースがいくつか存在しており、
それらを利用することで BP や C++ を一切書かずに様々なパラメータに応じた音響変化を実装できます。
今回はその中から 「UE.Spatialization」インターフェースを使い、
リスナーから見た音源の角度によって音が変化する演出を作成します。
MetaSound について
MetaSound の基本的な機能については、当ブログの下記記事で紹介しています。
再生や出力などの基本的な説明は本記事では省略しますので、
MetaSound 自体が初めての方は、先にこちらをご参照ください。
[UE5] ハンズオン! UE5サウンド新機能”MetaSounds”で効果音を加工してみよう!
作るもの
白い円錐が音源となる Actor です。

視界の中心に音源があるときはクリアに聞こえ、
視界から外れていくにつれて徐々にノイズへ変化していきます。
作成手順
プロジェクトの作成
FirstPersonTemplate から新規プロジェクトを作成します。
レベルの作成
レベルは FirstPersonTemplate の「Lvl_FirstPerson」 をそのまま使用します。

音源ファイルのインポート
TTS を使って、MetaSounds に喋らせる音声を適当に用意しました。
こちらをUE5にインポートします。

ノイズについては、Engine Content 内の /Engine/EngineSounds/WhiteNoise を使用するため、
新たに用意する必要はありません。
MetaSoundsの作成
Audio → MetaSound Source から新しい MetaSound を作成します。

名前は 「MS_SoundSource」 とします。

今回は素材がモノラル音源のため、
Output Format もモノラルのまま作成します。

インターフェースの追加
Interfaces > Add Interface… から UE.Spatialization を追加します。

デフォルトで UE.Source.OneShot が追加されていますが、
今回はループ再生する音源なので、削除しても問題ありません。
音源の再生
下記画像の通りにノードを組みます。

下記画像の構成になるようにノードを組みます。
- Input ノードから「SpeechAboutMS」 と 「WhiteNoise」 の 2 つの WavePlayer を同時に再生します
- 「SpeechAboutMS」と「WhiteNoise」を乗算し、喋りのニュアンスを残したノイズを作ります
- さらに「WhiteNoise」と 0.1 を乗算した音を加え、ベースとなるノイズ感も足します
- 最終的に、これらを Mono Mixer でミックスします
角度でミックスを変える
追加で下記画像の通りにノードを組みます。

追加で、下記画像の通りにノードを組みます。
- UE.Spatialization の Azimuth から、リスナーから見た音源の方位角を取得します
- Azimuth を 0°(正面)〜180°(背面) として扱い、
- ±10° まではスピーチ音が 100%
- そこから ±30° にかけて、なめらかにノイズへ変化
- ノイズは音量が大きいため、0.1 を乗算して音量を調整しています
再生用のActorを作成する
新しい Actor を作成します。
名前は 「BP_SoundSource」 とします。

オーディオコンポーネントと Cone を追加します。

Audio Component の Sound に「MS_SoundSource」 を設定します。

レベルにActorを配置
作成した 「BP_SoundSource」 をレベルに配置します。

完成!
冒頭の動画と同じ挙動が確認できるはずです!
まとめ
今回は、リスナーから見た音源の角度によって音が変化する演出として、
音声とノイズを切り替える表現を作ってみました。
音量による指向性表現だけでなく、
フィルターやピッチを組み合わせても、さらに面白い効果が作れそうですね。
また、今回は 方位角(Azimuth) を使用しましたが、
MetaSounds Interfaces を使えば 仰角や距離 などの情報も取得できます。
過去にご紹介したインタラクティブミュージックの「縦の遷移」 も、
UE.Attenuation インターフェースの Distance ノードを使えば MetaSounds だけで実装を完結させることが可能です。
一歩先の音響表現を作りたいときは、ぜひ試してみてください!