このチュートリアルでは、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タブで、Diffraction and Transmissionが有効になっていることを確認してください。
Sound Property EditorのPositioningタブで、Diffraction and Transmissionを有効にする
- デフォルトで、回折はオブストラクションのフィルターがかかり、透過損失はオクルージョンのフィルターがかかります。Project > Project Settings > Obstruction/Occlusionに移動します
- Obstruction Volumeカーブと、Obstruction LPFカーブを、好きなように調整します。例えばWwise Unity Demo Sceneのプロジェクトでは、以下を用いています:
Curve | Point 1 | Point 2 | Curve Type |
X | Y | X | Y |
Obstruction Volume | 0 | 0 | 100 | -3 | Linear |
Obstruction LPF | 0 | 0 | 100 | 60 | Linear |
Occlusion Volume | 0 | 0 | 100 | -12 | Sine (Constant Power Fade In) |
Occlusion LPF | 0 | 0 | 100 | 75 | Sine (Constant Power Fade Out) |
- Obstruction Volumeカーブは、このように表示されます:
Wwise Project SettingsのObstruction/Occlusionカーブ
- プロジェクトを保存する。
- Unityプロジェクトで、Wwise Picker: Windows > Wwise Picker でバンクをリフレッシュします
- サウンドバンクを生成します
Wwise Picker
B. Room
シーンの中で、各ルームがどこにあるのかを指定します。これを行うには、 AkRoom コンポーネントを使います。
- Wwise Unity Demo Sceneのチュートリアルシーンでは、建物の中の各ルームの内側を表すために、キューブメッシュを追加しました。 Surface Reflectorチュートリアル を終えたばかりであれば、 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
リスナーがエミッターと違う部屋にいるときは、音がルームの「壁」によって妨げられます。壁に、透過損失値を設定することができます( /ref pg_obs_occ を参照)。そうしない場合は、希望する開口部から音の伝搬を直接受け取るには、ポータルを追加する必要があります。SpatialAudioTutorialシーンには、ポータルを置ける開口部が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 コンポーネント
- ゲームをスタートし、Wwiseに接続します。
- 1つの部屋のボタンを押して、リバーブを聞きます。
- Voice Graphにこのように表示されます:
Voice Graphに表示されたRoom
- ルームを出て、別のルームで再生中のエミッターが見えたり見えなかったりする位置に移動しながら、音に適用される回折を聞いてみます。リスナーとポータルの間の角度によって、ディフラクションが多く聞こえたり少なく聞こえたりします。
- Unityの Scene ウィンドウに、ポータルからくる音のパスが表示されます。音に適用されている回折率は、回折ポイントに表示されます。
上から見た、ポータルを通る回折パス
- AuthoringのGame Object Profilerレイアウトを開きます(ショートカットはF12)
- すでに設定されていなければ、Game Object 3D Viewer Settingsで、Diffraction Pathsを有効にします。
ポータルの回折パスの、Game Object 3D Viewer Settings
- Game Object 3D Viewerに、以下が表示されます:
- 可視化されたルームやポータル。
- エミッターからポータルを通り、リスナーまで進む回折パス。エッジに、その回折率が表示されます。緑色のバーチャルソースが出現し、音が実際にどこからくるのかを示しています。
- ルームの壁を通る透過パスと、その透過損失()。
- 家アイコンとともに表示される、ルームのウェットサウンド。この図では、ポータルから出てくるものが1つと、ルームの壁を通る音を表しているものが1つあります。
- エミッターやリスナーの名前の下に、そのルームがあります。リスナーはルーム内にいないので、デフォルトで"Outdoors"ルームに入れられます。
- リスナーをルームに移動すると、Game Object 3D Viewerに表示中のリスナーゲームオブジェクトの下の、ルーム名(Room:)が変わるのが分かります。
Game Object 3D Viewerで見る、ポータルを通る回折パス
| 注記: 屋外にリバーブを追加するには、エリア全体の周りにルームを追加します。ルームのプライオリティが、あなたのシーンにあるほかの AkRoom コンポーネントよりも、必ず低くなるようにしてください。 |
E. ポータルと、リバーブ
ポータル経由で発せられるサウンドに、リスナーがいるルームのリバーブを使うことができます。これをルームカップリングと呼びます。
- ルームのAuxiliary Bus Property Editorを開き、General Settingsタブの Use game-defined auxiliary sends がチェックされていることを確認します。そうすると、ルームのリバーブが、シーン内のほかのリバーブに送られます。
- 小部屋のエミッターを再生中に大部屋に入ると、小部屋のリバーブが、大部屋のリバーブに送られるのが分かります。
Voice Graphのルームカップリング
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でルームゲームオブジェクトを観察する
- 参照
-