はじめに
ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではボードゲーム上で再生されるサウンドを、定位を持たせた状態で再生し、音の方向や距離などが分かることで臨場感を演出する方法について解説します。
ツール側での3D音響設定やUE側で音響や減衰設定をする方法、またブループリントから減衰設定を上書きし、ランタイムで変化させる方法なども紹介します。
やること
- ボード上で定位が分かる設定を行う
- ボード上で定位が分かる設定をUEで行う
- 定位の設定を後付で上書きする
- 定位を強調するため、音声位置を調整する
また、記事中に「blueprintue」を使用したBPグラフ共有を載せています。コピペすることで大体の実装ができますので、よろしければご活用ください。
当記事ではUE5.7 及び 「ADX LE UE SDK(2.05.01)」を使用します。
また、基本的にブループリントのみでの実装を行います。
ADX for UEはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/
前提
「ADX for UE LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)
ADX for UEの導入で、一歩上のサウンド表現を(実践編)
減衰設定を行う
ボード上で定位が分かる設定を行う
こちらはサウンドオーサリングツール「AtomCraft」で設定する方法です。UE単体でも減衰設定が行えますので、やりやすい方で設定していきましょう。
キューを選択します。BGMなどはこの設定を行わず、立体的な音響を扱いたいキューにのみこの操作を行いましょう。
インスペクターにて、パンタイプに「3Dポジショニング」を選択します。

インスペクター下部の「3Dポジショニング」ボタンを押します。

下部にて音響の設定が変更できます。
AtomCraftで設定できる特有の要素として、「ドップラー係数」があります。
こちらは違いが分かりやすいので、1度試しに設定してみると面白いです。
また、こちらで距離や角度による減衰も変更可能です。
「有効角度」ではカメラが相対したときの角度によって聞こえなくなる、などの演出が可能です。
「距離減衰」はUE側で調整した方が分かりやすいことが多いので、ここではデフォルトのままでもいいかもしれません。

ここまでできたらキューシートをビルドします。
UE5のエディタに移行します。
キューシート、AtomConfigアセットを右クリックし、それぞれ「Reimport」で再インポートします。
アセットが上書きされるはずです。

2つのアセットを再インポートすると、設定した音響が反映されます。
コンソールコマンドにより、距離などを監視可能です。
「ドップラー係数」を大きく設定している場合、カメラを動かしながら音を聞くとドップラー効果がかかっているのが分かるかもしれません。

「atom.3dVisualize.Attenuation 1」を入力するとこのように表示されます。

ボード上で定位が分かる設定をUEで行う
UE5側でも減衰や3D音響設定が可能です。
こちらでは、「Atom Attenuation」アセットを使い、減衰設定をアセット化して使い回すことが可能です。
これにより、カード系、コンポーネント系などの用途別でアセットを分けて使用できて便利です。
この設定はAtomCraftでも設定可能です。「Atom Attenuation」アセットはAtomCraftの設定を上書きすることに注意してください。
UE上でイテレーションを繰り返したい場合に「Atom Attenuation」アセットが有用です。
減衰設定のアセットを作ってみましょう。
コンテンツドロワーで右クリックし、「ADX Atom」→「Atom Attenuation」を選択します。

アセットが作られます。分かりやすいよう名前をつけます。

アセットをダブルクリックして開きます。
カードゲームやボードゲームでは通常盤上で展開が進むため、距離よりは方向によるサウンドの違いを出すのが効果的です。
オレンジの枠で囲った「Attenuation(Spatialization)」が有効です。
こちらは定位による空間的な聞こえ方の違いを演出できます。

設定した減衰設定を適用してみましょう。
例えばSpawn Sound at Locationノードでは、下部に「Attenuation Settings」の項目があります。
ここに作成した減衰設定のアセットを適用してみましょう。

ゲームを再生しカメラを動かすと、カメラの位置や方向によって聞こえ方が変化するはずです。

「3D Stereo Spread」を大きくすると、音を左右に振ったときの聞こえ方が大きく変わります。

また、「Non Spatialized Radius Start」「Non Spatialized Radius End」では減衰を無効にする距離が設定できます。
カメラ中央付近で動いたカードの音が必要以上に左右に振れて聞こえると違和感につながりますので、ボードのスケールに応じた大きさにしておくとこういった現象を避けられます。

定位の設定を後付で上書きする
アセットなどで減衰を設定したあと、ランタイムで使用する減衰設定を変更したり、個別の設定を変化させることも可能です。
また、「重要なカードのみ減衰させず、プレイヤーに動作を気づかせる」などの用途にも使えます。
詳細な減衰設定を後付けで変更するにはSet Attenuation Overridesノードを使用します。

Set Attenuation Overridesノードのインプットピンから線を伸ばし、Make Atom Attenuation Settingsノードを配置します。

減衰設定を指定できるノードが現れます。
こちらは拡張して個別の項目を表示できますが……

項目がとても多く、なかなか大変な見た目になってしまいます。
このままでは使いづらいですね……。

そこで、Detailsパネルの最下部にある「Hide Unconnected Pins」で未接続ピンをすべて収納します。

必要な設定だけチェックをつけることで、視認性を大幅に改善可能です。
使用するものだけ選んでおきましょう。
こちらは個別設定が必要なので、1点もののサウンドで使用するといいでしょう。

減衰設定を使いまわしたい場合、先ほどのようにAtom Attenuationアセットを用意するのがベストです。
Set Attenuation Settingsノードではアセットを指定するだけで減衰設定の変更が完了します。
大体のケースではこちらを使うのがいいでしょう。

定位を強調するため、音声位置を調整する
別のアプローチとして、サウンドをスポーンさせる位置をずらし、オーバーな定位感を与える方法もあります。
こちらはシンプルに、実際のカードの位置から補正をかけた座標にSpawn Sound at Locationノードでサウンドを位置させるだけです。
具体的にはカード位置とプレイヤーのカメラの位置の差分をとり、それに係数をかけます。
Get Player Camera Managerでカメラが取得できます。

カード位置とカメラ位置の差分を算出します。

そこに係数をかけます。Float型の変数「LocationRule」を新規作成して接続します。
「LocationRule」の値を「1.5」くらいにしておくと、いい感じに音がばらけます。

この座標を本来のカード座標に足すことで、意図的に座標をずらした場所が取得できました。
変数「LocationRule」を大きくするほど、大げさにずれた定位が実現できます。

この処理のグラフはこちらから参照できます。