UE4でとりあえず音を鳴らしてみる
すこしこれまでの内容と重複する部分があるので適当に飛ばして下さい
WwiseとUE4のパイプライン
UE4からEventというものをWwiseに向けて呼び、WwiseでそのEventが処理され、最終的にUE4で音が発生すると言うのがおおまかな流れ、なので
これをやっていきます
UE4プロジェクトの用意
適当にやって下さい
UE4インテグレート、Wwiseプロジェクトの作成
- WwiseLauncherを立ち上げ、UNREAL ENGINEタブを開く
- 作成したプロジェクトがおそらく表示されていないので、RECENT UNREAL ENGINE PROJECTSの右側にあるハンバーガーメニューからBrouseforProjectで、作成したプロジェクト.uprojectを選ぶ
- 作成したプロジェクトが表示されたら、Integrate Wwise into Projectボタンで初期設定を行いプラグインをUE4プロジェクトに追加する、この際Wwiseプロジェクトも自動生成される
Wwiseの起動
- インテグレートが終了すると、WwiseLauncherからWwiseProjectの起動ができるようになっている
- あるいは、指定プロジェクトフォルダ内の[プロジェクト名]_WwiseProjectフォルダを開き、.wproj拡張子のものを起動
Wwiseに音声を取り込む
Wwiseは基本的に音声を取り込み、Eventを作成することをやるアプリケーション
とりあえず音声を読み込む必要があり、素材は適当に用意する、.wav形式
左上のProjectExplorerでAudioタブを開き、音声をDDすることでインポートできる、この際Actor-MixerHierarchyと書かれているフォルダに重ねるようにする
Wwiseでは全てのオブジェクトは特定のHierarchyに属している必要があり、音声素材(AudioFile)はActor-MixerHierarchy、あるいはInteractiveMusicHierarchyで扱われる(Houdiniを触ったことがある人は、Channelっぽいかんじ)
今回はActor-MixerHierarchyの上にDDしたので、Actor-MixerHierarchy内にAudioObjectが作成される
DDするとインポート設定ウインドウが表示されるが、特にいじらずにOKを押す
Eventを作成する
ProjectExplorerでEventsタブをおすと、Audioタブとは違うツリー構造が表示される、Wwiseには様々なHierarchyが存在していて、ProjectExplorerのタブを押すと、ある程度似たジャンルのHierarchyがまとめて表示されるといった感じになっている
Eventは想像できる通りEventsHierarchyに作成する、Events\Default Work Unitを右クリックして、New Child > Play を押すと新たなイベントが作成される
この時の名前がそのままイベントの名前となるので、適当にきめておく
作成したEventをクリックすると、中央のウインドウからEvent内容を構築できる
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を取得してるんか??という疑問がある
Wwiseではイベントと音声素材をAudioBankという塊にビルドし、UE4はWwiseではなくこのAudioBankにむけてイベントを送っている
UEでの作業はイベントを呼ぶ処理と、このAudioBankの作成が必要
AudioBankの作成
とりあえず適当にレベルを用意しておく、次にコンテンツブラウザでAudioBankAssetを作成する
コンテンツブラウザのAddNewから、Audiokinectic > AudiokinecticBankアセットを作成し、適当な名前をつけておく、とりあえずこれでUE4側にAudioBankの用意ができた
Eventの作成
EventをAudioBankと関連付ける必要がある
AddNewから、Audiokinectic > AudioKineticEventアセットを作成、名前はWwiseで呼びたいイベントと同じものをつける
次にこのアセットをダブルクリックしエディタに入る
Bankという項目があり、これでどのBankにビルドするかを指定する、ここに先ほど作成したAudioBankを選択しておく
AudiokinecticComponentの作成
レベル全体になるBGMのようなものでも、そのインスタンスがレベル内に必要で、WwiseではこれをAudioKinecticComponentでやっている
コンテンツブラウザでActor継承のBPを作成し、コンポーネントエディタ > Add Compnentで"Ak"と打ち込み、AudioKinecticComponentを追加する
このBPをレベル内に配置しておく
イベントの呼び出し
とりあえずレベルBPで処理を書く、キーボードの1を押したらイベントを呼ぶという処理を作る
PostEvent()ノードがそれで、AkEvent引数には先ほど作成したEventアセット、Actorにはレベル内に配置したものの参照を渡す
Bankのビルド
最後にAudioBankをビルドする、やり方は2通りあって、
- AudioBankAssetを右クリック、Generate Selected SoundBank
- ツールバーのビルドシェルフよりGenerate SoundBanks
どちらもこれを押すとGenerateSoundBanksウインドウが立ち上がる
他にもSoundBankを作成しているならそれらも表示される、目的のBankと指定プラットフォームを選び右下のGenerateでビルドされる
2の方法で作成した場合は、もうひと手間あって、どれでも良いのでSoundBankAssetを右クリックして、Refresh All Banksをクリック、これは更新されたBankをリロードさせるコマンドで、1の方法でやった場合はここまで自動でやってくれているよう
この状態でゲームを起動し、1キーを押し無事音がなっていたらクリアです、鳴らないならどっかがおかしいかこの解説がおかしいか
いつビルドを行うべきか
とりあえず今回はここまでで、最後にビルドで何をやっているかという図をやると
- ビルド時にWwiseプロジェクトの設定を見に行く、Wwiseで保存していないものは取得されない、Wwiseが起動している必要はない
- ビルド後にAkEventAssetのBank設定を変えても、違うBankを見に行くとかはしない
- ビルドを実行するタイミングは、Wwiseで何か設定を変えたらビルド、でUE4反映といったかんじ
- UE4側からはBankがあるかどうかだけなので、Wwiseの起動は関係ない
ちょっとBank周りの仕様がわかりにくいので、自分で設定を変えたり変えなかったりで把握して下さい
次はBank生成まわりをWwiseのみで完結させようです
miyahuji111.hatenablog.com