#memo

indiedev太郎

UE4でとりあえず音を鳴らしてみる

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

すこしこれまでの内容と重複する部分があるので適当に飛ばして下さい

WwiseとUE4のパイプライン

UE4からEventというものをWwiseに向けて呼び、WwiseでそのEventが処理され、最終的にUE4で音が発生すると言うのがおおまかな流れ、なので

  1. Wwiseに音声を取り込む
  2. Wwiseでイベントを作成する
  3. UE4からイベントを呼ぶ処理を作る

これをやっていきます

UE4プロジェクトの用意

適当にやって下さい

UE4インテグレート、Wwiseプロジェクトの作成

  1. WwiseLauncherを立ち上げ、UNREAL ENGINEタブを開く
  2. 作成したプロジェクトがおそらく表示されていないので、RECENT UNREAL ENGINE PROJECTSの右側にあるハンバーガーメニューからBrouseforProjectで、作成したプロジェクト.uprojectを選ぶ
  3. 作成したプロジェクトが表示されたら、Integrate Wwise into Projectボタンで初期設定を行いプラグインをUE4プロジェクトに追加する、この際Wwiseプロジェクトも自動生成される

Wwiseの起動

  1. インテグレートが終了すると、WwiseLauncherからWwiseProjectの起動ができるようになっている
  2. あるいは、指定プロジェクトフォルダ内の[プロジェクト名]_WwiseProjectフォルダを開き、.wproj拡張子のものを起動

Wwiseに音声を取り込む

Wwiseは基本的に音声を取り込み、Eventを作成することをやるアプリケーション
とりあえず音声を読み込む必要があり、素材は適当に用意する、.wav形式

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

左上のProjectExplorerでAudioタブを開き、音声をDDすることでインポートできる、この際Actor-MixerHierarchyと書かれているフォルダに重ねるようにする

Wwiseでは全てのオブジェクトは特定のHierarchyに属している必要があり、音声素材(AudioFile)はActor-MixerHierarchy、あるいはInteractiveMusicHierarchyで扱われる(Houdiniを触ったことがある人は、Channelっぽいかんじ)
今回はActor-MixerHierarchyの上にDDしたので、Actor-MixerHierarchy内にAudioObjectが作成される

DDするとインポート設定ウインドウが表示されるが、特にいじらずにOKを押す

補足: Work Unitについて
  • Wwiseオブジェクトを管理するメタ情報が載っているxml、拡張子は.wwu
  • WwiseオブジェクトはWorkUnit内でしか存在しえないため、初期プロジェクトではDefault Work Unitが予め用意されている
  • このためDefaultWorkUnitはDelete不可能となっている、エクスプローラー側から消しても次回起動時に生成される
  • 自由にWorkUnitは追加することができる

Work Unitとは

Eventを作成する

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

ProjectExplorerでEventsタブをおすと、Audioタブとは違うツリー構造が表示される、Wwiseには様々なHierarchyが存在していて、ProjectExplorerのタブを押すと、ある程度似たジャンルのHierarchyがまとめて表示されるといった感じになっている

Eventは想像できる通りEventsHierarchyに作成する、Events\Default Work Unitを右クリックして、New Child > Play を押すと新たなイベントが作成される
この時の名前がそのままイベントの名前となるので、適当にきめておく

作成したEventをクリックすると、中央のウインドウからEvent内容を構築できる

https://i.gyazo.com/085a34337e7625e771d0f92cf18ca50c.png


EventはActionと呼ばれる物を積み重ねていって定義していく、Actionには指定したSoundObjectを再生するやらなんやらがあって、中央のEventActionsを操作することでこれらができる

先程PlayEventを作成しているので、このEventには既にPlayActionが積まれている
アクションは自由に作成、削除ができ、作成できるイベントの種類は、デフォルトで積まれているアクションの違いのテンプレートでしかない

現在PlayAction内のObjectの部分がMissingとなっており、ここに先程インポートし作成したAudioObjectを指定する必要がある、
EventActionsコンテナ上部のBrowseボタン、あるいはMissing上で右クリック、Browseから先程のAudioObjectが選択できるのでやる、これでこのイベントが呼ばれるとインポートした音が再生されるようになりました

とりあえずこれでWwiseで行う最小限の作業が終了したので保存する、保存しておかないと設定が反映されないので注意、Wwiseでの設定を行い、保存しさえすれば以降はWwiseを終了してもOK

UE4でWwiseのイベントを呼ぶ

イベント関連の処理を作る前に、もう少し具体的なパイプラインの中身をみる

完成したゲームをパッケージ化して遊んでもらう時を想像して、Wwiseプロジェクトフォルダも一緒のフォルダに入れて直接パラメーターなりwavを取得してるんか??という疑問がある

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


Wwiseではイベントと音声素材をAudioBankという塊にビルドし、UE4はWwiseではなくこのAudioBankにむけてイベントを送っている

UEでの作業はイベントを呼ぶ処理と、このAudioBankの作成が必要

AudioBankの作成

とりあえず適当にレベルを用意しておく、次にコンテンツブラウザでAudioBankAssetを作成する

https://i.gyazo.com/2512a2a20b1ee732a41ecc777691e348.png

コンテンツブラウザのAddNewから、Audiokinectic > AudiokinecticBankアセットを作成し、適当な名前をつけておく、とりあえずこれでUE4側にAudioBankの用意ができた

Eventの作成

EventをAudioBankと関連付ける必要がある

AddNewから、Audiokinectic > AudioKineticEventアセットを作成、名前はWwiseで呼びたいイベントと同じものをつける

https://i.gyazo.com/28eed2fb869bbcaf23eaa6fc447a3e9f.png

次にこのアセットをダブルクリックしエディタに入る
Bankという項目があり、これでどのBankにビルドするかを指定する、ここに先ほど作成したAudioBankを選択しておく

AudiokinecticComponentの作成

レベル全体になるBGMのようなものでも、そのインスタンスがレベル内に必要で、WwiseではこれをAudioKinecticComponentでやっている

コンテンツブラウザでActor継承のBPを作成し、コンポーネントエディタ > Add Compnentで"Ak"と打ち込み、AudioKinecticComponentを追加する

https://i.gyazo.com/7e132e56f761376fdd459329c8dad1d9.png

このBPをレベル内に配置しておく

イベントの呼び出し

とりあえずレベルBPで処理を書く、キーボードの1を押したらイベントを呼ぶという処理を作る

https://i.gyazo.com/53c16041629a5951a3cd8c1059690808.png

PostEvent()ノードがそれで、AkEvent引数には先ほど作成したEventアセット、Actorにはレベル内に配置したものの参照を渡す

Bankのビルド

最後にAudioBankをビルドする、やり方は2通りあって、

  1. AudioBankAssetを右クリック、Generate Selected SoundBank
  2. ツールバーのビルドシェルフよりGenerate SoundBanks

どちらもこれを押すとGenerateSoundBanksウインドウが立ち上がる

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

他にもSoundBankを作成しているならそれらも表示される、目的のBankと指定プラットフォームを選び右下のGenerateでビルドされる

2の方法で作成した場合は、もうひと手間あって、どれでも良いのでSoundBankAssetを右クリックして、Refresh All Banksをクリック、これは更新されたBankをリロードさせるコマンドで、1の方法でやった場合はここまで自動でやってくれているよう

この状態でゲームを起動し、1キーを押し無事音がなっていたらクリアです、鳴らないならどっかがおかしいかこの解説がおかしいか

いつビルドを行うべきか

とりあえず今回はここまでで、最後にビルドで何をやっているかという図をやると

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

  • ビルド時にWwiseプロジェクトの設定を見に行く、Wwiseで保存していないものは取得されない、Wwiseが起動している必要はない
  • ビルド後にAkEventAssetのBank設定を変えても、違うBankを見に行くとかはしない
  • ビルドを実行するタイミングは、Wwiseで何か設定を変えたらビルド、でUE4反映といったかんじ
  • UE4側からはBankがあるかどうかだけなので、Wwiseの起動は関係ない

ちょっとBank周りの仕様がわかりにくいので、自分で設定を変えたり変えなかったりで把握して下さい



次はBank生成まわりをWwiseのみで完結させようです
miyahuji111.hatenablog.com