|
Wwise SDK 2022.1.19
|
以下は、このページの内容です:
下表はSpatial Audioのルーム(Room)やポータル(Portal)の機能内容で、音響現象の種類別に、Spatial Audioでできることと、サウンドデザイナーがプロジェクトに取り入れる方法を、まとめています。
| Acoustic Phenomenon | Spatial Audio | Sound Design in Wwise |
|---|---|---|
| Diffraction of direct path |
|
|
| Diffuse field (reverb) |
|
|
| Room coupling: reverb spatialization and diffraction of adjacent room's diffuse field |
|
|
| Transmission |
|
|
Spatial Audioのルームやポータルの考えでは、リスナーのいるルーム以外のルームからくる音の伝播は、ルームやポータルという抽象化で管理します。別のルームにあるエミッタは、ポータルや、それに関連する回折や、ルームの壁の透過などを通して、リスナーまで伝わります。伝搬させる音のそれぞれのEnable Diffraction and Transmissionチェックボックスを、Positioningタブで必ずチェックしてください。
Spatial Audioは、隣のルームの各エミッタに対して、接続するポータルの最も近いエッジ(端)のShadow Boundaryから、回折角を計算します。詳細は Diffraction(回折) を参照してください。回折角は最大180度まで広がり、0~100の係数にマッピングされてからWwiseユーザーに提供され、Wwiseユーザーは、これに対応するオーディオ変化を2つの方法のどちらかを使い実行します。It can set the diffraction value on the emitter game object or set the value of the Diffraction built-in game parameter.
The diffraction value on the emitter game object is used to drive curves in the Authoring. By default, the project obstruction curves are used. They can be authored in the Project Settings' Obstruction/Occlusion tab and will impact Volume, LPF, and HPF to emulate volume and frequency-dependent behaviors. Project obstruction curves impact all the sounds in a project, which makes them less flexible. However, custom Diffraction curves can be created in an Attenuation ShareSet applied to the sound.
Alternatively, the Diffraction built-in parameter can be used. To do so, create a game parameter and set its Bind to Built-in Parameter drop-down menu to Diffraction. このゲームパラメータにプッシュする値はゲームオブジェクトごとのスコープなので、エミッタごとに固有です。これにRTPCを適用すれば、アクターミキサーのどのプロパティでもコントロールできます。Output Bus VolumeとLPFは、基本のVolumeやLPFよりも優先され、それはルームのリバーブへのAuxセンドではなく、直接シグナルパスだけに適用するからです。
![]() | 警告: Compared to curves, using a built-in parameter requires more manipulations. Built-in game parameters also only apply on a single value for all positions of a game object. When multiple values are set, the smallest is taken. Recall that multiple game object positions are used when a Room has more than one Portal, so a built-in parameter is not recommended for this scenario. |
ルームの拡散エネルギーも、ルームのAuxバスの出力として、Spatial Audioの音伝播モデルに含まれます。これの拡散計算も、Spatial Audioが行います(いわゆるウェット回折)。Spatial Audioは、拡散エネルギーがポータルに対して垂直に、ルームから漏れ出るものととらえています。つまり、回折角をポータルの通常のベクトルに対する角度として、計算します。この回折角は、エミッタのドライパスと全く同じようにWwiseで使えます。組み込みゲームパラメータを使う場合は、RTPCをルームのAuxバスに対して設定するべきで、一般的にバスのOutput Bus VolumeやOutput Bus LPFに対してです。バスのOutput Bus Volumeプロパティは、アクターミキサーの場合と同じ理由でBus Volumeプロパティよりも優先するべきで、このリバーブをリスナーのルームのリバーブにカップリングするために使うAuxセンドパスが、影響されないようにします。
Spatial Audioの初期設定 AkSpatialAudioInitSettings::bCalcEmitterVirtualPosition を設定すると、リスナーの隣のルームに位置するエミッタのポジションが、必要に応じて回折角の方から出るように、修正されます。以下の3D Game Object Profilerのスクリーンショットでは、リスナー(Listener L)がPortalの右にあり、「真の」エミッタが左下にあります(オリエンテーションベクトルのないEmitter E)。そこでSpatial Audioは、エミッタの位置を左上に変えて、ポジションがコーナーの方にあるようにしながらも、リスナーに到達するまでの距離を維持します。リスナーはPortalエッジのシャドーゾーンに約45度入ったところにあり、その結果、2本の線分の交点に表示されているとおり、回折係数が27となっています。
2つのルームが複数のポータルでつながっている場合、1つのエミッタに複数のポジション(1つのポータルにつき1つのポジション)をアサインするかもしれません。MultiPosition_MultiDirection モードを使うので、あるポータルを有効・無効にしても、ほかのポータルから聞こえるボリュームに影響しません。
ルームとルームの間の音の透過(Transmission)は、ウェットパスとドライパスで、別々にモデル化されています。ここではドライパスを Source Transmission と呼び、ウェットパスを ルームトランスミッション と呼びます。
In a manner similar to diffraction, the resulting transmission loss value can be auralized using either of two methods, via the curves or via the Transmission Loss built-in parameter.
By default, the project occlusion curves are used for transmission. They can be authored in the Project Settings' Obstruction/Occlusion tab and will impact Volume, LPF, and HPF to emulate volume and frequency-dependent behaviors. Project occlusion curves impact all the sounds in a project, which makes them less flexible. However, custom Transmission curves can be created in an Attenuation ShareSet applied to the sound.
![]() | 注釈: Using curves to simulate transmission loss is preferred over an RTPC, because it provides greater accuracy when modeling both transmission and diffraction. 理由は、RTPCをサウンドパスに個別に適用することができないので、透過損失のRTPCにマッピングしたパラメータが、エミッタから発生する、回折する可能性のあるパスにも影響してしまうからです。 |
エミッタとリスナーが別のルームにあり、ポータルを通して直接の視界に入っていない場合は、Spatial Audioがゲームオブジェクトに透過損失を適用して、音の壁の透過をモデル化します。ルームとルームの間の透過損失は、ルームの設定の AkRoomParams::TransmissionLoss パラメータを使い、リスナーのルームとエミッタのルームの間の最大値から計算されます。サウンドエミッタが1つ以上のジオメトリ面によって妨げられている場合は、そのジオメトリの透過損失係数( AkAcousticSurface::transmissionLoss で定義)を適用します。エミッタとリスナーの間に2つ以上の面がある場合は、最大の透過損失係数を使います。また、サウンドがジオメトリによって妨げられているだけでなく、リスナーと別のルームにある場合は、同じようにして全ての透過損失要素のうちの最大値を、適用します。
Spatial Audioでは、ルーム内の個々のエミッタの音の透過に加え、ルーム自体の音の透過もモデル化します。拡散リバーブ音場の影響や、ルーム内で再生中のルームトーンがあれば、それが壁を透過する影響も、含まれます。
ソースの透過と同様に、ルームの透過損失は、ソースのルームとリスナーのルームを比較して、大きい方の透過損失係数をルームの透過損失として計算します。Authoring room transmission for room tones uses the sound's Transmission Loss curves on its Attenuation ShareSet, the Occlusion curves in the Wwise Project Settings in the case that there is no Attenuation ShareSet, or the Transmission Loss built-in parameter. Authoring room transmission for the diffuse reverb field instead uses the Transmission Loss curves on the room's auxiliary bus Attenuation ShareSet, the Occlusion curve in the Wwise Project Settings in the case that there is no Attenuation ShareSet, or the Transmission Loss built-in parameter.
We recommend using the Project Settings' Occlusion curves to author the room's diffuse reverb field. This is because we don't recommend adding an Attenuation ShareSet on the room auxiliary bus. Sounds can author the auxiliary send volume attenuation in their own Attenuation ShareSets using the distance-driven Auxiliary Send volumes curve. If there is an Attenuation ShareSet on the room's Auxiliary Bus, its distance-driven volume curve will be applied on the sound in addition to the sound's Auxiliary Send volumes curve. If you cannot use the Project Settings' Occlusion curves and must have custom Transmission Loss curves, make sure to have a flat curve as the distance-driven volume curve of the added Attenuation ShareSet on the room's Auxiliary Bus.
![]() | 注釈: ルームトランスミッション(透過)を有効にするには、ルームのソースと範囲が決まるように、ルームの形を定義します。ルームの形は、このルームに割り当てられたジオメトリを囲うバウンディングボックスから計算されます。ルームトランスミッションをAPI経由で設定するには、 ルームのジオメトリを設定する を参照してください。 |
リスナーのルームのポータルを通して隣室などから浸透してくる拡散エネルギーは、このポータルに位置する音源ととらえることが可能で、そのため、リスナーのルームの励起に貢献するはずです。言い換えると、リスナーのルームのAuxバスにセンドするべきです。前述のとおり、これは隣のルームのAuxバスのEnable Game-Defined Sendsチェックボックスをチェックすればできます。ほかのルームのリバーブに送る量を微調整するには、Game-Defined Send Offsetを使います。
音の伝播は、複数のルームも経由できます。伝播のパスを探す時に、SpatialAudio内でRoomツリーのサーチを行います。循環するコネクションを防止するために、すでにサーチしたルームに再び来た時は停止します。サーチの深度は、Spatial Audioの初期化設定 AkSpatialAudioInitSettings::uMaxSoundPropagationDepth で制限できます(デフォルトは 8)。
Spatial Audioは舞台裏で、ルーム1つにつきWwiseでゲームオブジェクト1つを登録します。
![]() | 警告: このゲームオブジェクトのポジションや、Auxセンド値を、直接変更してはいけません。 |
リスナーがルームにいると、ルームのゲームオブジェクトは、リスナーを追うように移動します。このため、ルームとリスナーオブジェクトの間の距離は、約0です。ただし、オリエンテーションはルームの設定(AkRoomParams)の指定どおりに維持されます。3Dバスのオリエンテーションの検討については、 WwiseでルームのAuxバスを設定する を参照してください。
リスナーがルームの外にいると、ルームのゲームオブジェクトにポータルのポジションが適用されます。厳密には、ポータルのうしろに配置され、リスナーからポータルのタンジェントへの投影の場所で、ポータルの範囲に固定されています。確認するにはルームのゲームオブジェクトを見ますが、前出の 仮想ポジショニングと、ポータルを通した回折 の3D Game Object Profilerのスクリーンショットにも表示されています。
複数のポータルの場合、エミッタの場合と同じ理由で、ルームのゲームオブジェクトが MultiPosition_MultiDirection モード複数のポジションにアサインされます。
ポータル内でトランジションするときに、「ルーム内」動作と「ポータル」動作はスムーズに補間されます。
ルームゲームオブジェクトの最大の目的はリバーブ(エミッタの"ウェットパス")にスペーシャリゼーションを適用することですが、ルームやポータルのスペーシャリゼーション動作( ルームゲームオブジェクトの動作 で説明)を活用してルームトーンを実装するためにルームゲームオブジェクトに直接、イベントをポストすることもできます。Wwiseでルームトーンを設定するには、 Wwiseでルームトーンを設定する を参照してください。イベントをポストすることについては、 ルームゲームオブジェクトに対してイベントをポストする を参照してください。
Wwiseで設定するサウンドのSpread(スプレッド)が、Audio Busでパンニングする3Dサウンドによって構築される、音場の幅を定めます。多くのサウンドのスプレッドは、Wwiseの、そのサウンドの減衰設定のカーブで定義されます。ところが、ルームゲームオブジェクトで再生するサウンド(つまりルームトーン)や、ルームのAuxバスに送られるリバーブに関しては、Spatial Audioがスプレッドを自動的に計算するので、そのようなカーブの定義は不要です。
さらに、もしサウンドのスプレッドカーブをWwiseの減衰設定で定義していて、そのサウンドが1つ以上のポータルを通って移動する場合は、最終的なスプレッド値は、それらポータルの開口を表すAperture値の対象となります。Aperture値はサウンドのスプレッドの上限と解釈することができ、サウンドがポータルを通過するときの音場の収縮をシミュレーションします。
サウンドエミッタのスプレッドをWwiseのGame Object 3D Viewerで可視化するには、以下のように設定します:
ゲームオブジェクトのスプレッド値や、ポータルのAperture値は、Advanced ProfilerのObs/Occタブでも確認できます。
Game objects may have a Spread value that is calculated by Spatial Audio if they are Radial Emitters.
ルームゲームオブジェクトの場合は、Spread値と開口部を表すAperture値が同じで、各ポータルのリスナーに対する立体角を推定することで計算されます。なお、ルームゲームオブジェクトはポータルごとにスプレッド値が異なります(各ポータルが、それぞれ別のサウンドポジションとしてレンダリングされていることを思い出してください)。
ゲームオブジェクトのAperture(開口部)値はパスごとに計算され、特定のサウンドパスで通った全てのポータルの最小スプレッド値の結果です。ルームゲームオブジェクトの場合は、Spread値とAperture値は同じ値です。
サウンドポジションとリスナーの間の最終的なSpread(スプレッド)値は、以下のように計算されます:
AK::SpatialAudio::SetGameObjectRadius を参照)。半径がなく、スプレッドカーブが定義されていなければ、スプレッドを0とみなします。