LoginSignup
1
0

More than 1 year has passed since last update.

ADX2 for UE4とシーケンサーを使いカットシーン中の音を制御する

Last updated at Posted at 2021-12-10

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を使って、UE4の「シーケンサー」と連携して、サウンドを変化させる基本テクニック&プチ応用を扱います。

当記事では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

シーケンサーについて

シーケンサーはUE4に標準搭載されている機能で、タイムライン上でキーを打ち、オブジェクトの座標やパラメータなどを変動させることで一連の決まった動きを作るものです。
一般的にはゲームのカットシーンやギミック、または映像制作に使用されます。

A00.png

実装

今回は実装例として、環境音をAtomCraftで構成し、UE4に持っていき制御してみます。

AtomCraftで環境音を構成する

マテリアルの用意

風の音、雨の音になる2種類の音源を用意しました。
ドラッグアンドドロップでマテリアルツリーにインポートします。
A01.png
ふたつの音源を選択し、インスペクターにてループ情報の上書きを「True」に、ループタイプを「ループ」にします。
A01B.png

キューの作成

新規にキューを作成します。
キューシートを右クリックし、「新規オブジェクト」→「キュー『ポリフォニック』の作成」を選択します。
A02.png
キュー内に2種類の音源をドラッグアンドドロップします。
A03.png

AISACの作成

風の音のトラックを選択した状態で、右クリックして「新規オブジェクト」→「AISACの作成」を選択。
A04.png
ウィンドウが開くので、次のように設定します。
A05.png
AISACタブが開きます。
A06.png
画面下からタブを切り替え、タイムラインに戻ります。
A07.png
雨の音のトラックを選択し、右クリックして同じようにAISACを作成します。設定項目は同じです。
A08.png
AISACタブで、トラックごとにグラフを編集します。
A09.png
風のトラックはAisacControlの数値が1に近づくほど低めに、雨のトラックは0から1に上がっていくようにします。
A10.png
再生しながら、上部のスライダーを動かしてテストします。数値を上げると、風の音が控えめになっていき雨の音が聞こえだす状態が理想です。
A11.png
今度は屋内に入った際の音の変化をするためのAISACを作成します。
タイムラインタブに戻り、今度はトラックを選択せずに空欄でAISACを作成します。
A12.png
次のように設定します。音をくぐもらせたいので、グラフタイプは「バンドパス - Cof高域」を選択します。
A13.png
AisacControl_01の数値が1に近づくほど紫のグラフが低めになるよう編集します。
A14.png
こちらも上部のスライダーを動かして、テストしながら設定するといいでしょう。
スライダーが右にいくほど屋内に入り、雨音がくぐもった状態になるといい感じです。
A15.png

別バリエーションによる遷移キュー

別の音の遷移を試すため、異なるタイプのキューも作ってみましょう。
「セレクターによるトラック遷移」のキューを作成します。
A16.png
同じようにタイムライン上にマテリアルを配置します。
A17.png
プロジェクトツリーにて、「セレクターフォルダ」を選択し右クリックして、「新規オブジェクト」→「セレクターの作成」を選択します。
A18.png
セレクターフォルダが作られます。環境音用なので、「Selector_Amb」と名前をつけました。
A19.png
さらに、作成したセレクターフォルダの中にセレクターラベルを作成します。風用、雨用をそれぞれ作ります。
A20.png
トラック名の下でセレクターラベルが選択できます。それぞれ合うものを設定しておきます。
A21.png
キューのインスペクターにて、遷移時間が設定できます。ミリ秒単位で指定します。
A22.png
遷移を実行するために、トラックリストの空欄で右クリックして「新規オブジェクト」→「ビート同期情報の作成」でBeatSyncマーカーを作っておきます。
A26.png

再生しながら、プロジェクトツリーのセレクターラベルをクリックするとトラックが遷移します。
A23.png

キューシートのビルド

ここまでできたらキューシートをビルドします。
A24.png
A25.png

ここからUE4での実装に移ります。

シーケンサーでAtom Soundを扱う

音声のセットアップ

まずはビルドしたキューシートをインポートしましょう。
acfファイル、acbファイルをコンテンツブラウザにドラッグアンドドロップしてインポートします。
B01.png
プロジェクト設定を開きます。
B02.png
「CriWare」タブの「Atom Config」にacfファイルをセットします。
B03.png
レベル上にドラッグアンドドロップして配置します。
B04.png
この時点でゲームを再生すると、風の音が流れることを確認しておくといいでしょう。
B05.png

シーケンサーで音声を再生する

配置したAtom Soundをシーケンサーから制御したいので、自動再生を無効化しておきます。
Atom Soundを選択し、Detailsパネルで「Auto Activate」のチェックを外せばOKです。
B06.png

レベルシーケンスを作成します。
上部の「Cinematics」から、「Add Level Sequence」をクリックします。
B07.png
適当な場所にシーケンスを保存します。
B08.png
シーケンサーのエディタが開きます。
画像では1画面におさめていますが、領域が大きくなるので別画面があればそちらに表示するのがいいでしょう。
B09.png
レベル上でAtom Soundを選択した状態で、「+Track」ボタン→「Actor To Sequencer」→「Add(Atom Sound名)」で音源をシーケンサーに登録します。
これでシーケンサー上で音声の制御ができるようになります。
B10.png
追加されたトラックの「+Track」を押し、「Atom」から再生したいAtom Cueを選択します。
B11.png
これで目的の波形が配置されます。
下部の再生ボタンを押すと風の音が流れてくるはずです。
B12.png

ゲーム中でレベルシーケンスを再生するには、シーケンスを選択してDetailsパネルで「Auto Play」にチェックを入れます。
その下にある「Loop」を変更するとループ再生が可能です。
C08.png

任意のタイミングで再生するには、レベルブループリントから制御するといいでしょう。
レベルブループリントを開き、
C10.png
レベル上でシーケンスを選択した状態で、イベントグラフの空欄で右クリックし「Create a Reference to (シーケンス名)」を選択します。
C11.png
「Play(SequencePlayer)」を選択します。
C12.png
再生用のノードが作られるので、任意のイベントにつなげば再生が開始されます。
C13.png

シーケンサーからAisacコントロールを制御する

タイムライン上でAisacの値を制御し、雨を降らせてみましょう。
まずは表示時間の単位をフレーム数から秒数に変更します。
C01.png
Atomトラックの表示を展開します。ボリュームやピッチ、そしてAtomCraftで設定していればAisacコントロールのトラックが出てきます。
C02.png
数値を変更するか、キーフレーム追加ボタンを押すとタイムライン上にキーが追加され、値の変動が起きます。
C03.png
1秒の時点で「0」、3秒の時点で「1」に変動するようキーを打ってみましょう。
C04.png
再生ボタンを押すと風の音に雨の音が混じっていく様子が確認できます。
C05.png
カーブエディタを上部のボタンから起動できます。
C06.png
トラックを選択すると、値が変化していく様子をグラフで見ることができます。
この状態での編集も可能です。
C07.png
また、同じように「AisacControl_01」も変化させてみました。段々と屋内に入っていくように雨音がくぐもっていきます。
C09.png

ブループリントと連携しイベントを発火する

セレクタラベルなどの機能はシーケンサーだけでは完全にアクセスすることができません。ですが、ブループリントと連携することで処理を完成させることができます。

いくつか方法はありますが、専用のアクターを作ってしまうのが楽なので新規に作成します。
適当な場所でブループリントクラスを作ります。
D01.png
親クラスはActorにします。
D02.png
アクターを開き、イベントグラフに次のような処理を書きます。
グローバルなラベルを交互に変更するカスタムイベントです。
D03.png
アクターをレベルに配置します。
D04.png
レベルシーケンスを作り、先程のアクターをトラックに追加します。
「+Track」から「Atom」→セレクター遷移を使用したAtom Cueを選択します。
D05.png
さらに、アクターのトラックにEvent Track(Trigger)を追加します。
このトラックで任意のイベントを発火させることができます。
D06.png
適当な時間でキーを打ちます。
D07.png
キーを右クリックし、「Properties」からイベントを選択します。
D08.png
「Quick Bind」から検索して先ほどアクター内に作成したカスタムイベントを選択します。
D09.png
シーケンサーからイベントを呼び出す「SequenceDirector」が作られ、開きますが特に変更の必要はないのでそのまま閉じて大丈夫です。
D10.png
イベントのキーのプロパティから「Call in Editor」にチェックを入れます。
D11.png
これで再生すると、キーを打ってイベントを呼び出すたびに風の音、雨の音が交互に遷移するようになります。
もちろんランタイムでも同じように動作します。
D12.png

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