バージョン

menu_open
Wwise SDK 2021.1.14
オブストラクションやオクルージョンと、Game-defined auxiliary sends

ゲームオブジェクトがほかのオブジェクト(壁や梁など)に妨害されるオブストラクションや、隣の部屋から少し音が漏れてリスナーに聞こえるようなくるオクルージョンなどが、典型的な例です。Auxiliary sendsで、信号の反射を表現することができます。

オクルージョンやオブストラクションの例を下図に示します。

オブストラクションの例

オブストラクションのモデルでは、信号の Direct Path だけにボリュームコントロールと/またはローパスフィルター(LPF)を適用します。Auxiliary sendによるReflection(反射)は影響を受けません。

オクルージョンの例

オクルージョンは、信号のDirect Pathと、Auxiliary sendのReflectionの、両方に影響を与えるようなボリュームコントロールやLPFを適用することで表現できます。

注釈: オブストラクションとオクルージョンが同時に発生することもあり、それを表現するには、オブストラクション値とオクルージョン値の両方がDirect Pathに影響を与えるようにします。ただし、リフレクションパスはオクルージョン値の影響の みを受けます。

オブストラクションやオクルージョンを処理するサウンドエンジンのパイプライン内の流れを、下図に示します:

オブストラクション/オクルージョンを処理するパイプライン

オブストラクションとオクルージョンの設定

ゲームエンジンは、オブジェクトやリスナーのゲームにおける物理的な位置情報を使い、オブストラクション値やオクルージョン値を決定します。

サウンドデザイナーは、Wwise Project Settings/Curves タブのカーブにアクセスして、算出されたオブストラクション値やオクルージョン値に対してボリュームや LPF がどのように反応するかを決定することができます。

また、サウンドデザイナーは、ゲームのパフォーマンス要件や描写レベルに応じて、任意のカーブの使用を有効化または無効化することができます。

WwiseでObstructionやOcclusionのカーブをカスタム設定

上図のスナップショットで設定したグラフのカーブを使うと、オブストラクション値を1.0f(100)とした時、ソースオブジェクトで-50dBのボリューム変化が発生します。

For more information on customizing the project obstruction and occlusion curves with Wwise, refer to the Wwise Help.

Obstruction and Occlusion can also be disabled, enabled, and set per sound with the help of the Obstruction and Occlusion curves of the Attenuation ShareSet. For more information, refer to the Applying Attenuation section of the Wwise Help.

ゲームデザイナーは、各ゲームオブジェクトのオブストラクションとオクルージョンを計算し、次のコールを使用して、算出した値をサウンドエンジンに値を渡す必要があります:

注意: オブストラクションとオクルージョンレベルは常に0.0f と 1.0fの間の値でなければなりません。

1つのゲームオブジェクトに対して複数のリスナーが有効になっている場合、サウンドエンジンは、すべてのリスナーに聞こえる最小LPF値と最大ボリューム値を決定し、続いて、この値で結果として生じるオブストラクション/オクルージョンを計算します。

例:オブストラクションとオクルージョンの設定

#define MAIN_LISTENER 0
// game loop
while( TRUE )
{
(...)
for( int iGameObject = 0; iGameObject < nbObjects; iGameObject++ )
{
AkReal32 fCalculatedObs, fCalculatedOcc;
pGeometryModule->GetObsAndOccForGameObject( iGameObject, MAIN_LISTENER, &fCalculatedObs, &fCalculatedOcc );
AK::SoundEngine::SetObjectObstructionAndOcclusion( iGameObject, MAIN_LISTENER, fCalculatedObs, fCalculatedOcc );
}
(...)
}
参照
float AkReal32
32-bit floating point
Definition: AkTypes.h:70
AKSOUNDENGINE_API AKRESULT SetObjectObstructionAndOcclusion(AkGameObjectID in_EmitterID, AkGameObjectID in_ListenerID, AkReal32 in_fObstructionLevel, AkReal32 in_fOcclusionLevel)

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう