版本

menu_open
Wwise SDK 2019.2.15
声障、声笼及 Game-defined Auxiliary Sends

游戏对象经常会被另一对象(如墙壁或横梁)阻挡或被封闭在房间内,这时听者只能听到通过墙壁透出的一点声音。为此,可使用辅助发送来表现信号的反射。

声笼(Occlusion)和声障(Obstruction)的示例如下图所示。

声障的示例

通过使用音量控制或只作用于信号直通路径的低通滤波器(LPF),即可对声障建模。辅助发送反射不受影响。

声笼的示例

通过应用音量控制或同时作用于信号直达路径和辅助发送反射的 LPF,即可对声笼建模。

备注: 声障和声笼现象可能会同时发生。为此,可使用受声障值和声笼值影响的直达路径来建模。然而,反射路径只受声笼值的影响。

以下是声音引擎中声障/声笼处理管线的示意图:

声障/声笼处理管线

设置声障和声笼

游戏引擎负责确定声障值和声笼值,它使用对象和听者在游戏几何图形中的位置来确定。

声音设计师可访问 Wwise Project Settings/Curves 选项卡中的曲线来确定音量和 LPE 如何对声障和声笼计算值做出反应。

声音设计师也可启用或禁用任何曲线,以充分满足性能和逼真度需求。

在 Wwise 中自定义声障和声笼曲线

通过使用此快照的曲线,设置 1.0f(100)的声障值将在源对象上产生 -50 dB 的音量变动。

有关如何使用 Wwise 自定义声障和声笼曲线的详细信息,请参阅 Wwise 联机帮助

游戏程序员必须计算影响每个听者的每个游戏对象的声障和声笼,并使用以下调用把计算值传递给声音引擎:

注意: 声障和声笼级别必须永远位于 0.0f 和 1.0f 之间。

当为游戏对象启用多个听者时,声音引擎会确定所有听者应能够听到的最小 LPF 值和最大音量值;然后使用该值计算声障/声笼结果。

示例:设置声障和声笼

#define MAIN_LISTENER 0
// 游戏循环
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 );
}
(...)
}
参见
AKSOUNDENGINE_API AKRESULT SetObjectObstructionAndOcclusion(AkGameObjectID in_EmitterID, AkGameObjectID in_ListenerID, AkReal32 in_fObstructionLevel, AkReal32 in_fOcclusionLevel)
float AkReal32
32-bit floating point
Definition: AkTypes.h:103

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅