LoginSignup
1
0

More than 1 year has passed since last update.

ADX2 for UE4で、BPやcsvを使ってサウンドを管理する方法

Last updated at Posted at 2021-06-07

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させてサウンドを扱う場合、キューには様々な管理方法があります。
オーソドックスに使う場合、サウンドオーサリングツール「AtomCraft」上でキューシート、キューをビルドしてしまいUE4に取り込む方法がメジャーです。
A01.png
しかし、キューシートのアセットさえあればブループリント上からキューを取得したり、またcsvを使ってサウンドの名前やパラメータの管理をすることもできます。
A02.png
コンテンツブラウザ内のアセットも最小構成になります。
これにより、ADX2やAtomCraftを使わないアーティストの方との連携もやりやすくなるでしょう。

当記事ではUE4.26.1を使用します。基本的にブループリントのみでの実装を想定しています。
ADX2はインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx2-le/

前提

ADX2 for UE4の導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

実装

キューシートを用意する

今回はサンプル用に、BGMやSE、UI用のサウンドキューが入ったキューシートをAtomCraftで用意しました。
01.png
普段どおりビルドします。
02.png

UE4へはキューシートとAtomConfigファイルのみをインポートします。
キューシートのインポート時に「New Assets」の場所で「Do Not Create」を選択すると、キューがインポートされなくなります。
下部のキューリストのチェックを外しても同様です。
03.png
最小構成のファイルがインポートされました。
04.png

BPからキューシートを読み込み、キューを取得する

変数を用意する

レベルブループリントを開き、キューシートを取得する変数を用意します。
05.png
「My Blueprint」にて、変数を追加します。
06.png
「Variable Type」を「Sound Atom Cue Sheet」の「Object Reference」にします。
07.png
名前をつけ、BPをコンパイルしてから「Default Value」を今回使用するキューシートにします。
変数名は「CurrentCueSheet」にしました。
08.png

変数からキューを取得する

作成した変数のGetノードを配置します。
09.png
GetノードからGet Atom Cue by Nameノードが引き出せます。このノードで名前を指定してキューを取得できます。
10.png
取得したキューを参照し、再生・制御が可能です。
次のノード配置例では、キーボードの「1」キーで効果音が再生されます。
11.png

csv(データテーブル)からキューシートを管理する

Excelなどの表を使ってキューを取得・管理することもできます。UEに「データテーブル」として取り込んで使用します。

データテーブル用のStructureを用意する

データテーブルが持つ要素を登録するには、「Structure」(構造体)アセットを作成する必要があります。
コンテンツブラウザで右クリックし、「Blueprints」→「Structure」を選択します。
12.png
適当に名前をつけます。
13.png

Structureを開き、「New Variable」ボタンを押して要素を追加していきます。
14.png
今回はシンプルに、「キューのインデックス」「キュー名」「ループタイプ」「UI用サウンドか否か」を情報として持たせています。
15.png

データテーブルを作成する

コンテンツブラウザで右クリックし、「Miscellaneous」→「Data Table」を選択します。
16.png
先ほど作成したStructureを選択します。
17.png
「Add」ボタンを押してインデックスを追加していき、それぞれ情報を入力します。
18.png
「bUISound」では、距離の関係ない(3D空間上で扱わない)BGMとUI音でTrueにしています。
19.png

BPからデータテーブル情報を取得し、再生する

レベルブループリントでデータテーブルを扱っていきます。
Get Data Table Row (データテーブル名)ノードで名前を取得してデータテーブル情報を得ることができます。
20.png
「Out Row」ピンからBreak
ノードをつなげることで、取得した行の要素を分解して取り出せます。
21.png
取り出した要素から「Cue Name」ピンをGet Atom Cue by Nameにつなげます。
22.png
「Loop Type」でループ情報が指定できるよう、キューに対してSet Loop Settingノードをつなげます。
23.png
「bUISound」が「True」であればSpawn Sound 2Dで、「False」であればSpawn Sound at Locationで座標を指定して再生します。
24.png

もちろん、Get Data Table Rowノードの「Row Name」は変数で指定可能です。
25.png
キューは名前での指定ではなく、Get Atom Cue by Indexを使ってインデックス情報でも指定可能です。
26.png

スプレッドシートでデータテーブルを記述し、インポートする

同じ書式のシートをGoogleスプレッドシートで書くこともできます。
27.png
「ファイル」→「ダウンロード」→「カンマ区切りの値(.csv、現在のシート)」でスプレッドシートを出力します。
28.png
コンテンツブラウザにドラッグアンドドロップすると、インポートダイアログが表示されます。
キューシートに適したStructureを指定して「Apply」を押します。
29.png
同じような形式でデータテーブルを取り込むことができます。
30.png
「Reimport」ボタンを使用して、スムーズなイテレーションも可能です。

1
0
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
1
0