CriWare Unreal Engine
Plug-ins for CriWare solutions.
読み取り中…
検索中…
一致する文字列を見つけられません
ADX チュートリアル No.20 : 広範囲のエリアをカバーする距離減衰の作成方法

川などの環境音を実装する際に、いざサウンドの配置を行うとなった場合は川のいたるところに音源を置くことになることが多いです。
本記事では、広範囲にわたる領域においてできるだけ少ない音源で環境音を実装するための機能を紹介していきます。
広範囲にわたる領域を少ない音源でカバーする方法として、CRIWARE UnrealEngine PluginではMultiPositionComponentを用意しています。
MultiPositionComponentは一つの音源に対して複数座標を指定することができるものとなっており、これにより少ない音数で広範囲をカバーする環境音の実装が容易になります。

チュートリアルとして、複数の場所から波の音を鳴らす手順を以下に示します。

データの準備

用意されたacf/acb/awbファイルをインポートする

今回のチュートリアルで使用する音源を以下のAtomCraftProjectをビルドして生成されたものを使用します。
cri/Samples/CriWareShowroom/AtomCraftProject/CriWareShowRoom/CriWareShowRoom.atmcproject

ビルドした際の生成物は以下に格納されています。
cri/Samples/CriWareShowroom/AtomCraftProject/CriWareShowRoom/PC

フォルダ内の以下のファイルをコンテンツブラウザにドラッグ&ドロップでインポートしてください。

  • CriWareShowRoom.acf
  • CueSheet_Effects.acb
  • CueSheet_Effects_awb.awb


音源の配置と設定

AtomMultiPositionが付与されたアクタを配置する

川などの領域に対して広範囲でサウンドを聞こえるようにする場合でも、まず始めには音源をレベル上に配置する必要があります。
通常であればAtomComponentをアクタなどに付与して、再生したいサウンドを指定することで環境音などの再生を行います。

しかし、指定領域でサウンドを聞こえるようにするという実装においてはAtomComponentの機能を拡張した AtomMultiPositionComponent をアクタなどに付与して、再生したいサウンドを指定する必要があります。

AtomMultiPositionComponentの特徴は以下が挙げられます。

  • 同期ずれが起きない。
  • 複数箇所で音は再生されるが内部的には1音しかならないため、ボイス数の節約になる。(メモリ効率が良い)

添付の図はアクタがわかりやすいようにSphereを置いており、このアクタに対してAtomMultiPositionComponentを追加します。


AtomMultiPositionComponentは今回SphereアクタのDetailから追加しています。


AtomMultiPositionComponentの設定項目にある以下の項目を設定します。

  • Sound -> SoundAssetおよびSound(Cue)を設定します。
注意
ここで使用するSound(Cue)はVirtualizationModeがNormalである必要があります。
VirtualizationModeはAtomCraft上の設定および、UnrealEditor上のCueの詳細ウィンドウのOverrideVirtualizationModeの設定から変更できます。


  • Attenuation->OverrideAttenuationをtrueに設定します。


※AttenuationSettingsに任意のAtomAttenuationアセットを設定することで実装することも可能です。


Attenuationの詳細な設定についてはAtomModulationの概要をご覧ください。

ここまでの操作では、サウンドは指定したアクタの場所からのみ聞こえる状態のままとなっています。
以下から、サウンドの視聴領域を拡張する手順を紹介していきます。

音の聞こえる範囲を拡張する

実際に音を鳴らす場所を指定する方法は3つあります。

  1. 座標を用いる
  2. アクタを用いる

座標を用いる方法

SphereアクタのAtomMultiPositionComponentの設定項目にあるMultiPosition -> SourcePositions 項目から、音を鳴らしたい場所に座標を設定します。
ここでは、アクタを用いて音を鳴らす場所を決める方法と同じ14箇所の座標を設定しました。


以上が、座標を用いた音を鳴らす場所を決める方法です。
このように、Attenuationが設定された状態の音がすべての設定された座標に適用されます。


アクタを用いる方法

音を鳴らしたい場所に任意のアクタを配置します。ここでは14個のCubeアクタを配置しました。


次に、SphereアクタのAtomMultiPositionComponentの設定項目にあるMultiPosition -> SourceActorsに先ほど配置したCubeアクタをセットします。


以上が、アクタを用いた音を鳴らす場所を決める方法です。
このように、Attenuationが設定された状態の音がすべてのCubeに適用されます。


再生位置にオフセットを持たせる

アクタを用いる方法と組み合わせて使用できる手法です。前項「アクタを用いる方法」の手順を行ってから実装をおこなってください。

SceneComponentを用いた実装は、任意のアクタからの相対位置で音源を決められることや、複数の音源をグループ化させることになり親アクタに追従させて位置を変更できるといった特徴があげられます。
これにより、例えば、松明のようなアクタの中心と音を鳴らしたい場所が異なるような場面や、リアルな歓声などの環境音の実装が容易になります。
以下の場合、松明のアクタは木の中心にアクタのポジションが設定されていますが、火からパチパチといった音を鳴らしたい場合に有効です。

SceneComponentを用いて音源位置を設定すると以下のように表現できます。

BlueprintClassのSceneComponentを使用します。
SourceActorで指定したアクタ内の、以降で説明する手法で指定したSceneComponentのみを音源位置として設定することができます。

まず、コンテンツブラウザを右クリックしてBlueprintClassを作成します。


次に、Sphereの右隣のCubeのDetailsで先ほど作成したBlueprintClassをアタッチします。


最後に、SphereアクタのAtomMultiPositionComponentの設定項目にあるMultiPosition -> SourceComponentClass項目に、先ほど作成したBlueprintClassをセットします。


以上が、SceneComponentを用いた適用方法です。
このように、Sphereアクタで設定したSceneComponentの座標に適用されます。

また、Cubeアクタに設定されたSceneComponentの座標を移動させることで様々な表現に用いることが可能です。



【注意】 SceneComponentを用いる場合、音を鳴らしたい全てのアクタにSceneComponentがアタッチされている必要があるため注意が必要です。
例えば、すべてのCubeアクタがSourceActorにセットされている際は以下のようになります。

  • 両端のCubeアクタにのみSceneComponentがアタッチされている場合

  • すべてのCubeアクタにSceneComponentがアタッチされている場合

音を聴いてみる

ゲームを開始して、音を聴いてみましょう。
まるで水面側から音が聞こえるように感じることができます。

Tips: Sphereから音を鳴らさない

UseComponentPositionAsSource項目を設定することで、自身のアクタから音を再生するかを設定することができます。
AtomMultiPositionComponentの設定項目にあるMultiPosition -> UseComponentPositionAsSource項目を設定することで、AtomMultiPositionComponentが付与されたアクタの座標から音を再生するかを選択できます。

デフォルトではtrueになっており、Sphereから音が再生されます。