#memo

indiedev太郎

BankやEventをWwiseのみで完結させる

Wwise on UE4記事、目次はこちら

PostEvent()ノードについて

https://i.gyazo.com/d50fecd81e12d69cca9d99f95d447ba5.png
前回使用したこのノードが具体的にどういう処理をしているのかを確認してみる

ノードの底辺にある▼を押すともう一つ引数が現れて、FString型のEventNameと言うものが現れる

このノードが実行される条件が

  1. Actorの参照がきている
  2. AkEvent、またはEventNameのどちらかの引数がきている

この二つを満たした時にEventがコールされる、つまり、EventNameさえ書けばAkEventの指定は必要ではなく、というかAkEventはアセットの名前をEventNameとしているだけで、何やらわざわざ同名のAkEventアセットを作る必要がないような気がしてくる

ちなみに参照にとるアクターは、前回自分でAkComponentを作成したが、これが存在していない場合自動で生成してくれる

より詳しい実装はAkGameplayStatics.cppにあるのでC++が読める人は自分で確認して下さい

UE4が生成するAudioBankについて

EventアクターをわざわざUE4側で作る必要がなさそうとなると、どのBankに入れるかという設定をどこでやるのかという問題が出てくる
とりあえずこれは置いておいて、前回UE4側からBankを生成した際、これがどこに生成されたのかを確認する

https://i.gyazo.com/60d3d711140a847b493b6a6d766f9ea7.png

UE4プロジェクトのContentフォルダ内にWwiseAudioというフォルダがあって、この中にバンクファイルが生成されている(ビルド時にこのフォルダが生成される?)

https://i.gyazo.com/6ce645a0ff023c80f467acea23aa7cba.png

例えばこういうBankAssetをUE4で作る、このアセット自体はContent内の作成した位置に.uasset形式で存在している、あくまでアセットなのでバンク本体ではない

ここでGenerateBankをこのアセットに対して行うと(イベントの設定はちゃんとやっておく)、先程確認したWwiseAudio\指定プラットフォーム内に.bnk形式のファイルが生成される

https://i.gyazo.com/5251dda7e60824354c1e3081805973ec.png

これがAudioBankの本体で、前回作成したBankもここに存在しているはず

補足: Init.bnkについて

* 初期化バンクと呼ばれる特別なバンクで、プロジェクト全体の情報が入っている
* バンク生成時、自動的に初期化バンクも生成される

サウンドバンクの仕組み

WwiseでのAudioBank設定

これまではUE4側からGenerateBankを行っていたが、もちろんWwise側でもこれはでき、イベントの関連付けもそちらで行える
ただ、UE4側で作成、生成したBankは一切Wwise側から確認できないので、WwiseからのBank設定と生成を一からやっていく

https://i.gyazo.com/5ec7b9167339fcf81ad63c91777d4cfc.png

ここで一度、これまでに生成されたバンクを全て消しておく、なんとなく気持ちの問題です

https://i.gyazo.com/31ad3d5ba92644818fddc79b63da98ee.png

Wwiseのプロジェクトを立ち上げ、SoundBanksタブから、SoundBanks\Default Work Unitを右クリック、New Child > SoundBank でSoundBankObjectを作成、適当な名前をつけておく
次にメニューのLayouts > SoundBankを押し、エディタのレイアウトを変更すると、中央にSoundBankManagerと言うものが現れる

https://i.gyazo.com/4f3ddf619c81e1c040380ed6c14ef0ec.png

ここでEventsタブを開き、Bankに入れたいEventObjectをいま作成したAudioBankObjectに向かってDDする、これでイベントとバンクの関連付けができる

Bankの書き出し先の設定

次にビルド設定を行う、いまBankのGenerateをやると、.bnkファイルは

[UE4プロジェクト]\[Wwiseプロジェクト]\GeneratedSoundBanks\Windows

ここに書き出されてしまう、これを先程の

[UE4プロジェクト]\Content\WwiseAudio\Windows

こちらに書き出すように設定する必要がある

https://i.gyazo.com/eeec78ca85c0202652bc625ff7a6d5bf.png

ウインドウ上部のUser Settingsを押すとSoundBanks Settingウインドウが立ち上がる

https://i.gyazo.com/c9f4ec9e9af0d7c496ec599a5e56c0fb.png

中央にあるOverride Project SoundBank Pathsにチェックを入れ、WindeosのPathを [UE4プロジェクト]\Content\WwiseAudio\Windows にして、右下のOKを押す、これで.bnkがUE4が認識できる位置に書き出されるようになった

WwiseでのBank生成

ProjectExplorerでもSoundBankManagerでも、目的のSoundBankObjectを右クリックして、Generate SoundBank for Current Platformをクリック、ログが表示され、問題ないようなら無事生成されている

https://i.gyazo.com/d3c79838cf885c4100a6644adc91add4.png

一応エクスプローラでも確認しておく、[UE4プロジェクト]\Content\WwiseAudio\Windowsを見て、Wwiseで作成したバンクがあるようなら大丈夫

UE4でのBank読み込み

前回とは違ってWwiseでBankを生成したため、これをUE4に伝えないといけない
Eventと違い、Bankは.uassetで持っておく必要があるため、いま生成された.bnkをUE4のコンテンツブラウザにDDする

https://i.gyazo.com/235f6e0d45c4ae6c08edbd77984a3d49.png

これで自動的に.uassetがUE側に追加される、次に生成されたアセットを右クリックして、RefreshAllBanksでバンクのリロードを行っておく

UE4でのイベントコール

https://i.gyazo.com/a4f609db9e5906c3e89a0f4122c5a85f.png

前回作った処理を少し修正して、EventNameの方でEventを指定する、これで全部の作業が終了したので起動して無事音がなれば今回は全クリです

まとめ: どういったワークフローになるのか

Wwise

  • 素材取り込み
  • イベントを作成
  • Bankのビルド

UE4

  • 新たに.bnkが増えるたびに.uasset化
  • 既存の.bnkをWwiseでビルドし直したなら、RefreshAllBanks(UE4が起動中なら)
  • イベントは直接FStringで呼ぶ