目次

UnrealでWwise Spatial Audioを使う

このチュートリアルでは、Wwise 2017.1に導入された新機能や、Unrealプラグインに新しく導入されたSpatial Audio機能について紹介します。ゲームにスペーシャルオーディオのコンポーネントを実装するためのワークフローを説明し、スペーシャルオーディオ機能(例えば3Dバス、3Dスペーシャリゼーションされたサウンドエフェクト、Reflect Effectプラグインなど)の初期化をWwisオーサリングツールで行ったり、Unreal Engineを使いスペーシャルオーディオコンポーネントをゲームにインポートしたりするための、技術的情報を提供します。

WwiseやUnreal Engineを使いこなすための、基本的な知識のある方を対象としています。とはいえ、このドキュメントは、どのような経歴のユーザーでもチュートリアルを完了できるように詳しく書かれています。更に詳しい情報が必要な場合は、Unrealドキュメンテーションも参照してください。

このチュートリアルを通して4つのバーチャル音響ゾーンを作成しますが、それぞれのバーチャル音響ゾーンが、新Spatial Audioプラグインの1つの機能のデモとなっています。各エリアの中心にアンビエントサウンドが配置され、これがエミッタ―の役割を果たします。リスナーがデフォルトとして設定され、リスナーはこの場合はカメラに対応して、カメラは様々な音響環境を探索できるように、自由に動かせます。

セクション A、セクション B、セクション Cは、正しく作業できる環境を準備するための必須の手順で、この順番通りに完了させるべきです。続くセクション(主に DEFG)は全て、最初の3セクションが完了すれば、別々に、順不同で完了させることができます。

Note.gif
注記: Reflectプラグインを使うセクションを完了させるには、適切なライセンスが必要です。

A - プロジェクトの設定

WwiseとUnrealの最新バージョンを使い、以下の手順に従い、自分の作業環境を準備します。

  1. Epic Launcherから、Unrealを起動する
  2. 新規Unreal Project C++ Blank プロジェクト(スターターコンテンツなし)を作成して、名前をTestSpatialAudioとする。
  3. Unrealを閉じる
  4. Wwise Launcherを起動する。
  5. Wwise をインストールする。
  6. Unreal Engineタブを選択する。
  7. Integrate Wwise into Project...ボタンをクリックする。
  8. Open in Wwiseボタンを使ってWwiseを起動する。
  9. Open in Unrealボタンを使って、Unrealを起動する。

B - 事前準備

このセクションで、床を敷いたり壁やポータル(開口部)を設置したりして、4つの異なるエリアに分けてから、4つの音響環境にして、その中にスペーシャルオーディオのコンポーネントを配置します。

  1. 床を選択して、新Transformを設定する。
    • Locationを、(x=0.0, y=0.0, z=0.0) に設定する。
    • Scaleを、 (x=2.0, y=2.0, z=1.0) に設定する。
  2. 8つのCubeを使って壁を作成して、以下の座標と場所にする:
    • Location (x=775.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0).
    • Location (x=225.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0).
    • Location (x=-225.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0).
    • Location (x=-775.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0).
    • Location (x=0.0, y=-775.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0).
    • Location (x=0.0, y=-225.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0).
    • Location (x=0.0, y=225.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0).
    • Location (x=0.0, y=775.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0).
  3. Playerスタートを、以下に移動する:
    • Location (x=-500.0, y=-500.0, z=100.0).
  4. 部屋同士が見分けられるように、以下のPointLightを、指定された場所に、Intensityの設定を50,000として、追加する:
    • Red, Location (x=-500.0, y=-500.0, z=500.0).
    • Blue, Location (x=500.0, y=-500.0, z=500.0).
    • Green, Location (x=500.0, y=500.0, z=500.0).
    • Yellow, Location (x=-500.0, y=500.0, z=500.0).
  5. "NewMap"として保存する。
    part_b_1_map.png

    Build working environment

C - Unrealでレファレンスサウンドを追加

最初のゾーンで、3Dポジションのサウンドを導入して、これは、ソース周りでリスナーが動き回るのに従ってパンニングさせたり、オクルージョン・オブストラクションを適用させたりします。オクルージョンやオブストラクションが起きるのは、リスナー(主にメインカメラ)がエリア外に移動して、壁、床、天井などの不透明なコンポーネントの裏に隠れた場合です。

  1. Wwiseプロジェクトで、Actor-Mixer HierarchyのDefault Work Unitに、新Sound SFXを作成して、名前をReferenceSoundとして、インパルスサウンドをインポートする。
    part_c_1_sound_sound_sfx.png

    Sound SFXを作成する

  2. 必ず Use game-defined auxiliary sends と Listener Relative Routingを有効にし、3D Spatializationを Position に設定します。
    part_c_2_sound_sound_positioning.png

    3D SpatializationをPositionに設定

  3. 関連するEventの"PlayReferenceSoundTest"を作成して、そこに"ReferenceSound"ボイスをドラッグ&ドロップする。
    part_c_3_sound_event.png

    サウンドEventを作成する

  4. プロジェクトを保存する。
  5. Unrealで、Window > Wwise Pickerを開いて、Content Browserに"PlayReferenceSoundTest" Eventをドラッグする。
    part_c_4_wwise_picker.png

    Wwise PickerからContent Browserへドラッグする

  6. "PlayReferenceSoundTest"をダブルクリックして、SoundBankリストから直接、新SoundBankを作成して、名前を "TestSpatialAudioBank" とする。
    part_c_5_create_sound_bank.png

    SoundBankを作成する

    part_c_6_select_sound_bank.png

    SoundBankを選択する

  7. "PlayReferenceSoundTest" Eventをシーン内にドラッグすることで、新 AkAmbientSound を作成する。
    • Locationを (x=-500.0, y=-500.0, z=100.0) に設定する。
      part_c_7_drag_event_as_akambiant_sound.png

      AkAmbientSoundを作成する

  8. BlueprintsメニューでLevel Blueprintを開き、"Event BeginPlay"と"Event Tick"を削除する。
  9. 新しく作成された"PlayReferenceSoundTest"アイテムを、World OutlinerからBlueprintにドラッグする。
  10. Blueprintバックグランドを右クリックして、"Left Mouse Button"を探す。
  11. もう一度Blueprintバックグランドを右クリックして、"Post Event"を探す。
  12. Pressed outletを、Post Event Execに接続して、"PlayReferenceSoundTest"コンポーネントを、Actor inletに接続する。
  13. Post Eventで、"PlayReferenceSoundTest" AkEventを選択する。
    part_c_8_blueprints.png

    アンビエントサウンドをトリガーするために、ユーザーインプットを追加する

  14. 上部メニューで、Build > Generate SoundBanks....を選択して、Windows用にSoundBankを生成する。
    part_c_9_generate_sound_banks.png

    ビルドメニューからSoundBanksを生成する

  15. SoundBankの生成が成功したことを、必ずOutput Logで確認すること。
    part_c_10_output_log_generate_soundbank.png

    SoundBank生成用Output Log

  16. シーンをスタートする。これで、マウス左ボタンを押すと、3Dにスペーシャル化されたサウンドの再生が聞こえるはず。

D - 後期リバーブの追加

2つ目のエリアのデモは、限定されたエリア内で AkAmbientSound に適用したLate Reverbを入れるために、 AkSpatialAudioVolume を使った例です。

  1. WwiseプロジェクトのMaster Audio Busの下にAuxiliary Busを作成して、名前を "TestReverbAuxBus" とする。
    part_d_1_create_aux_bus_no_game_defined.png

    リバーブ用にAuxiliary Busを作成する

  2. Wwise RoomVerb Effectを追加して、事前に定義したShareSetのCathedrals > Holy を使う。
  3. 2つ目のEventを作成して、名前を"PlayLateReverbTest" として、その上に"ReferenceSound" Sound SFXをドラッグする。
    part_d_2_create_play_test2_event.png

    Play Eventを作成する

  4. プロジェクトを保存する。
  5. Unrealで、シーン内で AkSpatialAudioVolume ボリュームをVolumes選択肢からドラッグする。
    • Locationを (x=500.0, y=-500.0, z=100.0) に設定する。
    • Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
      part_d_3_create_new_akspatial_audio_volume.png

      新スペーシャルオーディオボリュームを作成する

  6. 必ずEnable Late Reverbだけが有効であることを確認して、Enable Surface ReflectorsEnable Roomが、このAkSpatialAudioVolumeに関して無効のままであることを確認すること。
    part_d_4_select_enable_late_reverb.png

    「Enable Late Reverb」を選択する

  7. 新しいTestReverbAuxBusとPlayLateReverbTestを、Wwise PickerからContent Browserへドラッグする。
    part_d_5_wwise_picker_drag_auxiliary_bus_and_audiokinetic_event.png

    Wwise Pickerから、Auxiliary BusとEventをドラッグする

  8. PlayLateReverbTestをダブルクリックして、TestSpatialAudioBankにアサインする。
    part_d_6_assign_banks.png

    バスとEventをBankに追加する

  9. 新しいAkSpatialAudioVolumeを選択して、Late Reverbセクションで、Auxiliary BusをTestReverbAuxBusに設定する
    part_d_7_select_late_reverb_aux_bus.png

    レイトリバーブAuxiliary Busを選択する

  10. "PlayLateReverbTest" Eventをシーン内にドラッグすることで、AkAmbientSoundを作成する。
    • Locationを (x=500.0, y=-500.0, z=100.0) に設定する。
      part_d_8_add_event2_into_the_scene.png

      シーン内にEventを追加する

  11. 手順 C-11から C-13までを、PlayLateReverbTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
  12. SoundBanksを再生成する。
  13. シーンをスタートして、ボリュームの中に入る。PlayReferenceSoundTestをトリガーした結果、リバーブを適用した音となるはずである。
Note.gif
注記: もしEnable RoomAkSpatialAudioVolumeでチェックされている場合は、 リバーブが入っているAuxiliary Busの3Dポジショニングも、有効にしておく必要があります。

E - Surface Reflectorの追加

3つ目のエリアのデモは、音響環境における音の伝播によるアーリーリフレクションをシミュレーションするために使う、Surface Reflectorを使った例です。波の伝播をモデル化するためにイメージソース方式を使い、ゲームのジオメトリから適切なタイムディレイ(距離)、振幅、フィルターのパラメータなどを引き出して、リアルな音響環境の再現を試みます。リアルタイムの演算で、音波が音のエミッタ―から、相対的な位置にあるリスナーに届くまでの様々なパスを、検証します。結果として、音響環境の空間を強力に感じ取ることができるエフェクトが得られます。実際に、Wwise Reflect Effect Editorで反射を見ることができ、各反射の距離や振幅が表示されます。

  1. Wwiseで3つめのEventを作成して、名前を "PlayReflectTest" として、その上に "ReferenceSound" Sound SFXをドラッグする。
    part_e_1_create_event_in_wwise.png

    Wwiseで新Eventを作成する

  2. Master Audio BusにAuxiliary Busを作成して、名前を "TestReflectAuxBus" として、それにReflectプラグインを設定する。
    part_e_2_add_reflect_to_aux_bus.png

    Wwiseで新Eventを作成する

  3. 必ず Use game-defined auxiliary sends を選択し、Listener Relative Routingを有効にし、3D Spatializationを None に設定します。
    part_e_3_enable_2d_positionning.png

    Auxiliary Busの3D SpatializationをNoneに設定

  4. ReflectのMax Distanceを10,000に設定して、Speed of Soundを34,500に設定する。
    part_e_4_set_speed_of_sound.png

    Reflect Speed of SoundとMax Distanceを設定する

  5. プロジェクトを保存する。
  6. Unrealで、PlayReflectTestとTestReflectAuxBusを、Wwise PickerからContent Browserにドラッグ&ドロップする
  7. PlayReflectTest Eventをダブルクリックして、TestSpatialAudioBankにアサインする。
  8. シーン内にPlayReflectTestをドラッグ&ドロップすることで、AkAmbientSoundを作成する:
    • Locationを (x=500.0, y=500.0, z=100.0) に設定する。
  9. AkSpatialAudioVolumeをシーン内にドラッグ&ドロップする。
    • Locationを (x=500.0, y=500.0, z=100.0) に設定する。
    • Relative scaleを (x=5.0, y=5.0, z=1.0) に設定する。
  10. 必ず "Enable Surface Reflectors" が有効であることを確認して、"Enable Late Reverb"や"Enable Room"が、このAkSpatialAudioVolumeに関して無効のままであることを確認すること。
    part_e_5_add_spatial_audio_volume_with_options.png

    スペーシャルオーディオボリュームをシーンに追加する

  11. PlayReflectTest AkAmbientSound が、AkSpatialAudioVolume内にあるはずである。
  12. PlayReflectTest AkAmbientSoundを選択して、Spatial Audioの選択肢として"Early Reflection Aux bus"を"TestReflectAuxBus"に設定する。
  13. また、Debug Drawを有効にして、1次リフレクションを、この AkAmbientSound (Ak Component > Spatial Audio > Debug Draw) に関して表示することができる。
    part_e_6_event_spatial_and_debug_draw_options.png

    反射のDebug drawオプション

  14. 手順 C-11から C-15までを、PlayReflectTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
    part_e_7_blueprints_add_user_inputs.png

    音をトリガーするための、ユーザーインプット

  15. SoundBanksを再生成する。
  16. シーンをスタートして、ボリュームの中に入る。反射が描かれ、音が、PlayReflectTestをトリガーするとReflectプラグインを使ったAuxiliary Busにルーティングされるのが分かります。

F - 部屋やポータルの追加

リアルな音響環境では、ポータル(窓などの開口部分)が、発信された音の音量外にいるリスナーに対する新たな音源の役割を果たします。このような状況をモデル化するのに便利な AkAcousticPortals は、Auxiliary Busを使ってボリュームの聞こえる部分をルーティングして、新たな3D音源として隣接する音響空間で露出させます。

  1. Wwiseプロジェクトで新Auxiliary Busを作成して、名前を "TestPortalAuxBus" とする。
  2. 必ずUse game-defined auxiliary sendsを選択して、3Dポジショニングを有効にすること。
    part_f_1_create_aux_bus_3d_positioning.png

    3D SpatializationのAuxiliary Busを新しく作成

  3. Wwise RoomVerb Effectを、Room_Mediumパラメータ付きで、追加する。
    part_f_2_add_reverb_to_aux_bus.png

    リバーブをAuxiliary Busに追加する

  4. 4つ目のEventを作成して、名前を "PlayPortalTest" として、その上に "ReferenceSound" Sound SFX をドラッグする。
    part_f_3_add_play_event.png

    新Play Eventを追加する

  5. プロジェクトを保存する。
  6. Unrealで、PlayPortalTestを、Wwise PickerからContent Browserにドラッグ&ドロップする。
  7. TestPortalAuxBusを、Content Browserにドラッグ&ドロップする。
    part_f_4_drag_event_and_auxbus_from_wwise_picker.png

    EventとAuxiliary Busを、Content Browserに追加する

  8. "PlayPortalTest" Eventをダブルクリックして、TestSpatialAudioBankにアサインする。
    part_f_5_select_soundbanks.png

    EventのSoundBanksを選択する

  9. 新しいAkSpatialAudioVolumeを追加する。
    • Locationを (x=-500.0, y=500.0, z=100.0) に設定する。
    • Absolute Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
  10. "TestPortalAuxBus"を、Auxiliary Busとして、Late Reverbセクションで選択する。
    part_f_6_add_spatial_audio_select_late_reverb.png

    シーンにスペーシャルオーディオボリュームを追加して、後期リバーブAuxiliary Busを選択する

  11. 必ずEnable Late ReverbEnable Roomの両方が有効であることを確認して、Enable Surface Reflectorsが、このAkSpatialAudioVolumeに関して無効のままであることを確認すること。
    part_f_7_make_sure_room_enabled.png

    必ず部屋を有効にする

  12. 手順 F-1から F-7までを再現して、"TestReferenceAuxBus"という別の後期リバーブAuxiliary Bus(RoomVerbプリセット付き)を追加する。
    part_f_1_create_aux_bus_3d_positioning2.png

    3D SpatializationのAuxiliary Busを新しく作成

    part_f_2_add_reverb_to_aux_bus2.png

    リバーブをAuxiliary Busに追加する

  13. 別のAkSpatialAudioVolumeを追加する。
    • Locationを (x=-500.0, y=-500.0, z=100.0) に設定する。
    • Absolute Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
  14. 必ずEnable Late ReverbEnable Roomの両方が有効であることを確認して、Enable Surface Reflectorsが、このAkSpatialAudioVolumeに関して無効のままであることを確認すること。
    part_f_8_add_audio_volume_enable_room.png

    2つめのオーディオボリュームを追加して、部屋を有効にする

  15. "TestReferenceAuxBus"を、Auxiliary Busとして、Late Reverbセクションで選択する。
    part_f_8_add_audio_volume_enable_room2.png

    レイトリバーブAuxiliary Busを選択する

  16. 3つAkAcousticPortalを追加する。
    • Location (x=-500.0, y=0.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0).
    • Location (x=0.0, y=-500.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0) Rotation (x=0.0, y=0.0, z=90.0).
    • Location (x=-500.0, y=0.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0) Rotation (x=0.0, y=0.0, z=90.0).
      part_f_9_add_acoustic_portals.png

      新acoustic portalをシーン内へドラッグする

  17. 新しいPortalを選択して、"Ak Acoustic Portal"セクションで初期ステートをOpenに設定する。
    part_f_10_make_sure_portal_is_opened.png

    ポータルを必ず開けておく

  18. PlayPortalTestをシーン内にドラッグ&ドロップする。
    • Locationを (x=-500.0, y=500.0, z=100.0) に設定する。
      part_f_11_add_event_into_the_scene.png

      新Eventをシーン内へドラッグする

  19. 手順 C-11 から C-13までを、PlayPortalTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
  20. SoundBanksを、Windows用に再生成する。
  21. シーンをスタートして、スタート位置から動かない。PlayPortalTestをトリガーすると、ポータルから音が聞こえてくるはずです。
Note.gif
注記: AkAcousticPortalの向きは、それが接続する部屋同士が、ローカルのY軸方向に沿って配置されている必要があります。ポータルを選択する時に、分かりやすいようにポータル周りに黄色い帯が表示されます。黄色い線が、フロントエリアとバックエリアの間の境界線を示します。部屋同士が重なり合っている場合は、優先順位が最も高い部屋を選択します。
Note.gif
注記: もしワールドにスペーシャルオーディオの部屋が1つ以上ある場合は、このスペーシャルオーディオ部屋が提供する追加情報が取り込まれるので、オクルージョン・オブストラクションのアルゴリズムが変化します。エミッタ―とリスナーの間のラインオブサイト(直線)テストが失敗した場合は:
  1. リスナーとエミッタ―が同室にある場合は、Wwiseのオブストラクションフィルター(ドライパスのみ)が設定される。
  2. エミッタ―とリスナーが別室にある場合は、Wwiseのオブストラクションフィルター(ウェットパスとドライパスの両方)が設定される。
  3. スペーシャルオーディオの部屋がない場合、アルゴリズムは、リスナーに対するラインオブサイト(直線)が成立していない音が全てオクルージョンで遮られているものと解釈して、Wwiseオクルージョンフィルター(ウェットパスとドライパスの両方)が設定される。
Note.gif
注記: セクションFの部屋を追加すると、今までのセクションで作成した音で、新しい部屋の外にあるものは、リスナーが室内にいるときにオクルージョンの対象となるのが分かります。同様に室内の音も、リスナーが室外にいるときはオクルージョンが適用されます。

Wwiseでポータルのシャドウリージョンのフィルターレスポンスを微調整するには、Project SettingsのObstruction/Occlusionタブを開きます。

part_g_6_obstruction_volume_curve.png

オブストラクションボリュームのカーブ

part_g_6_obstruction_LPF_curve.png

オブストラクションLPFのカーブ

part_g_6_occlusion_volume_curve.png

オクルージョンボリュームのカーブ

part_g_6_occlusion_LPF_curve.png

オクルージョンLPFのカーブ

G - Spot Reflectorの追加

Spot reflectorは、今回のチュートリアルで最後に紹介する機能で、主に単一の音の反響のモデル化に使われます。遠くにある仮想の人工または自然の地理的要素をモデル化して、単一の特徴的な反響音を作り出すために使えます。例えば、山脈や大きな壁面などです。エミッターがリスナーのときに、最もよく作用します。Spot reflectorを環境内に落とし込むだけで、エンジンがエミッタ―とリスナー間の適切な音響ディレイを、それぞれの相対的位置や点対象を基に計算します。

  1. Wwiseプロジェクトで新Auxiliary Busを作成して、名前を "TestSpotReflectorAuxBus" として、それにReflectプラグインを設定する。
    part_g_1_add_new_auxbus_with_reflect.png

    Reflect付きの新Auxiliary Busを追加する

  2. 必ず Use game-defined auxiliary sends とListener Relative Routingを有効にし、3D Spatializationを None に設定します。
    part_g_2_make_sure_enable_2d_positioning.png

    必ず3D SpatializationをNoneに設定

  3. ReflectのMax Distanceを10,000に設定して、Speed of Soundを34,500に設定する。
    part_g_2_make_sure_right_speed_of_sound.png

    Reflect's Speed of SoundとMax Distanceを必ず設定する

  4. プロジェクトを保存する。
  5. Unrealで、Wwise Pickerから、TestSpotReflectorAuxBusをContent Browserにドラッグ&ドロップする。
  6. Level Blueprintを開いて:
    • Spot Reflectorをプレイヤーエミッター上で有効にする。
    • "PlayReferenceSoundTest" イベントをプレイヤーエミッターからポストする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
      part_g_modify_player_component.png

      プレイヤーコンポーネントでSpot Reflectorを有効にして、そこからPlayReferenceSoundTestをポストする

  7. 新しい AkSpotReflector オブジェクトをシーンにドラッグする。
    • Locationを (x=-150.0, y=-150.0, z=100.0) に設定する。
  8. AkSpotReflector Object上で、Aux Busの選択肢を"TestSpotReflectorAuxBus"に設定する。
    part_g_5_drag_new_spot_reflector_for_event.png

    新spot reflectorをシーン内へドラッグする

  9. SoundBanksを再生成する。
  10. シーンをスタートする。新しいイベントをプレイヤーエミッターからトリガーするときに、エミッターとspot reflectorfが同じ部屋にあれば、spot reflectorからのリフレクションが聞こえます。"TestSpotReflectorAuxBus" Auxiliary BusでReflectプラグインのEffect Editorを開くと、リストやグラフにリフレクションが表示されます。
作成:  doxygen 1.6.3