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は、正しく作業できる環境を準備するための必須の手順で、この順番通りに完了させるべきです。続くセクション(主にD、E、F、G)は全て、最初の3セクションが完了すれば、別々に、順不同で完了させることができます。
注記: Reflectプラグインを使うセクションを完了させるには、適切なライセンスが必要です。 |
- A - プロジェクトの設定
- B - 事前準備
- C - Unrealでレファレンスサウンドを追加
- D - 後期リバーブの追加
- E - Surface Reflectorの追加
- F - 部屋やポータルの追加
- G - Spot Reflectorの追加
A - プロジェクトの設定
WwiseとUnrealの最新バージョンを使い、以下の手順に従い、自分の作業環境を準備します。
- Epic Launcherから、Unrealを起動する
- 新規Unreal Project C++ Blank プロジェクト(スターターコンテンツなし)を作成して、名前をTestSpatialAudioとする。
- Unrealを閉じる
- Wwise Launcherを起動する。
- Wwise をインストールする。
- Unreal Engineタブを選択する。
- Integrate Wwise into Project...ボタンをクリックする。
- Open in Wwiseボタンを使ってWwiseを起動する。
- Open in Unrealボタンを使って、Unrealを起動する。
B - 事前準備
このセクションで、床を敷いたり壁やポータル(開口部)を設置したりして、4つの異なるエリアに分けてから、4つの音響環境にして、その中にスペーシャルオーディオのコンポーネントを配置します。
- 床を選択して、新Transformを設定する。
- Locationを、(x=0.0, y=0.0, z=0.0) に設定する。
- Scaleを、 (x=2.0, y=2.0, z=1.0) に設定する。
- 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).
- Playerスタートを、以下に移動する:
- Location (x=-500.0, y=-500.0, z=100.0).
- 部屋同士が見分けられるように、以下の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).
- "NewMap"として保存する。
Build working environment
C - Unrealでレファレンスサウンドを追加
最初のゾーンで、3Dポジションのサウンドを導入して、これは、ソース周りでリスナーが動き回るのに従ってパンニングさせたり、オクルージョン・オブストラクションを適用させたりします。オクルージョンやオブストラクションが起きるのは、リスナー(主にメインカメラ)がエリア外に移動して、壁、床、天井などの不透明なコンポーネントの裏に隠れた場合です。
- Wwiseプロジェクトで、Actor-Mixer HierarchyのDefault Work Unitに、新Sound SFXを作成して、名前をReferenceSoundとして、インパルスサウンドをインポートする。
Sound SFXを作成する
- 必ずUse game-defined auxiliary sendsを有効にして、ポジショニングを有効にして、タイプを3Dに設定すること。
ポジショニングタイプを選択する
- 関連するEventの"PlayReferenceSoundTest"を作成して、そこに"ReferenceSound"ボイスをドラッグ&ドロップする。
サウンドEventを作成する
- プロジェクトを保存する。
- Unrealで、Window > Wwise Pickerを開いて、Content Browserに"PlayReferenceSoundTest" Eventをドラッグする。
Wwise PickerからContent Browserへドラッグする
- "PlayReferenceSoundTest"をダブルクリックして、SoundBankリストから直接、新SoundBankを作成して、名前を "TestSpatialAudioBank" とする。
SoundBankを作成する
SoundBankを選択する
- "PlayReferenceSoundTest" Eventをシーン内にドラッグすることで、新
AkAmbientSoundを作成する。
- Locationを (x=-500.0, y=-500.0, z=100.0) に設定する。
AkAmbientSoundを作成する
- Locationを (x=-500.0, y=-500.0, z=100.0) に設定する。
- BlueprintsメニューでLevel Blueprintを開き、"Event BeginPlay"と"Event Tick"を削除する。
- 新しく作成された"PlayReferenceSoundTest"アイテムを、World OutlinerからBlueprintにドラッグする。
- Blueprintバックグランドを右クリックして、"Left Mouse Button"を探す。
- もう一度Blueprintバックグランドを右クリックして、"Post Event"を探す。
- Pressed outletを、Post Event Execに接続して、"PlayReferenceSoundTest"コンポーネントを、Actor inletに接続する。
- Post Eventで、"PlayReferenceSoundTest" AkEventを選択する。
アンビエントサウンドをトリガーするために、ユーザーインプットを追加する
- 上部メニューで、Build > Generate SoundBanks....を選択して、Windows用にSoundBankを生成する。
ビルドメニューからSoundBanksを生成する
- SoundBankの生成が成功したことを、必ずOutput Logで確認すること。
SoundBank生成用Output Log
- シーンをスタートする。これで、マウス左ボタンを押すと、3Dにスペーシャル化されたサウンドの再生が聞こえるはず。
D - 後期リバーブの追加
2つ目のエリアのデモは、限定されたエリア内でAkAmbientSoundに適用したLate
Reverbを入れるために、AkSpatialAudioVolumeを使った例です。
- WwiseプロジェクトのMaster Audio Busの下にAuxiliary Busを作成して、名前を "TestReverbAuxBus" とする。
リバーブ用にAuxiliary Busを作成する
- Wwise RoomVerb Effectを追加して、事前に定義したShareSetのCathedrals > Holy を使う。
- 2つ目のEventを作成して、名前を"PlayLateReverbTest" として、その上に"ReferenceSound" Sound SFXをドラッグする。
Play Eventを作成する
- プロジェクトを保存する。
- Unrealで、シーン内で
AkSpatialAudioVolumeボリュームをVolumes選択肢からドラッグする。
- Locationを (x=500.0, y=-500.0, z=100.0) に設定する。
- Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
新スペーシャルオーディオボリュームを作成する
- 必ずEnable Late Reverbだけが有効であることを確認して、Enable Surface ReflectorsやEnable Roomが、この
AkSpatialAudioVolume
に関して無効のままであることを確認すること。「Enable Late Reverb」を選択する
- 新しいTestReverbAuxBusとPlayLateReverbTestを、Wwise PickerからContent Browserへドラッグする。
Wwise Pickerから、Auxiliary BusとEventをドラッグする
- PlayLateReverbTestをダブルクリックして、TestSpatialAudioBankにアサインする。
バスとEventをBankに追加する
- 新しいAkSpatialAudioVolumeを選択して、Late Reverbセクションで、Auxiliary BusをTestReverbAuxBusに設定する
レイトリバーブAuxiliary Busを選択する
- "PlayLateReverbTest" Eventをシーン内にドラッグすることで、
AkAmbientSound
を作成する。- Locationを (x=500.0, y=-500.0, z=100.0) に設定する。
シーン内にEventを追加する
- Locationを (x=500.0, y=-500.0, z=100.0) に設定する。
- 手順C-11からC-13までを、PlayLateReverbTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
- SoundBanksを再生成する。
- シーンをスタートして、ボリュームの中に入る。PlayReferenceSoundTestをトリガーした結果、リバーブを適用した音となるはずである。
注記: もしEnable RoomがAkSpatialAudioVolume でチェックされている場合は、 リバーブが入っているAuxiliary Busの3Dポジショニングも、有効にしておく必要があります。 |
E - Surface Reflectorの追加
3つ目のエリアのデモは、音響環境における音の伝播によるアーリーリフレクションをシミュレーションするために使う、Surface Reflectorを使った例です。波の伝播をモデル化するためにイメージソース方式を使い、ゲームのジオメトリから適切なタイムディレイ(距離)、振幅、フィルターのパラメータなどを引き出して、リアルな音響環境の再現を試みます。リアルタイムの演算で、音波が音のエミッタ―から、相対的な位置にあるリスナーに届くまでの様々なパスを、検証します。結果として、音響環境の空間を強力に感じ取ることができるエフェクトが得られます。実際に、Wwise Reflect Effect Editorで反射を見ることができ、各反射の距離や振幅が表示されます。
- Wwiseで3つめのEventを作成して、名前を "PlayReflectTest" として、その上に "ReferenceSound" Sound SFXをドラッグする。
Wwiseで新Eventを作成する
- Master Audio BusにAuxiliary Busを作成して、名前を "TestReflectAuxBus" として、それにReflectプラグインを設定する。
Wwiseで新Eventを作成する
- 必ずUse game-defined auxiliary sendsを選択して、このバスの2Dポジショニングを有効にすること。
Auxiliary Busの2Dポジショニングを有効にする
- ReflectのMax Distanceを10,000に設定して、Speed of Soundを34,500に設定する。
Reflect Speed of SoundとMax Distanceを設定する
- プロジェクトを保存する。
- Unrealで、PlayReflectTestとTestReflectAuxBusを、Wwise PickerからContent Browserにドラッグ&ドロップする
- PlayReflectTest Eventをダブルクリックして、TestSpatialAudioBankにアサインする。
- シーン内にPlayReflectTestをドラッグ&ドロップすることで、
AkAmbientSound
を作成する:- Locationを (x=500.0, y=500.0, z=100.0) に設定する。
- AkSpatialAudioVolumeをシーン内にドラッグ&ドロップする。
- Locationを (x=500.0, y=500.0, z=100.0) に設定する。
- Relative scaleを (x=5.0, y=5.0, z=1.0) に設定する。
- 必ず "Enable Surface Reflectors" が有効であることを確認して、"Enable Late Reverb"や"Enable Room"が、この
AkSpatialAudioVolume
に関して無効のままであることを確認すること。スペーシャルオーディオボリュームをシーンに追加する
- PlayReflectTest
AkAmbientSoundが、
AkSpatialAudioVolume
内にあるはずである。 - PlayReflectTest
AkAmbientSound
を選択して、Spatial Audioの選択肢として"Early Reflection Aux bus"を"TestReflectAuxBus"に設定する。 - また、Debug Drawを有効にして、1次リフレクションを、この
AkAmbientSound
(Ak Component > Spatial Audio > Debug Draw) に関して表示することができる。反射のDebug drawオプション
- 手順C-11からC-15までを、PlayReflectTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
音をトリガーするための、ユーザーインプット
- SoundBanksを再生成する。
- シーンをスタートして、ボリュームの中に入る。反射が描かれ、音が、
PlayReflectTest
をトリガーするとReflectプラグインを使ったAuxiliary Busにルーティングされるのが分かります。
F - 部屋やポータルの追加
リアルな音響環境では、ポータル(窓などの開口部分)が、発信された音の音量外にいるリスナーに対する新たな音源の役割を果たします。このような状況をモデル化するのに便利なAkAcousticPortalsは、Auxiliary
Busを使ってボリュームの聞こえる部分をルーティングして、新たな3D音源として隣接する音響空間で露出させます。
- Wwiseプロジェクトで新Auxiliary Busを作成して、名前を "TestPortalAuxBus" とする。
- 必ずUse game-defined auxiliary sendsを選択して、3Dポジショニングを有効にすること。
3Dポジショニング付きの新Auxiliary Busを作成する
- Wwise RoomVerb Effectを、Room_Mediumパラメータ付きで、追加する。
リバーブをAuxiliary Busに追加する
- 4つ目のEventを作成して、名前を "PlayPortalTest" として、その上に "ReferenceSound" Sound SFX をドラッグする。
新Play Eventを追加する
- プロジェクトを保存する。
- Unrealで、PlayPortalTestを、Wwise PickerからContent Browserにドラッグ&ドロップする。
- TestPortalAuxBusを、Content Browserにドラッグ&ドロップする。
EventとAuxiliary Busを、Content Browserに追加する
- "PlayPortalTest" Eventをダブルクリックして、TestSpatialAudioBankにアサインする。
EventのSoundBanksを選択する
- 新しい
AkSpatialAudioVolume
を追加する。- Locationを (x=-500.0, y=500.0, z=100.0) に設定する。
- Absolute Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
- "TestPortalAuxBus"を、Auxiliary Busとして、Late Reverbセクションで選択する。
シーンにスペーシャルオーディオボリュームを追加して、後期リバーブAuxiliary Busを選択する
- 必ずEnable Late ReverbとEnable Roomの両方が有効であることを確認して、Enable Surface Reflectorsが、この
AkSpatialAudioVolume
に関して無効のままであることを確認すること。必ず部屋を有効にする
- 手順F-1からF-7までを再現して、"TestReferenceAuxBus"という別の後期リバーブAuxiliary Bus(RoomVerbプリセット付き)を追加する。
3Dポジショニング付きの新Auxiliary Busを作成する
リバーブをAuxiliary Busに追加する
- 別の
AkSpatialAudioVolume
を追加する。- Locationを (x=-500.0, y=-500.0, z=100.0) に設定する。
- Absolute Scaleを (x=5.0, y=5.0, z=1.0) に設定する。
- 必ずEnable Late ReverbとEnable Roomの両方が有効であることを確認して、Enable Surface Reflectorsが、この
AkSpatialAudioVolume
に関して無効のままであることを確認すること。2つめのオーディオボリュームを追加して、部屋を有効にする
- "TestReferenceAuxBus"を、Auxiliary Busとして、Late Reverbセクションで選択する。
レイトリバーブAuxiliary Busを選択する
- 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).
新acoustic portalをシーン内へドラッグする
- 新しいPortalを選択して、"Ak Acoustic Portal"セクションで初期ステートをOpenに設定する。
ポータルを必ず開けておく
- PlayPortalTestをシーン内にドラッグ&ドロップする。
- Locationを (x=-500.0, y=500.0, z=100.0) に設定する。
新Eventをシーン内へドラッグする
- Locationを (x=-500.0, y=500.0, z=100.0) に設定する。
- 手順C-11 からC-13までを、PlayPortalTest用に再現して、音をトリガーする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
- SoundBanksを、Windows用に再生成する。
- シーンをスタートして、スタート位置から動かない。PlayPortalTestをトリガーすると、ポータルから音が聞こえてくるはずです。
注記: AkAcousticPortal の向きは、それが接続する部屋同士が、ローカルのY軸方向に沿って配置されている必要があります。ポータルを選択する時に、分かりやすいようにポータル周りに黄色い帯が表示されます。黄色い線が、フロントエリアとバックエリアの間の境界線を示します。部屋同士が重なり合っている場合は、優先順位が最も高い部屋を選択します。 |
注記: もしワールドにスペーシャルオーディオの部屋が1つ以上ある場合は、このスペーシャルオーディオ部屋が提供する追加情報が取り込まれるので、オクルージョン・オブストラクションのアルゴリズムが変化します。エミッタ―とリスナーの間のラインオブサイト(直線)テストが失敗した場合は:
|
注記: セクションFの部屋を追加すると、今までのセクションで作成した音で、新しい部屋の外にあるものは、リスナーが室内にいるときにオクルージョンの対象となるのが分かります。同様に室内の音も、リスナーが室外にいるときはオクルージョンが適用されます。 |
Wwiseでポータルのシャドウリージョンのフィルターレスポンスを微調整するには、Project SettingsのObstruction/Occlusionタブを開きます。
オブストラクションボリュームのカーブ
オブストラクションLPFのカーブ
オクルージョンボリュームのカーブ
オクルージョンLPFのカーブ
G - Spot Reflectorの追加
Spot reflectorは、今回のチュートリアルで最後に紹介する機能で、主に単一の音の反響のモデル化に使われます。遠くにある仮想の人工または自然の地理的要素をモデル化して、単一の特徴的な反響音を作り出すために使えます。例えば、山脈や大きな壁面などです。エミッターがリスナーのときに、最もよく作用します。Spot reflectorを環境内に落とし込むだけで、エンジンがエミッタ―とリスナー間の適切な音響ディレイを、それぞれの相対的位置や点対象を基に計算します。
- Wwiseプロジェクトで新Auxiliary Busを作成して、名前を "TestSpotReflectorAuxBus" として、それにReflectプラグインを設定する。
Reflect付きの新Auxiliary Busを追加する
- 必ずUse game-defined auxiliary sendsを有効にして、2Dポジショニングを有効にすること。
2Dポジショニングを必ず有効にする
- ReflectのMax Distanceを10,000に設定して、Speed of Soundを34,500に設定する。
Reflect's Speed of SoundとMax Distanceを必ず設定する
- プロジェクトを保存する。
- Unrealで、Wwise Pickerから、TestSpotReflectorAuxBusをContent Browserにドラッグ&ドロップする。
- Level Blueprintを開いて:
- Spot Reflectorをプレイヤーエミッター上で有効にする。
- "PlayReferenceSoundTest" イベントをプレイヤーエミッターからポストする。(マウスボタンの代わりに、キーボードのキーを割り当てることも可能。)
プレイヤーコンポーネントでSpot Reflectorを有効にして、そこからPlayReferenceSoundTestをポストする
- 新しい
AkSpotReflectorオブジェクトをシーンにドラッグする。
- Locationを (x=-150.0, y=-150.0, z=100.0) に設定する。
AkSpotReflector
Object上で、Aux Busの選択肢を"TestSpotReflectorAuxBus"に設定する。新spot reflectorをシーン内へドラッグする
- SoundBanksを再生成する。
- シーンをスタートする。新しいイベントをプレイヤーエミッターからトリガーするときに、エミッターとspot reflectorfが同じ部屋にあれば、spot reflectorからのリフレクションが聞こえます。"TestSpotReflectorAuxBus" Auxiliary BusでReflectプラグインのEffect Editorを開くと、リストやグラフにリフレクションが表示されます。
作成: 1.6.3