LoginSignup
0
0

UE5 + ADXで扱うAISACコントロールを、UE5のカーブアセットで管理する(新バージョン対応版)

Last updated at Posted at 2023-11-22

はじめに

ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではアンリアルエンジン5とサウンドミドルウェア「ADX for UE」を使いAisacコントロールを行う際のグラフを、UE5標準のカーブアセットに置き換えて管理します。
UE5の扱いに慣れている開発者がサウンドデザインをする場合にパラメータ調整をUE内で完結させられるほか、音声の変動量や係数などをロジックからリアルタイムに変化させられる利点などがあります。
AtomCraftを扱うサウンドデザイナーがいる場合はツール側に任せ、そうでない場合はこうしたエンジン側からのアプローチをとるのもいいかもしれません。

前提

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

なお、ADX2はADXへ名称が変更になりましたが、ツール構成は変更ありません(2がないから古いほう、というわけではありません)。

記事執筆時点のADX for UEのSDKバージョンは「ADX LE UE SDK(2.00.00.00)」です。

基本の使い方

ADX for UEの導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
キューシートやキューの作り方、UEへのインポート方法はこれらの記事にあります。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX for UEの導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

Aisacコントロールとカーブアセット

Aisacコントロールについて

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

C00.png

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

UE5のカーブアセットについて

UE5でのカーブアセットも、同じように曲線グラフで形づくられるものです。
こちらはAISACコントロールとは違い、カーブグラフそのものがひとつのアセットとして扱われます。
C02.png
ブループリントなどのロジックからアクセスも可能です。

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

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

カーブアセットの使用を前提としたAISACコントロールの設定方法です。
まずは通常どおりにトラックリストの空欄で右クリックし、「新規オブジェクト」→「AISACのを作成」をします。
A01.png
AISACの基本情報を編集します。
A02.png
新しいグラフが開くので、「横と縦の0.0~1.0が同じ変動量になる」グラフを作成します。
右肩上がりの直線グラフになります。
A03.png
コントロールポイントごとに、「ポイントリスト」ウィンドウで数値を設定すると楽です。
A04.png

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

カーブアセットの作成

UE5でのカーブアセットの作成方法です。
コンテンツブラウザ(コンテンツドロワー)の空欄で右クリックし、「Miscellaneous」→「Curve」を選択します。
C01.png

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

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

カーブアセットを開くと、グラフの編集画面になります。
C04.png

右クリックして「Add Key」かマウス中ボタンクリックでキーを追加できます。
C05.png
C06.png

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

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

ブループリントでキューを再生する

ブループリントを使って、カーブアセットの数値をAISACコントロールに反映させる方法です。
簡単に実践してみましょう。

まずはレベルブループリントを開きます。
A01.png

再生するキューシートの指定のため、変数を追加します。
A02.png
型はキューシートから手動でキューを指定したい場合は「Atom Cue Sheet」を、直接キューを指定する場合は「Atom Sound Cue」です。
A03.png
D01.png

コンパイルしたら「Default Value」で再生するキューシート、もしくはキューを指定しておきましょう。
A04.png
「1」キーを押したらSpawn Sound at Locationでキューをスポーンし、再生します。
座標はどこでもいいですが、Get Player CharacterGet Actor Locationを使ってプレイヤーキャラクターの位置にスポーンさせれば確実に聞こえるでしょう。
A05.png
Spawn Sound at Locationノードは、「Atom」カテゴリ内のノードを使用します(重要)。
標準機能として搭載されている、他の似たノードと間違わないようにしましょう。
A06.png
Get Sound Cue by Name、もしくは**Get (AtomSoundCue変数)**などで再生するキューを指定し、再生処理が完成します。
A07.png

D02.png

キーボードの「1」キーを押すごとに、キャラクター座標にサウンドがスポーンするようになりました。
A08.png

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

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

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

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

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

別のキーを押すと、カーブアセットの数値を取得して、そのままSet Aisac by NameでAISACコントロールに反映させる処理です。
B06.png

これだけではノードが足りないので追加していきます。
Set Aisac Control Valueノードの「Aisac Control」を指定しなければならないので、ピンを右クリックして「Promote to Variable」を選択します。
B07.png
「Aisac Control」型の変数が作られます。コンパイルして、任意のAisac Controlを指定します。
この場合はボリュームを担っている「AisacControl_00」を指定しました。
B08.png
カーブの横の値を指定するため、こちらも「Promote to Variable」で変数化します。
B09.png
「Current Value」を代入し、それに応じたAisacControlの値がGet Float Valueから取得できるようになりました。
B10.png

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

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

補足

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

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