LoginSignup
2
1

ADX + UE5で、特定の広さの空間を満たす環境音を実装する(長い川や駆動音など)

Last updated at Posted at 2021-07-04

はじめに

ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではアンリアルエンジン5(以下UE5)とサウンドミドルウェア「ADX for UE」を連携させ、一定の領域を満たし、さらに外部にも影響を与える環境音を再生します。

たとえば川のせせらぎを考えてみましょう。
川から一定の距離にプレイヤーがいた場合は常に聞こえていてほしい音です。しかし、川という広がりを持つ以上音源の長さも川に沿って存在しなければなりません。
音源を川に沿ってひとつひとつ配置していくのも手間ですし、重複して聞こえてしまうという問題もあります。
そこで、ADXの「AreaSoundVolume」機能の出番です。

AreaSoundVolumeは一定の空間の中と外で音の聞こえ方を変化させる機能です。
直近のアップデートでAreaSoundVolumeに「Portal」機能が追加され、空間上に大きさを持つ音源を再現することが可能になりました。
これらはADX for UE旧バージョンにおける、「AtomSoundVolume」機能にあたります。

当記事ではUE5.3+「ADX LE UE SDK(2.01.00)」を使用します。
また、基本的にブループリントのみでの実装を行います。
ADX for UEはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/

前提

「ADX for UE LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX for UEの導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

実装

AtomCraftでサウンドを用意する

UE5で再生するためのサウンド、Atom CueをAtomCraftにてビルドします。
既に必要なファイル(acb, acfファイル)を用意できている場合は次の項から参照してください。

マテリアルのインポート

AtomCraftのマテリアルツリーに素材ファイルをインポートします。
A01.png
今回は環境音となる水や森の音を用意しました。

環境音は単発で鳴るわけではなく、ずっとループして欲しいものです。
各マテリアルを選択した状態で、インスペクターにて「ループタイプ」を「ループ」に設定します。
A02.png

キューの作成

新規にキューを作成します。
ワークユニットツリーで右クリックし、「新規オブジェクト」→「キュー『ポリフォニック』の作成」を選択します。
A03.png
作成したキューに対して、タイムライン上に再生したいマテリアルをドラッグアンドドロップして配置します。
A04.png
すべてのマテリアルに対して、対応するキューを作りました。
A05.png

3Dサウンドの設定

環境音が3D空間上で減衰を受けるよう設定します。
キューを選択した状態で、インスペクターにて「パンのタイプ」を「3Dポジショニング」に設定します。
A06.png
3Dサウンドになったことを確認するには、セッションウィンドウを使います。
ツールバーの「表示」→「セッションウィンドウ」を選択します。
A07.png
セッションウィンドウが起動します。確認したいキューをセッションウィンドウにドラッグアンドドロップします。
A08.png
「3Dポジショニング」ボタンを押すと、3Dサウンドの確認機能が使用できます。
「プレーヤーに3Dオブジェクトをアタッチ」にチェックを入れておきます。
A09.png
緑色の領域をドラッグすると音源が移動し、サウンドの再生位置が動いた際の様子が確認できます。
A10.png

少し音の動き方が過剰に感じるので修正します。
キューを選択した状態でインスペクターの「3Dポジショニング」を選択します。
A11.png
下にスクロールし、「距離減衰」の「最小」を少しだけ上げておきます。
A12.png
この状態をセッションウィンドウで確認すると、音の動きが少しマイルドになっているはずです。

キューシートのビルド

設定がうまくいったらキューシートをビルドします。
A13.png
A14.png
ここまでできたらUE5に移行します。

UE5で環境音を実装する

今回の実装例として、川、池、焚き火があるマップを用意しました。

A00_A.png
A00_B.png
A00_C.png

使用アセット:
「Dreamscape: Stylized Environment Meadows - Stylized Nature Open World Fantasy」
https://www.unrealengine.com/marketplace/ja/product/dreamscape-nature-meadows

キューシートのインポート

UE5のコンテンツブラウザ(コンテンツドロワー)にビルドしたacfファイル、acbファイルをドラッグアンドドロップしてインポートします。

acfファイルインポートの際に出てくるダイアログでは「Yes」を選択します。
これにより、プロジェクトの設定が自動的に完了します。
A01.png

コンテンツブラザにアセットが追加されます。
A02.png

キューシートをダブルクリックして開き、キューが再生できることを確認します。
A03.png

AtomGameplayVolumeを作成

音を持つエリアを示すAtomGameplayVolumeを作成します。

アクターの配置ボタンから、「Place Actors Panel」を選択します。
B01.png

「Place Actors」パネルが現れます。
「Geometry」タブにある「Box」をレベル上にドラッグアンドドロップして配置します。
B02.png
B03.png

「Selection Mode」から「Brush Editing」モードに切り替えます。
B04.png

頂点や面の移動、Extrude(押し出し)などを使い、Box Brushを川の形に沿って変形させていきます。
B05.png

川と大体同じ領域をカバーできるよう変形させます。画像では分かりやすいようにマテリアルを変更していますが、必須ではありません。
B06.png

変形が完了したら後々混乱しないよう、Selection Modeにモードを戻しておきます。
B06B.png

変形させた「Box_Brush」を選択し、Detailsパネルの「Convert Actor」をクリックします。これはBSPブラシを形状を維持したままActorにコンバートする機能です。
B07.png
「AtomGameplayVolume」を選択します。
B08.png

BSPブラシがAtomGameplayVolumeに変換されました。
B09.png

名前がデフォルトのブラシ名である「Box_Brush」になっているので、分かりやすいようリネームするといいでしょう。
B10.png

AtomGameplayVolumeの設定

作成したAtomGameplayVolumeから環境音をが聞こえるよう設定していきます。

キューシートを開き、川の環境音をレベル上の「AtomGameplayVolume」内に配置します。
C01.png
この状態でゲームをプレイすると……音源から離れると川の音は減衰してしまいます。
C02.png

まずはキューを選択し、Detailsパネルの「Override Attenuation」にチェックを入れます。
これで距離減衰が個別に設定できるようになります。
C03.png
「Inner Radius」を川の幅に合うくらいに調節します。
C04.png
「AtomGameplayVolume」を選択し、Datailsパネルから「+Add」ボタンを押してコンポーネントを追加します。
C05.png
今回の実装の要となる「Portal」コンポーネントを選択します。
C06.png
「AtomGameplayVolume」に「Portal」コンポーネントが追加されました。
C07.png
もうひと手間必要です。コンテンツブラウザ(コンテンツドロワー)の任意の場所で右クリックし、「ADX Atom」→「Atom Sound Class」を追加します。
C08.png
「Atom Sound Class」が作られます。環境音のためのクラスを想定し、「ASC_Environment」と名前をつけました。
C09.png
ダブルクリックして開きます。
Detailsパネルの「Apply Ambient Volumes」にチェックをつけます。
これでこのAtom Sound Classに設定されたサウンドは、AtomGameplayVolumeの影響を受けることになります。
C10.png
キューシートを開き、キューの「Class」に作成した「ASC_Environment」を設定します。
C11.png
他の環境音のキューに対しても一括でClassを設定してしまいましょう。
C12.png
ゲームを再生すると、川に沿って移動してもサウンドが着いてきてくれるようになりました!
C13.png

サウンドのテスト用描画は、コンソールコマンド「atom.3dVisualize.Enabled 1」で行えます。
C15.png
サウンドの位置は変化しませんが、Portal内をプレイヤーの近くまで移動できるカーソルが視覚化できます。

川の中(AtomGameplayVolumeの中)に入ると、減衰のないサウンドが聞こえます。
C14.png
川を辿ったり、離れたり近づいたりして確認してみましょう。

同じように池と焚き火についてもボリュームを作成します。
BSPブラシは近い形状のものを使用します。
池の場合はCylinderを配置し、
C16.png
C17.png

焚き火の場合はSphereを配置して、それぞれの領域をカバーしました。
C18.png
C19.png
(例として作ってみましたが、焚き火のようなごくごく小さい領域かつ、プレイヤーが内部に入り込んだりしないものにはこの機能は基本的に不要です)

ボリュームを変換後でも「Brush Editing Mode」に切り替えることで、ボリュームの大きさを変更可能です。
C20.png

手動で実装しようとするとなかなか骨の折れるようなシチュエーションの環境音でも、AtomGameplayVolumeとPortalコンポーネントを組み合わせることでお手軽に実現できてしまいます。
フィールドの雰囲気作りにとても有用な機能ですので、ぜひ試してみてください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1