0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ADX2 for UE4で、アニメーションに紐付いたループサウンドを制御する

Last updated at Posted at 2021-06-07

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、キャラクターが行動中にのみ再生され続けるサウンドを再生します。

ロボットのようなキャラクターの駆動音は、移動中ずっと鳴っていてほしいものです。しかしアニメーション中にキューを散りばめるのも面倒だし、BPから制御するのもスマートではなく……といった場合に、AtomPlayGateをアニメーションに紐づけて使うと便利です。

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

基本的な実装

アニメーションにAtomPlayGateを埋め込む

UE4のエディタ上でアニメーションを開き、タイムラインの「Notifies」トラックで右クリックし、「Add Notify State」→「AnimNotifyState_AtomPlayGate」を選択します。
A01.png
AtomPlayGateがタイムライン上に現れます。両端のひし形の場所をドラッグすることで再生範囲を調節できます。
A02.png
アニメーション中ループさせたい場合は、アニメーション全体を覆うように引き伸ばします。
A03.png
Detailsパネルにて、再生したいサウンドを指定します。アニメーションを再生するとサウンドがループするようになります。
A04.png
キャラクターの特定の部位からサウンドを再生したい場合、「Bone」に追従させたいボーン名を指定し、「Follow」にチェックを入れます。
A05.png

AtomPlayGateの再生キューにAISACコントロールをかける

たとえば「キャラクターの速度に応じて駆動音の高さや音量を変えたい」といった場合には、AtomPlayGateで再生しているキューに対してAISACコントロールを使うことで音に変化を起こせます。
しかし、AtomPlayGateでの再生はその場で完結してしまうため、通常Atom CueやAtom Componentに対して行うような参照はできません。
(たとえば、BPから参照できるキューがないため次の画像のような処理は書けません)
B01.png

こういった場合、カテゴリに対してAISACコントロールを行ってしまうことで解決します。
Set Aisac Control by Nameノードではカテゴリと名前を指定して、該当するAISACコントロールすべてに影響を与えます。
B02.png

キューのカテゴリを指定する

この機能を使うためには、AtomCraftで対象のキューにカテゴリを指定してあげる必要があります。
プロジェクトツリーの「カテゴリ」を開き、カテゴリーグループを右クリックして「新規オブジェクト」→「カテゴリの作成」を選択します。
B03.png
新しいカテゴリが作られるので、任意の名前をつけます。今回は「Category_PlayerAction」としました。
B04.png
AISACコントロールをかけたいキューを選択し、インスペクターにて「カテゴリ」をクリックします。
カテゴリの編集ウィンドウが表示されるので、振り分けたいカテゴリにチェックをつけます。
B05.png
ちなみにカテゴリグループを複数作ることで、ひとつのキューに対して最大4つのカテゴリを割り振ることができます。
B06.png

BPからカテゴリを操作する

キューシートをビルドしUE4に持っていくと、ブループリントノードからカテゴリへのアクセスが可能になります。
Set Aisac Control by NameノードでAISACコントロールを制御しましょう。
B07.png

アニメーション内の任意のタイミングでAISACコントロールを変化させる

アニメーション内でAISACコントロールを制御する方法もあります。
アニメーションのタイムラインの「Notifies」トラックを追加します。
B10.png
追加したトラック内で右クリックし、「Add Notify」→「New Notify」でユーザー定義のAnimNotifyを追加します。
B11.png
今回はふたつ追加し、「AisacControl_A」「AisacControl_B」と名前をつけました。
B12.png
アニメーションブループリントに移動し、イベントグラフでAnimNotifyに対応したイベントを追加します。
B14.png
追加したイベントから、Set Aisac Control by Nameノードをつなげます。
B13.png
これにより、ループアニメーション再生中はAISACコントロールの値が「0.0」から「1.0」の変化を繰り返すことになります。

カテゴリ全体を指定して音を変化させることで、移動速度だけでなく「キャラクターの強化状態に応じて攻撃時のサウンドが豪華になる」「ダメージを受けている場合はサウンドが劣化する」といった演出も可能になります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?