ADX2+UE4で扱うAISACコントロールを、UE4のカーブアセットで管理する


はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を使いAisacコントロールを行う際のグラフを、UE4標準のカーブアセットに置き換えて管理します。
UE4の扱いに慣れている開発者がサウンドデザインをする場合にパラメータ調整をUE内で完結させられるほか、音声の変動量や係数などをロジックからリアルタイムに変化させられる利点などがあります。

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

記事執筆時点のADX2 for UE4のSDKバージョンはv1_29です。

前提

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

Aisacコントロール

AISACコントロールは、AtomCraft上でキューに対して設定することができるグラフで管理されます。
変動量を設定し、そのままAISACコントロールのスライダーを動かすことで音声のテストが可能です。

変動の対象となるのは音量やピッチの他、各種エフェクトなどにも値を渡してかかり方を操作することができます。

UE4のカーブアセット

UE4でのカーブアセットも、同じように曲線グラフで形づくられるものです。
こちらはAISACコントロールとは違い、カーブグラフそのものがひとつのアセットとして扱われます。

ブループリントなどのロジックからアクセスも可能です。

AtomCraftでのAISACコントロールの設定

0.0~1.0の変化量を同じにする

カーブアセットの使用を前提としたAISACコントロールの設定方法です。
まずは通常どおりにトラックリストの空欄で右クリックし、「新規オブジェクト」→「AISACのを作成」をします。

AISACの基本情報を編集します。

新しいグラフが開くので、「横と縦の0.0~1.0が同じ変動量になる」グラフを作成します。
右肩上がりの直線グラフになります。

コントロールポイントごとに、「ポイントリスト」ウィンドウで数値を設定すると楽です。

UE4でカーブをAisacコントロールの数値として使う

カーブアセットの作成

UE4でのカーブアセットの作成方法です。
コンテンツブラウザの空欄で右クリックし、「Miscellaneous」→「Curve」を選択します。

カーブのクラスを選びます。今回AISACコントロールに対して必要な情報はFloat変数ひとつなので、「CurveFloat」をクリックします。

新しいカーブアセットが作られます。適当に名前をつけておきます。

カーブアセットを開くと、グラフの編集画面になります。
右クリックして「Add Key」かマウス中ボタンクリックでキーを追加できます。

キーを選択して右クリックすると、カーブの補間タイプが選択できます。

適当にグラフを作ったら保存します。

ブループリントでカーブからAISACコントロールに値を渡す

ブループリントを使って、カーブアセットの数値をAISACコントロールに反映させる方法です。

ひとまずキーを押したらAtomキューが再生される処理を作ります。

Atomキューの再生ノードの青いアウトプットピンを右クリックして、「Promote to Variable」でキューを変数として登録します。

名前をつけてSetノードを置きます。

新しく変数を作成します。「Variable Type」を「Curve Float」の「Object Reference」に変更します。

「Curve Asset」の初期値を先ほど作成したカーブアセットにします。

カーブアセットのGetノードから線を伸ばして、Get Float Valueノードでカーブアセットの数値が取得できるようになります。

別のキーを押すと、カーブアセットの数値を取得して、そのままSet Aisac by NameでAISACコントロールに反映させる処理です。
Float型の変数「Current Value」を作成して、カーブグラフの横の数値として代入しています。

例として、ボタンを押すごとに変数「Current Value」の値を変動させ、AISACコントロールを操作するグラフです。

Setノードで「Curve Float」型の変数に異なるカーブアセットを代入可能なので、時間あたりの変動量なども異なるカーブに差し替えることができます。

補足

カーブドリブンの実装を紹介してきましたが、もちろんAtomCraftでグラフを作ることのメリットも多々あります。キューを直接編集して新しいパラメータを設定したり、セッションウィンドウを使ったイテレーションなどの恩恵はUE4で完結できません。
UEを触らないアーティストの方にサウンドデザインを任せるならAtomCraftで、逆にエンジニアが主導でサウンドデザインを行う場合はUE4のカーブ機能を採用するなど、プロジェクトごとに比重を変えていくのがベストでしょう。