はじめに
ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではVRプロジェクトをセットアップし、「壁の向こうから聞こえる環境音」、「部屋の内と外で聞こえ方の変わるBGM」など、VR上での空間を演出するサウンド表現を紹介します。
当記事ではUE5.6 及び 「ADX LE UE SDK(2.04.02)」を使用します。
また、基本的にブループリントのみでの実装を行います。
ADX for UEはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/
前提
「ADX for UE LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)
ADX for UEの導入で、一歩上のサウンド表現を(実践編)
実装
AtomCraftでサウンドを用意する
サウンドオーサリングツール「AtomCraft」で、サウンドを用意します。
環境音のサンプルである「SE_River_Loop」、BGMのサンプルである「BGM_A_Loop」をインポートしました。
どちらもループして使うので、マテリアルを選択した状態でインスペクターにて、ループ情報を設定します。
それぞれのキューを作成します。キューシートを右クリックし、「新規オブジェクト」→「キュー『ポリフォニック』の作成」を選択します。
どちらのキューも3D空間に設置して扱うので、頭の方向や位置により聞こえ方が変わるよう設定します。
キューを選択し、インスペクターにてパンタイプから「3Dポジショニング」を選びます。
ここまでできたら、ひとまずキューシートをビルドしましょう。
UEでサウンドを再生する
キューシートをインポートします。もし既にアセットがある場合、右クリックして「Reimport」を選択して再インポートします。
正常に再生できることをテストします。
キューシートからドラッグ&ドロップして、レベル上に配置します。
ゲームを再生し、聞こえ方を確認します。
遮蔽されたサウンドを聞こえにくくする
障害物で遮蔽されたサウンドを聞こえにくくすることで、音の説得力や臨場感を上げることができます。
初期位置からキューを移動させ、壁に隠れる位置へと持っていきます。
この状態で再生すると、壁の向こうから聞こえてくる音にもかかわらず、音が壁を貫通してくるようにクリアに聞こえてしまいます。
キューのAttenuation(減衰)を主導で設定することでこれを解決します。
Detailsパネルで「Override Attenuation」のチェックを入れ、主導での減衰設定を有効にします。
Attenuation設定内部の「Attenuation(Occlusion)」が遮蔽されたサウンドの設定になります。
「Enable Occlusion」にチェックを入れることで機能が有効になります。
試しに「Occlusion Low Pass Filter Frequency」(遮蔽サウンドのローパスフィルタの閾値)の数値を変更し、試してみます。「500.0」程度にするとわかりやすいでしょう。
これで遮蔽された音を聞こえにくくすることができます。
試しに壁際で頭を角から出したりし、VR特有の聞こえ方の変化を試してみましょう。
部屋の外と中で音楽の聞こえ方を変える
部屋の内、外で再生中のBGMの聞こえ方を変えてみましょう。
例えば部屋の中では大音量で音楽が聞こえ、出口から出ると一気に音がくぐもって聞こえるようになります。
先ほどの減衰設定でも似た効果が得られますが、こちらは遮蔽物に関わらず、空間の範囲を指定して処理を行うものです。距離に応じた無段階の変化も起こせます。
ゲーム内の「クラブ」のようなところとその傍らの部屋を移動する場合などのシチュエーションで使えそうです。
部屋の一番奥にBGMのキューを置きます。
BGMのキューを選択し、Detailsパネルにて「Low Pass Filter Frequency」「High Pass Filter Frequency」のチェックボックスにチェックを入れます。
テストとして、フィルタの数値を大きく変化させてゲームを再生します。
BGMが大きくくぐもった状態で聞こえるようになりました。
聞こえ方を動的に変更する処理を組みます。
まずは範囲を指定する「Trigger Box」を配置します。
「Trigger Box」を部屋を覆うくらいの大きさにして移動させます。
これを選択した状態で、レベルブループリントを開きます。
「Add On Actor Begin Overlap」「Add On Actor End Overlap」イベントを配置します。
それぞれ、部屋の中に入ったとき、部屋の外に出たときのイベントとなります。
デフォルトではVRテンプレートのプレイヤーBPに、Trigger Boxが反応するコリジョンがありませんので、手動で追加する必要があります。
「VRTemplate」フォルダにある「VRPawn」をダブルクリックして開きます。
適当なメッシュを追加します。ここでは例として「Sphere」コンポーネントを追加します。
デフォルトのSphereコンポーネントはかなり大きいので、邪魔にならないくらいのサイズに調整します。
そのままでは当たり判定も邪魔になるので、Collision Presetsを「OverlapAll」にし、オブジェクトにはぶつからないがトリガーには判定されるように設定します。
「Hidden in Game」にチェックを入れ、ゲーム中には表示されないようにします。
プレイヤーがトリガーに進入した際、退出した際にフィルタを操作します。
Set Low Pass Filter Frequencyノードで数値を指定すると、音のくぐもり方が変わります。
これで部屋の中と外を行き来すると、部屋の奥から聞こえてくる音楽が大きく変わるようになりました。
VR上では壁や空間を使った音の変化を作ることで、音の実在感を強くすることができます。
ぜひサウンド面からも空間づくりにアプローチし、プレイヤーに体験を提供してみてください。