UnrealEngine Niagaraパーティクルシステム中でADX2サウンドを再生する

概要

本ページではNiagaraパーティクルシステムにおける、パーティクルのスポーン時、デストロイ時にADX2サウンドを再生する方法を示していきます。
なお、本記事ではUnrealEngineのNiagaraという機能に対しての音付けとして説明していくため、事前に以 下の記事を読んでおくことをおススメします。
■UnrealEngine Niagara公式ドキュメント
Unreal Engine 公式ドキュメント | 視覚効果を作成する
Unreal Engine 公式ドキュメント | Niagara のオーディオ エフェクト
■Niagaraでのエフェクト制作例
【ナイアガラ超基礎 #1】かんたんな概念【UE5】

NiagaraでADX2サウンドを再生するための準備

NiagaraでADX2サウンドを再生するための準備としては、CriWareNiagaraプラグインがエディタ上で有効 になっている必要があります。
criware_ue_atom_niagara_prepare_enable_niagara_plugin.png
そのため、利用いただくにあたってはUnrealEngineに適用されているCriWare UnrealEngine Pluignに本プラグインが含まれ、且つ有効になっているかどうか確認してください。
CriWareNiagaraPluginには、ADX2サウンドを再生するモジュールが含まれています。
データ列挙型
  • ENiagara_AtomSoundParamType.uasset
  • PlayAtomMode.uasset
Niagaraモジュール
  • PlayAtom.uasset
  • PlayPersistentAtom.uasset
  • UpdatePersistentAtom.uasset
  • AtomSoundStopWhenParticleDie.uasset
NiagaraシステムでADX2サウンドを再生する場合は、NiagaraモジュールをNiagaraエミッターやNiagaraシ ステム中で利用していきます。

Niagaraでのサウンド再生

Niagaraではパーティクル属性内にAtomPlayerインターフェースを変数として持ち、それを利用してサウン ド再生の設定をNiagaraエミッター内にモジュールを追加して行っていきます。
ADX2サウンドを再生するためのモジュールの利用方法としては、以下の通りです。

PlayAtomモジュール

ワンショットのサウンド再生で利用します。 基本的には、Niagaraエミッター内の「パーティクルのスポーン」内で呼び出すようにします。
criware_ue_atom_niagara_prepare_playback_playatom.png

PlayPersistentAtom

パーティクル更新などで座標の変更を行いたい場合などではPlayPersistentAtomモジュールを利用します。 「パーティクルのスポーン」内で呼んで利用します。
criware_ue_atom_niagara_prepare_playback_playpersistentatom.png

UpdatePersistentAtom

PlayPersistentAtomモジュールで再生したサウンドのLocationやRotation、Volume、Pitchなどを「パーティ クルの更新」内で変更することができます。
一つのモジュールで変更できるパラメータの種類は1種類のみなので、LocationやRotationなど複数のパラ メータを更新したい場合は、更新するパラメータ数分のモジュールを「パーティクルの更新」内に追加し ます。
criware_ue_atom_niagara_prepare_playback_updatepersistentatom.png

AtomSoundStopWhenParticleDie

パーティクルが消えるときにこのモジュールイベントがキックされます。
一つ目のAtomPlayerにセットされたAtomPlayerで再背されているサウンドを停止し、二つ目のAtomPlayer にセットしたサウンドをパーティクル破棄時に再生することができます。
criware_ue_atom_niagara_prepare_playback_atomsoundstopwhenparticledie.png

Niagaraシステム上でのADX2サウンドの付与例

付与するエフェクトから再生するサウンドの仕様を決める

パーティクルエフェクトの表現は千差万別あるため、今回はシンプルに花火エフェクトに対してADX2サウ ンドを付与していきます。
criware_ue_atom_niagara_example_determine_specifications_how_to_play_sounds.png
こちらの花火エフェクトですが、まずは音を付与する個所を見極めていきます。
この花火エフェクトは、以下のような流れでエフェクトが遷移していきます。
  • 光華打ち上げ
  • 光華打ち上げ中
  • 光華炸裂
  • 光華消滅
このフローの中でサウンドが必要となってくる個所を
  • 打ち上げ中の光華笛の音(ヒュ~)
  • 光華の炸裂音(ドンッ!)
    の二種類とします。
    ※シンプルにするため付与する音の種類を少なくしています。
それぞれのサウンドの挙動は以下のようになるようしていきます。
打ち上げ中の光華笛の音(ヒュ~)
  • 打ち上げ時から炸裂時まで音が鳴り続けるものとする
  • 炸裂時に停止する
光華の炸裂音(ドンッ!)
  • 炸裂時に再生する
この仕様となるようNiagaraEditor上で設定していきます。

Niagaraモジュール/システムでNiagaraEditorを開く

今回はNiagaraSystemの内部エミッターに直接ADX2サウンドを再生する仕組みを作っていきます。
光華のエフェクトはMarketPlaceで販売されているものを利用しています。
そのうちのNS_Willow1に対して音付けをしていきますが、念のため実験用のアセットとして、NS_Willow1を複製してNS_Willow_Testと名前を付けます。
https://unrealengine.com/marketplace/ja/product/fireworks-niagara-fx
まずはNS_Willow_TestアセットをダブルクリックしてNiagaraEditorで開きます。
すると次のような画面が表示されます。
criware_ue_atom_niagara_example_open_editor_NS_Willow_Test.png
このうちでサウンドを、付与したい状況を考え、打ちあがっていく際の白いエフェクトであるNERocket001エミッターとします。
ADX2サウンドを再生する際には、Niagaraパラメータに変数をまず初めに追加します。
「システムの概要」ウィンドウ内の「NS_Willow_Test」を選択します。
criware_ue_atom_niagara_example_editor_select_NS_Willow_Test.png
パーティクル属性の+ボタンを押してデータインターフェース内にあるAtomPlayerを再生するサウンド分だけ用意します。今回は二種類のサウンドを再生したいため二つ用意します。
criware_ue_atom_niagara_example_editor_add_atomplayer.png
NE_Rocket001に音付けを行うため、作成したAtomPlayer、AtomPlayer2をパラメータ内からドラッグしてNE_Rocket001の「パーティクルのスポーン」内AddVelocityinCone以下あたりに置きます。
criware_ue_atom_niagara_489b7f2b-81ff-483e-a19e-4435bd5ebecd.png
NE_Rocket001内に配置したAtomPlayer、AtomPlayer2を選択すると選択タブ内で再生したいサウンドのセットなどができるようになるため、再生したいSoundAtomCueアセットを指定します。
ここではAtomPlayerに「打ち上げ中の光華笛の音(ヒュ~)」をセット、AtomPlayer2に「光華の炸裂音(ドンッ!)」をセットしています。
さて、まずはうち上がり中の光華笛の音を再生するために、NE_Rocket001の「パーティクルのスポーン」の+ボタンを押してPlayPersistentAtomを選択します。
criware_ue_atom_niagara_07b89c61-9289-47b2-97f7-8463fd7ea32e.png
criware_ue_atom_niagara_13e4bbc0-b260-4ce4-8962-13f94f9c243b.png
すると図のようになるはずです。
NE_Rocket001のどれかのモジュールを選択中、左側のパラメータには各種モジュールが所有しているパブリックなパラメータ一覧が表示されますが、その中にあるPlayAudioというbool変数を探します。
criware_ue_atom_niagara_c9d2e94e-2730-41c0-8549-a805d717d151.png
PlayAudioのbool値を見つけたら、NE_Rocket001のPlayPersistentAtomモジュールの上にDrag&Dropで配置します。
追加した後、PlayAudioの選択タブ内のチェックボックスを有効にします。
criware_ue_atom_niagara_c2d9dcce-3518-420c-a8bc-c1ee37816504.png
次にPlayPersistentAtomモジュールを選択して、選択タブ内のAtomPlayerという黄色いアイコン上にDrag&Dropをします。
criware_ue_atom_niagara_445885d3-2af6-4ff0-abb7-2a7bdf187bc7.png
criware_ue_atom_niagara_314860cd-fc24-4d2a-9150-b783aaebd718.png
すると画像のようになるはずです。
ここまでが発音させるまでの流れになります。
しかしこれだけだと、光華笛は発音時のポイントから移動しない状態になってしまいます。
次は光華笛をパーティクルに追従するようにします。
追従の処理はNS_Rocket001の「パーティクル更新」項目内に設定していきます。
「パーティクル更新」の+ボタンを押して「UpdatePersistentAtom」を選択します。
UpdatePersistentAtomモジュールが作成されたらUpdatePesistentAtomモジュール内のAtomPlayerに、パラメータタブからAtomPlayerをDrag&Dropします。
criware_ue_atom_niagara_dd134071-581e-4ab3-801d-5d1794b10444.png
Drag&Dropした後は、UpdatePesistentAtomモジュールのUpdateTypeをLocationになるよう変更します。
これにより光華笛の音は花火のパーティクルに追従するようになります。
さて次に、このパーティクルが消えた際に、打ち上げ音を消しつつ、光華が破裂する音を追加します。
これはDeathEvent時に上記二種類の処理を行えるモジュールを「パーティクル更新」内に追加することで実現します。
「パーティクル更新」の+ボタンを押してAtomSoundStopWhenParticleDieモジュールを作成します。
criware_ue_atom_niagara_56aaf925-c655-4661-8668-47ff47b17aa7.png
AtomSoundStopWhenParticleDieモジュール内には二つのAtomPlayerを設定できるようになっているため、上のAtomPlayerには停止させたいAtomPlayer、下のAtomPlayerにはパーティクルが死んだ際に再生したいAtomPlayerをセットします。
criware_ue_atom_niagara_dba24db9-c247-450e-b488-2b5ae3e12434.png
criware_ue_atom_niagara_27901551-ce19-4dfa-b5a6-5129d2bba086.png
これにより光華が打ちあがってから破裂するまでの一連の流れに対応したサウンド再生を実装できました。