首先,用户必须在 Wwise 工程中创建代表环境的辅助总线,每个环境对应一条辅助总线。代表此声音的对象属性或者该对象继承的对象属性中必须已经设置了选项“Use game-defined auxiliary sends”。要让游戏使用这些参数集合,声音引擎中必须注册该效果器。注册效果器的方式与注册其它效果器插件的方式(请参见 插件示例 了解更多详情)完全相同,如下例中所示:
#include <AK/SoundEngine/Common/AkSoundEngine.h> // 声音引擎 #include <AK/Plugin/AkRoomVerbFXFactory.h> // 效果器初始化函数 (...) AK::InitAkRoomVerbFX(AK::SoundEngine::GetGlobalPluginContext());
要使初始化函数能够在链接时被找到,您的 C++ 工程必须与相应插件库链接。请参阅 SDK 中所含库和头文件的概述 了解有关程序库的更多信息。
// 在此示例中,我们硬编码了 Dry、Hangar 和 Tunnel 的 3 个值。在 // 游戏中,您将根据环境中游戏对象的位置 // 来计算这些值。 AkReal32 nDryRatio = 0.5f; AkReal32 nHangarRatio = 0.25f; AkReal32 nTunnelRatio = 0.25f; AkAuxSendValue aEnvs[2]; aEnvs[0].listenerID = AK_INVALID_GAME_OBJECT; //使用通过 SetListeners/SetDefaultListeners API 指派的同样一组听者。 aEnvs[0].auxBusID = AK::SoundEngine::GetIDFromString( L"Hangar" ); aEnvs[0].fControlValue = nHangarRatio; aEnvs[1].listenerID = AK_INVALID_GAME_OBJECT; // 使用通过 SetListeners/SetDefaultListeners API 指派的同样一组听者。 aEnvs[1].auxBusID = AK::SoundEngine::GetIDFromString( L"Tunnel" ); aEnvs[1].fControlValue = nTunnelRatio; AK::SoundEngine::SetGameObjectOutputBusVolume( GAME_OBJECT_ID_HUMAN, nDryRatio ); AK::SoundEngine::SetGameObjectAuxSendValues( GAME_OBJECT_ID_HUMAN, aEnvs, 2 );
请参阅集成详情——环境和游戏定义的辅助发送 了解这些比例的含义信息。
![]() |
Note: 传递给 AK::SoundEngine::GetIDFromString() 的名称是 Wwise 中定义的辅助总线的名称。请参阅 使用 ID 或字符串(Unicode 或 ANSI) 了解更多信息。 |
在示例程序中,您可以通过移动“Environments: Footsteps”组中的前三个滑块试验环境效果。通过滑块,您可以为 Dry、Hangar 和 Tunnel 环境设置比例(最左对应 0,最右代表 100)。
请参阅集成详情——环境和游戏定义的辅助发送 了解更多详情,并参阅Integration Demo 示例 了解工程示例。
由于声障(Obstruction)和声笼(Occlusion)取决于环境以及游戏对象和听者的位置,因此可相对于每个听者计算每个游戏对象的声障和声笼。
设置声障和声笼的方式是调用 AK::SoundEngine::SetObjectObstructionAndOcclusion(),如下文中的演示所示:
// 在此示例中,我们硬编码了声障和声笼值。在游戏中,您需要 // 根据游戏对象和听者的位置来以及环境构成 // 来计算这些值。 AkReal32 fObstruction = 0.05f; AkReal32 fOcclusion = 0.0f; // 在这种情况下,我们仅计算和设置听者 0 的值。如果您有多个听者, // 必须单独计算和设置每个听者的这些值。 AK::SoundEngine::SetObjectObstructionAndOcclusion( GAME_OBJECT_ID_HUMAN, 0 /*listener*/, fObstruction, fOcclusion );
在示例程序中,您可以通过移动“Environments: Footsteps”组中的最后两个滑块来试验声障和声笼。通过这些滑块,您可以设置声障和声笼的比例(0 到 100)。
请参阅环境中的声障和声笼 了角更多详情,并参阅Integration Demo 示例 了解工程示例。
![]() |
Note: 此例程摘自 示例 一节中的“声音引擎集成工程示例”部分。请参阅 Integration Demo 示例 了解更多信息。 |