はじめに
アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、家の中や洞窟の中など、閉じた場所で聞こえてくる音をデザインする記事の続きで、さらに詳細な空間音響を設定する方法についてです。
前編はこちら: ADX2+UE4で、屋内の音響をデザインする(前編)
https://qiita.com/SigRem/items/86d4a218d6be3240df3d
当記事ではUE4.26.1を使用します。基本的にブループリントのみでの実装を想定しています。
ADX2はインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx2-le/
記事執筆時点のADX2 for UE4のSDKバージョンはv1_29です。
前提
ADX2 for UE4の導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46
3DトランシーバーのRear
前編記事で解説したAtomTransceiverBoxですが、Foward Regionの他にRear Regionと呼ばれる3Dリージョンを持ちます。
これらを設定することで、プレイヤーやサウンドがAtomTransceiverBoxを通り抜けた際に新たにリージョンを付与することができます。
まずはレベル上に置いてあるAtomTransceiverBoxを選択し、「Rear Region」にForward Regionとは異なる3d Regionを割り当てます。
AtomTransceiverBoxを選択した状態で「Blueprints」→「Open Level Blueprint」でレベルブループリントのエディタを開きます。
イベントグラフ上の空いている場所で右クリックし、AtomTransceiverBoxのリファレンスノードを作成します。
リファレンスノードから線を伸ばし、Set Listening Actorノードを配置します。
Set Listening ActorノードにはGet Player Characterを繋ぎ、プレイヤーキャラクターを割り当てます。
Event BeginPlayノードをつなぎ、ゲーム開始時に処理が走るようにします。
リスナーの3dリージョンが変化したことを確認するために、画面上にメッセージが出るようにします。
Get Listener Regionでプレイヤーの3dリージョンが取得できます。
ゲームを再生して通路を通り抜けてみると、通り抜けた方向によりプレイヤーの3dリージョンが変化するのが分かります。
3DトランシーバーによるAisacコントロール
3Dトランシーバーによって集積されたサウンドに、一括してAisacコントロールを行い音を変化させることも可能です。
プレイヤーとの角度による聞こえ方を制御するなどの用途があります。
リスナーと音源の相対位置によるAisacコントロール
3Dトランシーバー以外にも音響を操作する手法はいろいろあります。
プレイヤーと音源の間の距離や、音を聞いている方向によってAisacコントロールをかけ、サウンドを変化させることが可能です。
複数の音を能動的に聴き分けるようなゲームデザインや、指向性を持つ音の表現に使うことができるでしょう。
試しに**「正面からはクリアに聞こえ、音から視線を外すとよく聞こえなくなる」**サウンドを作ってみます。
AtomCraftを開き、任意のキューのタイムラインの空欄で右クリックし「新規オブジェクト」→「AISACの作成」を選択します。
Aisacコントロールが新規に作られます。グラフタイプは「バンドパス - Cof高域」を選びます。
これにより、高域の音がカットされくぐもった印象に変化させることができます。
グラフが開くので、リストから「バンドパス - Cof高域」をクリックします。
紫色のグラフにポイントをクリックして追加し、山のような形にします。
これは正面から音源に向いた際の角度が「0.5」になるためです。
ポイントを右クリックし、「カーブタイプ」→「高速変化」を選択しグラフの形を整えます。
他のポイントも「高速変化」に変え、コントロールポイントを操作して両方をなだらかな形にします。
この状態で再生し、Aisacコントロールのスライダーを動かして音が変化することを確認します。
キューのインスペクターでは「リスナー基準方位角AISACコントロール」に作成したAISACを設定します。
セッションウィンドウで機能のテストができます。
3Dポジショニングの画面上で音源を動かしてみましょう。前方に音源があるときはクリアに聞こえますが……
後方に移動すると音がくぐもって聞こえづらくなります。
ビルドしてUE4に持ってくると、そのまま同じように動作します。
Attenuationの設定
設置したAtom CueやAtom ComponentなどのAttenuation(音の減衰)設定を個別で変更し、効果的な環境音にするのも有効です。
また、Attenuation(Submix)で送信先サブミックスを設定すると、UE4標準のミックス機能と連携することもできます。
オクルージョン(遮蔽物)の設定により、リスナーから見て音源が隠れている場合に音を小さくしたり、くぐもった音にしたりといった機能もあります。
過去記事: ADX2 for UE4で、遠距離や遮蔽物に隠れた音を減衰させる(オクルージョン)
https://qiita.com/SigRem/items/4deaa0bc4b04290ce1f1
先ほどの「リスナー基準方位角AISACコントロール」などと併用する場合、該当機能を有効にしてください。
たとえば方位角であれば、「Enable Spatialization」です。
この状態で下の「Attenuation(Occulusion)」を設定すれば、オクルージョン減衰とAisacコントロールを併用できます。
紹介したこれらのテクニックは組み合わせたり、ADX2 for UE4の他の機能と組み合わせることもできます。
うまく使いこなして、ゲーム中の屋内サウンドに説得感をもたせてみるといいでしょう。