79.減衰(Attenuation)とは?距離によって音量を変化させてみよう
減衰(Attenuation)とは?
減衰とは音源によって音量が変化する事を指します。つまり、音源から離れていくと音量が小さくなっていく現象が"減衰"です。
https://scrapbox.io/files/65cc4aa8d460660026706cf2.jpg
例えばFPSゲームでは距離によって銃声がどこから聞こえたのか判別する必要があるため、音に"減衰"を設定しなければなりません。デフォルトの音には減衰はセットされていません。つまりその場合はレベル内のどこで音が再生されようが音量は一定となります。
①音に減衰を設定してみよう|実践
まずはレベルに追加した音に減衰を設定してみます。
今回もStarterContentを含むサードパーソンのプロジェクトを使用していきます。(前回のプロジェクトのままでも構いませんがレベルに配置したサウンドは削除しておいてください)
https://scrapbox.io/files/65cdf03c845a35002437d811.jpg
StarterContent > Audio > Starter_Music01のサウンドウェーブをどこでも良いので配置します。
https://scrapbox.io/files/65cdf05091052e002523a363.jpg
そのままプレイしてみましょう。プレイヤーの位置を変更してみても、Starter_Music01は減衰を設定していない2Dサウンドとなっているので左右対称に音量は一定で聞こえます。
https://youtu.be/t8TeN23PWkU
🐱ではここから減衰を設定していきましょう。
追加したStarter_Music01を選択した状態で、詳細を確認するとアテニュエーション(Attenuation)という設定から減衰を設定する事ができます。
https://scrapbox.io/files/65cdf0c42419d900247b1905.jpg
アテニュエーション > OverrideAttenuationにチェックを入れます。
https://scrapbox.io/files/65cdf0cf539cdc0025816c52.jpg
OverrideAttenuationとは?
OverrideAttenuationとは、アクタ毎に減衰の設定ができる項目になります。チェックをいれると減衰がこの音に追加されます。これで減衰が有効になって、この音の音量が距離によって変更するようになりました。同時に音の範囲を示す球体の枠が見えるようになりました↓
https://scrapbox.io/files/65cdf3502d037e00257b7899.jpg
これが減衰の範囲を示しており、音の聞こえる範囲になります。
🐱つまりこれで音に減衰を設定して、音の聞こえる範囲と距離による音量の変化が追加された訳です。
少し減衰の範囲を小さくします。
減衰(ボリューム)から減衰最短距離を300,フォールオフ距離を800にします。
https://scrapbox.io/files/65cdf39ce9f5100024d6e291.jpg
減衰最短距離とフォールオフ距離とは?
減衰最短距離とフォールオフ距離は音の聞こえる範囲を示しています。
減衰最短距離はサウンドの内側の範囲の事を指し、フォールオフ距離は外側の範囲です。
https://scrapbox.io/files/65cdf3e499944800245eb56e.jpg
減衰最短距離(内側の球体)の中では音量は一定で、フォールオフ距離(外側の球体)は減衰最短距離外から徐々に音量が小さくなっていきます。フォールオフ距離の外にいくと完全に音は聞こえなくなります。
https://scrapbox.io/files/65cdf4005443a80026829964.jpg
ではこの状態で一旦プレイしてみましょう。
https://scrapbox.io/files/65cdf4250eb32f002473d287.jpg
プレイしてみて音源に近づくと音量が大きくなっていき、離れると音量は小さくなっていきます。
https://youtu.be/_732lJDKJKY
これが減衰です。また、減衰では同時に左右のスピーカーから異なる音量で音が流れるようになります。つまり音源が右にある場合は右から聞こえるといった感じです。
😺減衰 = 距離による音量の変化で、今回の様に設定すると減衰は有効になります。基本的にゲームのステージ上で音を鳴らすには減衰は必須です。例えば銃声だったり、火の音だったり、攻撃した時の音だったりは減衰はもちろん必要となります。一方BGMやUIのボタン音には減衰は必要ありません。
では次に減衰のアセットについて見ていきましょう。
減衰のアセット(サウンド減衰)とは?
減衰のアセット(サウンド減衰)とは減衰の設定となるアセットです。
https://scrapbox.io/files/65cdf46a0d7c86002426759e.jpg
先程紹介した減衰の設定であるOverrideAttenuationはアクタ毎に減衰を設定できる項目でしたが、この減衰のアセットを使用する事で減衰の設定を共有,使い回しする事ができます。
🐱例えば様々な銃声を実装する時に、毎回音の減衰を設定する事は面倒ですよね。そんな時に減衰のアセットを使用する事で一度作った減衰の設定を使い回す事ができます。実際にやってみましょう。
②減衰のアセットを作成してみよう|実践
簡単に減衰のアセットを使っていきます。
Audioフォルダを作成 > サウンド > サウンド減衰を選択して名前をBGM_SoundAttenuationにします。
https://scrapbox.io/files/65cdf4acd5cfbc002546d5f3.jpg
BGM_SoundAttenuationを開きます。先ほど設置した音の減衰設定項目と同じものが並んでいます↓
https://scrapbox.io/files/65cdf4e25ceeb400236bb188.jpg
減衰最短距離やフォールオフ距離もあり、400,3600となっている事が確認できます。
一旦このまま使用してみましょう。
先程レベルに設置したStarter_Music01のOverideAttenuationのチェックを外します。
https://scrapbox.io/files/65cdf4ee3dd1f30024745157.jpg
これでこの音は現在減衰がセットされていない状態になっています。
作成したBGM_SoundAttenuationをセットします。
https://scrapbox.io/files/65cdf4fdc2b21b002315fb65.jpg
プレイしてみると減衰がついたBGMが流れる事が確認できます。
https://scrapbox.io/files/65cdf5040b539d0025bf0441.jpg
このように減衰はアセットとして作成して音にセットして使用する事も可能です。なので述べたように銃声を複数作ったとして減衰の距離などは全部同じで良い時などはアセットとして作成して共用すると楽に減衰を設定する事ができます。
減衰の主な設定項目
では、減衰の設定を見ていきましょう。(なおOverrideAttenuationにチェックを入れる減衰設定でもアセット自体の設定もどちらでも設定項目は同じになっています)
減衰の設定において一番重要なのは一番上の項目である減衰(ボリューム)になります。
https://scrapbox.io/files/65cdf538efc8fe00240f8e59.jpg
🐱重要な項目について解説していきます。
①減衰関数
減衰関数はフォールオフ距離の範囲内でどのように音の変化をさせるのかという設定です。デフォルトでLinearになっており、クリックすると変更する事ができます。
https://scrapbox.io/files/65cdf56fc296a900255b9493.jpg
例えばLinearだと、以下のように距離が離れるにつれて一定の変化量で音が小さくなっていきます。縦軸が音量で、横軸が距離です。
https://scrapbox.io/files/65cdf5fb85da9a0024a768a3.png
他にもLogarithmicなどに設定すると、近い程音量の変化は大きく、距離が離れるほど音量の変化が小さくなります。つまり、先ほどのLinearと違って一定の距離を離れると急激に音が小さくなります。距離が遠くなると音は小さいまま変化はあまりしなくなります。
https://scrapbox.io/files/65cdf609d29c9c0025bef583.png
減衰関数については公式のページ「サウンドの減衰 / UnrealEngine Documentationより」で詳しく紹介されています。基本的にはLinearのままで問題ないでしょう。
②減衰形状
減衰形状は減衰の範囲の形です。例えばBoxに選択するとBox形状の減衰になります。
https://scrapbox.io/files/65cdf63c964b910024eb0ab6.jpg
https://scrapbox.io/files/65cdf64befc8fe00240f989e.jpg
これも基本的にはSphereで良いでしょう。例えば立方体のような形をした部屋の中だけ音楽を聞こえるようにしたいという場合はBoxにします。
③減衰(空間化)
減衰の空間化(Attenuation Spatialization)の設定では、主にパンニングの設定を行う事ができます。パンニングは音を左右で聞き分けられる状態の事です。
https://scrapbox.io/files/65cdf660e385ca002654dce1.jpg
例えば一番初めの空間化の有効化をチェックを入れているとパンニングは有効になり、外すとパンニングは無効になります。下の動画でパンニングの有効無効の違いが確認できます。空間化の有効化が有効の状態だと最初音は右から聞こえ、音源を過ぎていくと左から聞こえるようになります。無効の状態だと、音は左右対称に聞こえます。
https://youtu.be/eBPy_nGUmvc
この減衰の空間化も基本は有効のままで構いません。
④減衰(オクルージョン)]
減衰のオクルージョンとは、音源と聞く位置の間に障害物がある場合、音をこもらせる設定の事です。ここの設定で、例えば音源とプレイヤーの間にオブジェクト(壁)がある時に音のこもり具合と音量などを変化させる事ができます。
https://scrapbox.io/files/65cdf6729b59b10024e72455.jpg
table:主な設定項目
オクルージョンの有効化 オクルージョンを有効化できます。
オクルージョンローパスフィルター周波数 値が小さければ小さいほど、壁越しの際にこもった音になります。
オクルージョンボリューム減衰 壁があるときの音量の倍率を指定します。
オクルージョン補完時間 通常の音から壁越しのこもった音に完全に変化するまでの時間,
または壁越しのこもった音から通常の音へ完全に変化するまでの時間です。
以下の動画ではオクルージョンを有効にした音の隣に壁を配置して試しています↓壁の向こう側だと音がこもって聞こえますが、音側まで出ると音はクリアに聞こえます。
https://youtu.be/h1tr3Hg93Ig
音をこもらせたい時に減衰のオクルージョンは設定していきましょう。減衰の主な設定項目はこれで以上になります。
そもそも音を聞く「耳」にあたるものはどこに設定してある?
音を聞く耳にあたる位置はそもそもどこなのでしょうか?キャラクター?もしくはカメラが耳なのでしょうか?サードパーソンテンプレートの場合はカメラの位置が「耳」にあたります。Audio listenerといってどこに音を聞く位置を設定するのかブループリントから決める事が可能です。基本的にカメラにそのオーディオリスナー(Audio listener)を設定するのが一般的なので、そのままで問題ないでしょう。
🐱以上減衰について解説しました。減衰はレベル上の音を表現するのに必須の音の設定になります。後のページでも減衰を使っていくので引き続き減衰について学んでいきましょう!今回は以上です。お疲れ様でした。