버전

menu_open

Obstruction and Occlusion in Environments

Introduction

When using environments, a typical condition that will happen is having a game object that becomes either obstructed by another object (such as a wall or beam), or occluded in a room where the listener can only hear a few sounds leaking through the walls.

The following diagrams illustrate examples of occlusion and obstruction.

obstruction.gif

Example of an Obstruction

Obstruction can be modeled by applying a volume control and/or a Low Pass Filter (LPF) affecting only the direct path of the signal. The environmental reflections are unaffected.

occlusion.gif

Example of an Occlusion

Occlusion can be modeled by applying a volume control and/or a LPF affecting both the direct path and the environmental reflections of the signal.

Note.gif
Note: Note that obstructions and occlusions can happen simultaneously and are modeled with the direct path being affected by both the obstruction and occlusion value. However, the reflection path is affected by the occlusion value only.

Here is a diagram of the obstruction/occlusion processing pipeline inside the sound engine:

obs_occ_processing.gif

Obstruction/Occlusion Processing Pipeline

Setting Obstruction and Occlusion

The game engine is responsible for determining the obstruction and occlusion values, which it does using the position of the objects and listeners in the game's geometry.

Sound designers have access to curves in the Wwise Project Settings/Curves Tab to determine how the volume and LPF will react to calculated obstruction and occlusion values.

Sound designers can also enable or disable the usage of any curve to best suit their performance and realism needs.

project_settings_curves.gif

Customizing Obstruction and Occlusion Curves in Wwise

Using the curve of this snapshot, setting an obstruction value of 1.0f (100%) will produce a volume change of -50 dB on the source object.

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

Game designers must calculate the obstruction and occlusion for each game object affecting each listener and pass down the values to the sound engine using the following call:

Caution.gif
Caution: Obstruction and Occlusion levels must always be a value between 0.0f and 1.0f.

When multiple listeners are enabled for a game object, the sound engine determines the minimum LPF value and maximum volume value that should be heard for all listeners; it then uses that value to compute the resulting obstruction/occlusion.

Example: Setting Obstruction and Occlusion

#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 );
    }
    
    (...)
}
See also:

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요