このチュートリアルでは、Spatial Audioでルームやポータルを使う方法を説明します。チュートリアルの手順内容が、以下のセクションに詳しく書かれています。
A. Wwise Project
このチュートリアルでは、エミッターの姿が見えなくなったときにポータルを通して回折の効果が聞こえるように、Reverb Effectsを追加し、Obstructionカーブを変更します。
- ルームプリセットを使い、Auxiliary Bussesを2つ追加します。
-
Master Audio Bus を右クリックし、 New Child > Presets へ移動し、Room Auxiliary Busを選択します。
-
Effects タブで、各ルームに異なるエフェクトを選択します。例えば、小さいルームにはRooms/Room_Mediumを、大きいルームにはCathedrals/Mediumを選択します。

ルームの、Auxiliary Bus Property EditorのEffectsタブ
-
Spatial Audioチュートリアルの事前準備 に追加したSoundを編集します
- Positioningタブで Enable Diffractionチェックボックスをチェックして有効にします。

Sound Property EditorのPositioningタブで、Diffractionを有効にする
- Project > Project Settings > Obstruction/Occlusion に移動します
-
Obstruction Volumeカーブと、Obstruction LPFカーブを、好きなように調整します。例えばWwise Unity Demo Sceneのプロジェクトでは、以下を用いています:
カーブ |
Point 1 |
Point 2 |
X |
Y |
X |
Y |
Obstruction Volume |
0 |
0 |
100 |
-3 |
Obstruction LPF |
0 |
0 |
100 |
60 |
- Obstruction Volumeカーブは、このように表示されます:

Wwise Project SettingsのObstruction/Occlusionカーブ
- プロジェクトを保存する。
- Unityプロジェクトで、Wwise Picker: Windows > Wwise Picker でバンクをリフレッシュします
- サウンドバンクを生成します

Wwise Picker
B. Room
シーンの中で、各ルームがどこにあるのかを指定します。これを行うには、 AkRoom コンポーネントを使います。
- Wwise Unity Demo Sceneのチュートリアルシーンでは、建物の中の各ルームの内側を表すために、キューブメッシュを追加しました。 サーフェスリフレクタ(Surface Reflectors)に関するチュートリアル を終えたばかりであれば、 AkSurfaceReflector コンポーネントのあるGameObjectsを使えます。
- GameObject > 3D Object > Cubeで、キューブを追加します。
-
Mesh Rendererコンポーネントを除きます。
-
Box Colliderコンポーネントの、Is Triggerにチェックを入れます。
-
AkRoom コンポーネントを追加します。
-
Reverb Aux Bus に対応するAuxiliary Busをピックします。
- ルームに Rigidbody コンポーネントを追加するよう、警告メッセージが提案します。そうすると、 AkRoom コンポーネントと AkRoomAwareObject コンポーネントのやり取りが可能になります。次は、それらのコンポーネントを追加する手順です。

AkRoom コンポーネント
- ルームを使用するので、すべてのリスナーやエミッタが "Room Aware" となるように、 AkRoomAwareObject コンポーネントを追加します。
- すでに、Spatial Audioのリスナーに AkRoomAwareObject コンポーネントが自動的に追加されていたので、そのコンポーネントが有効になっていることを確認してください。

AkRoomAwareObject コンポーネント
- 上図のように2つの警告メッセージが表示されることがあります。
- 1つ目は、Rigidbody コンポーネントをルーム上、または現在のオブジェクト上に配置する必要性を示しています。まだルームに追加していなければ、 Add Rigidbody をクリックします。
- 2つ目の警告メッセージは、コライダーについてです。 AkRoomAwareObject が AkRoom コンポーネントとやり取りするには、コライダーが必要です。
C. Portal
リスナーがエミッタと異なる部屋にいるときは、音が完全にオクルージョン状態です。ほかのルームから、決まった開口部を通して音が聞こえるようにするには、ポータルを追加します。Wwise Unity Demo Sceneでは、ポータルが2つ必要で、1つは屋外エリアと小ルームの間の開口部に、もう1つは2つのルームの間におきます。
- 2つの AkRoomPortal コンポーネントが必要なので、GameObject > Wwise > Room Portal の手順で作成し、それらを開口部周りに配置します。
-
Sceneウィンドウで、ポータルの周りに黄色い帯が表示され、ポータルの大きさと配置する時の向きを示します。赤線が、ポータルの表と裏のエリアの境界線を示します。前は、ローカルのZ軸と同じ方向です。

Sceneウィンドウの、AkRoomPortal
-
AkRoomPortal コンポーネントで、以下を行います:
-
Open On Start.
-
Close On Nothing.
- Back RoomとFront Roomに表示された AkRoom コンポーネントが正しいことを確認してください。
- 以下は、小ルームと屋外の間のポータルの、 AkRoomPortal コンポーネントの設定です:

AkRoomPortalコンポーネント
D. 設定の検証
- 音の伝播パスをシーン内で描写させたい場合は、エミッタに AkSpatialAudioDebugDraw コンポーネントを追加します。
-
Draw Diffraction Paths オプションにチェックを入れます。

AkSpatialAudioDebugDraw コンポーネント
- ゲームをスタートする。
- ルーム内のサウンドの、少なくとも1つが再生されていることを確認してください。
- リスナーがエミッタと異なるルームにいるときは、 Scene ウィンドウに緑色のパスが表示され、ポータルを経由してくる音がどこから来ているのかを示してくれます。音に適用されている回折率は、回折ポイントに表示されます。

上から見た、ポータルを通る回折パス
- Wwiseに接続してから、Game Object Profilerレイアウトを開きます(ショートカットはF12)
- すでに設定されていなければ、Game Object 3D Viewer Settingsで、Diffraction Pathsを有効にします。

ポータルの回折パスの、Game Object 3D Viewer Settings
- Game Object 3D Viewerに、
- 様々なエミッタから、ポータルを経由してリスナーまでたどり着く、回折パスが表示されます。緑色のバーチャルソースが出現し、音が実際にどこからくるのかを示しています。
- どのエミッタもリスナーも、それぞれのルームが分かるようになっています。リスナーとButton Outsideはルーム内にないので、デフォルトで"Outdoors"ルームに入れられます。
- リスナーをルームに移動すると、Game Object 3D Viewerに表示中のリスナーゲームオブジェクトの下の、ルーム名(Room:)が変わるのが分かります。

Game Object 3D Viewerで見る、ポータルを通る回折パス
- 1つの部屋のボタンを押して、リバーブを聞きます。
- 小さい方の部屋のボイスグラフは、このようになるはずです:

Button Small Roomのリバーブ付きVoice Graph
- ルームを出て、別のルームで再生中のエミッターが見えたり見えなかったりする位置に移動しながら、音に適用される回折を聞いてみます。リスナーとポータルの間の角度によって、ディフラクションが多く聞こえたり少なく聞こえたりします。
 |
注記: 屋外にリバーブを追加するには、エリア全体の周りにルームを追加します。ルームのプライオリティが、あなたのシーンにあるほかの AkRoom コンポーネントよりも、必ず低くなるようにしてください。 |
E. ポータルと、リバーブ
ポータル経由で発せられるサウンドに、リスナーがいるルームのリバーブを使うことができます。
- 小さい方のルームのAuxiliary Bus Property Editorを開き、General Settingsタブで Use game-defined auxiliary sends がチェックされていることを確認してください。これで、小さいルームのリバーブが、このシーンのほかのリバーブに送られます。

ルームリバーブをほかのリバーブに送るときの、Auxiliary Bus Property EditorのGeneral Settingsタブ
- 小部屋のエミッターを再生中に大部屋に入ると、小部屋のリバーブが、大部屋のリバーブに送られるのが分かります。

Voices Graphで、Small Roomリバーブが、Large Roomリバーブに送られる様子
F. Room Tone
時々、ルームに空調の音など特定のアンビエント音があります。これを再現するには、Spatial Audio Roomゲームオブジェクトにイベントをポストします。リスナーがルームにいると、その音のポジションはリスナーの位置となります。ほかのルームに入ると、リスナーには、ルームトーンを出すルームと、リスナーをつなげるポータルから、そのルームトーンが聞こえてきます。
- Wwiseプロジェクトで、
- ルームトーン用に新しいSound SFXを作成します。
- Game-defined aux sendsを有効にし、ルームトーンをルームリバーブに送れるようにします。
- このルームトーンを使ったPlayイベントを作成するために、Sound SFXを右クリックしてから、 New Event > Play を選択します。
- プロジェクトを保存する。
- Unityで、
- このイベントを、1つのルームの AkRoom コンポーネントの、Room Tone Eventパラメータに追加します。
- Aux Send Levelを調整して、音の一部がルームのリバーブに送られるようにします。
- このイベントのトリガー方法は、自分で選べます。

Roomを有効にしたSpatial Audio Volumeの、 AkEventのセクション。
- SoundBankを生成します。
- シーンをスタートし、Wwise Authoringに接続します。
- ルームトーンが聞こえることを確認します。
- Advanced Profilerビューに、再生中のイベントが表示されるはずです。

ルームトーンのあるルームにリスナーがいるときの、Advanced Profilerビュー
- リスナーを動かしながら、3D Game Object Viewerでルームのゲームオブジェクトを観察します。
- もしリスナーがルーム内にいれば、ルームはリスナーの位置において音を出します。ルームのゲームオブジェクトが、リスナーのゲームオブジェクトのあとをついていくのが分かります。
- もしリスナーが別のルームにいれば、ルームのゲームオブジェクトはポータルの位置に配置され、そこからリスナーのゲームオブジェクトまでのパスが、描写されます。

Game Object 3D Viewerでルームゲームオブジェクトを観察する