SAT04 CREATIVE SPACE

メディア芸術作品、音楽制作、ゲーム開発(UE4)、アート、エンタメなどの創作に関する話題を扱うブログです

【UE4-Wwise】AkSpatialAudioとAkAcousticPortalを使って音を他の部屋に伝播させる

 AkAcousticPortalを使って、AkSpatialAudioVolumeのウェットシグナルを漏れさせる。ドアの開閉による音の遮蔽とかに使えるかな?
f:id:nowshika:20171030014658j:plain

AkAcousticPortalの開閉

f:id:nowshika:20171030013218j:plain

Open/CloseのStateがなぜかスタックしてしまう(2回オープンすると、2回クローズしないと閉じない)ので、ブランチで開閉を判断。

www.audiokinetic.com

AkSpatialAudioVolumeの設定

AkAcousticPortalを重ねて、音を漏れさせるAkSpatialAudioVolumeの設定。

f:id:nowshika:20171030014016j:plain

Enable Late ReverbとEnable Roomにチェックを入れる(これで、AkRoomComponentが有効になり、AkAcousticPortalが機能する)

Wwise側のAux Busの設定

Auxには当然リバーブ系エフェクターをかます。

Game Defined Auxiliary Sendsもチェック。Positionは3D。
f:id:nowshika:20171030015046j:plain

f:id:nowshika:20171030015054j:plain

【UE4-Wwise】特定の場所で残響を付けるAkReverb Volume実装方法

WwiseDemoGameで使われている例。

Wwise側の設定

とにもかくにも、音側でGame-Defined Auxiliary Sendの設定をして置く必要があります。ゲーム側で動的にAuxバスへのアサインやSendをコントロールできるようにしておきます。
f:id:nowshika:20171029224446j:plain

Use Reverb Volumes

 WwiseDemoMapのレベルブループリントに、「Use Reverb Volumes」ノードを使って、AkReverbVolumeを有効にしています。

https://cdn-ak2.f.st-hatena.com/images/fotolife/n/nowshika/20171029/20171029154527_original.jpg


 プレイヤーキャラクターにCastして、Mesh1PをGetしています。更にMesh1PメッシュにアタッチされているAkComponentをGetしています。これにより銃を打つ音に対してリバーブが有効になります。

AkReverbVolume

音屋的にボリュームというと音量ですが、UE4では容積(体積)という意味で広く使われている言葉です。
https://cdn-ak2.f.st-hatena.com/images/fotolife/n/nowshika/20171029/20171029154450_original.jpg


AkReverbVolumeは、マップではこのように設定されています。Late Reverbの設定で、ボリューム内に入った時に有効になるAux Busと、Send Levelが設定できます。Fade Lateの設定によって、ボリュームに入った瞬間にいきなりAuxBudへのSendが最大にならないようフェードをかける事ができます。

察しの良い方はお気づきだと思いますが、AkReverbVolumeて名前だけどやってる事はAuxに音を送ってるだけなんで、別にリバーブだけじゃなく様々なサウンドデザインに活用出来るはずです。

MyCharacterとMesh1Pの確認

 WwiseDemoMapレベルは、GameModeが設定されていないので、プロジェクト設定の「マップ&モード」のDefault GameModeが有効になってます。

 つまり、MyCharacterがプレイヤーキャラクターPownという事になります。虫眼鏡押せばコンテンツブラウザーで「MyCharacter」が表示されます。

f:id:nowshika:20171029143727j:plain

 MyCharacterを開くと、先程取得した「Mesh1P」メッシュがある事がわかります。
f:id:nowshika:20171029153711j:plain

銃を打つ音(Fire_Weapon)はどうやって鳴らしているか

 これはAkEventから逆引きするのがてっとり速いです。

 コンテンツブラウザーに登録されてる「Fire_Weapon」を選択して右クリックメニューから「リファレンスビュアー」を選択
f:id:nowshika:20171029150535j:plain

 Fire_Weaponを参照しているアセットを、「コンテンツブラウザーで検索」するか、「アセットの編集」で開きます。
f:id:nowshika:20171029150919j:plain

「FPP_Fire」というアニメーションシーケンスの、AnimNotifyとしてAkEventをPostしているのがわかります。
f:id:nowshika:20171029151409j:plain

 ここからアニメーションの仕組みを理解していないと、ちょっとむずかしいですが基本的にリファレンスビューアーで、辿っていけばOKです。アニメーションシーケンス「FPP_Fire」は、アニメーションモンタージュ「FPP_Fire_Montage」が参照しています。

 その「FPP_Fire_Montage」を参照しているのが「MyCharacter」です。やっと戻ってきました。

 インプットアクション「Fire」が発生した時、「Mesh1P」をターゲットした「FPP_Fire_Montage」アニメーションモンタージュが再生され、その「FPP_Fire_Montage」の中の「FPP_Fire」からAkEvent「Fire_Weapon」がPostされて音が鳴っている……と。

「Mesh1P」に紐づけされた音の「Use Reverb Volumes」を有効にする。これがこの記事の最初で紹介したブループリントでやってる事です。
f:id:nowshika:20171029152255j:plain

 これまた蛇足ですが、インプットアクションはプロジェクト設定でされています。

f:id:nowshika:20171029154532j:plain

 なんか、自分のメモ程度に書こうと思ってたら、音とはあまり関係ないUE4の基礎部分まで書いちゃって読みにくくなってしまったので、次回は本当にシンプルに書こうかと……。

補足と注意点

  • AkReverbVolumeの、LateReverb項目「Fade Rate」を0にするとAUXへ音が送られません。仕様なのかBugなのか不明
  • 「Fade Rate」は数字が小さいほどゆっくりとした変化になります。エリアに入った瞬間Reverbをかけたいなら10とかにすると良い。仕様なのかBugなのか不明
  • Wwise側のGame-Defined Auxiliary Send項目のVolumeを0にしていた場合の音量変化は以下の通り
Send Level (UE4側の設定) Wwise側でのSend Volume(dB)
1 0dB
0.5 -6.0dB
0.25 -12dB
  • AkReverbVolumeの下の方にあるToggleの「Enable Late Reverb」で、AuxSendの有効化/無効化が可能

f:id:nowshika:20171029232223j:plain

Waves バンドル製品の収録プラグインを比較する

f:id:nowshika:20170930152915j:plain
 Wavesのプラグインといえば、まずはプラグインを纏めた各種Bundle版を購入するのが基本となります。「Gold」「Platinum」「Diamond」「Horizon」そしてほぼ全部入りの「Mercury」。

 「Gold」→「Platinum」→「Diamond」の流れは完全上位アップグレードですが、「Diamond」から「Horizon」は、完全上位ではないので注意が必要です。

バンドル比較表はこちら

 バンドルの比較はWavesのサイトにあります。
Compare Bundles | Waves

 比較したいバンドルにチェックボックスを入れる事で、収録プラグイン一覧が表示されます。

 5製品しか表示されていませんが、画面端の「>」ボタンを押すとページをめくる事ができます。
f:id:nowshika:20170930152742j:plain