目录

集成详情——RTPC

RTPC 是可使用 AK::SoundEngine::SetRTPCValue() 函数来更新的实时参数。由于事件动作无法更改 RTPC 值(译注:无法连续更改),因此设置它们是您的职责。

RTPC 值

RTPC 值总是被当作 AkRtpcValue 传输,后者代表 32 位浮点数值。这个RTPC 值被直接插入声音设计师先前在 Wwise 中定义的 RTPC 曲线中。

当参数超出在 Wwise 中定义的曲线时,将使用曲线上的极值。如果参数大于最大值,则使用曲线上最右侧的值;如果参数小于最小值,则使用曲线上最左侧的值。如果 RTPC 参数代表布尔值,则 1 表示 True,0 表示 False。

设置 RTPC 值

设置 RTCP 值的方式如下:

AKRESULT AK::SoundEngine::SetRTPCValue( 
    AkRtpcID        in_rtpcID,                                      // RTPC 的 ID
    AkRtpcValue     in_value,                                       // 要设置的值
    AkGameObjectID  in_gameObjectID = AK_INVALID_GAME_OBJECT        // 关联的游戏对象 ID
);

或者

AKRESULT AK::SoundEngine::SetRTPCValue( 
    const char *    in_pszRtpcName,                                 // RTPC 名称
    AkRtpcValue     in_value,                                       // 要设置的值。
    AkGameObjectID  in_gameObjectID = AK_INVALID_GAME_OBJECT        // 关联的游戏对象 ID
);

或者

AKRESULT AK::SoundEngine::SetRTPCValue( 
    const wchar_t * in_pszRtpcName,                                 // RTPC 的名称
    AkRtpcValue     in_value,                                       // 要设置的值。
    AkGameObjectID  in_gameObjectID = AK_INVALID_GAME_OBJECT        // 关联的游戏对象 ID
);

RTPC 值可影响在游戏对象、总线参数、源插件和效果器插件上正在播放的声音。我们将考虑所有这些可能情况。

启用 ID

要使用 ID,必须在选中 Wwise 中 Generate SoundBanks 对话框上的“Generate header file”选项的情况下生成 SoundBank。名为 Wwise_IDs.h 的定义文件中包含所有必要的 ID。每次生成 SoundBank 时都会更新此文件。

RTPC 和游戏对象

RTPC 可用于更改游戏对象的行为,方法是对 Sound SFX、Sound Voice、容器和 Actor-Mixer 对象施加影响。还可以通过 RTPC 来更改切换开关(请参阅 驱动切换开关 )。

您只需一次函数调用,即可为所有未赋值的游戏对象设置全局 RTPC 值。为此,在调用 AK::SoundEngine::SetRTPCValue() 方法时,要将 AK_INVALID_GAME_OBJECT 用作游戏对象 ID 或不指定 AkGameObjectID 参数。 一旦声音对象收到对此方法的调用时,伴随有效的 AkRtpcID 和 AkGameObjectID 输入,该游戏对象就会被视为已赋值,并且不再受到全局 RTPC 值的影响。

RTPC 与总线

在 Wwise 中,RTPC 可更改总线的某些参数。要通过更改 RTPC 值来正确地影响总线,则必须使用 AK_INVALID_GAME_OBJECT 参数来调用 AK::SoundEngine::SetRTPCValue() 方法,RTPC 和游戏对象 中对此进行了解释。

RTPC 与插件

在 Wwise 中,RTPC 可影响效果器和源插件的属性,例如它们的混响电平、音高或低通截止频率。要使 RTPC 值正确地影响插件所在总线的这些属性,则在 AK::SoundEngine::SetRTPCValue() 方法时必须使用 AK_INVALID_GAME_OBJECT 作为参数,RTPC 和游戏对象 中对此进行了解释。如果使用插件的是游戏对象,则在调用 AK::SoundEngine::SetRTPCValue() 方法时必须使用有效的 AkGameObjectID 值。

Note.gif
备注: 注意设置全局 RTPC 值与根据游戏对象设置 RTPC 值之间的差异,这点非常重要。如果播放声音的 Wwise 对象(例如切换容器)受到 RTPC 影响,则在调用 AK::SoundEngine::SetRTPCValue() 方法时应使用有效的 AkGameObjectID 值,这点非常重要。在播放时,如果设置参数值时没有指定游戏对象,则声音引擎将诉诸一个全局 RTPC 值,方式将会是在调用 AK::SoundEngine::SetRTPCValue()时使用 AK_INVALID_GAME_OBJECT 参数或不指定游戏对象。如果此全局值不存在,则声音引擎将使用 Wwise 设计工具中指定的 Game Parameter 默认值。
Caution.gif
注意: 注意,同一 RTPC 可能会同时用在声音、总线和效果器上,这可能会导致意外行为,因此我们建议您对游戏对象、总线和效果器使用不同的 RTPC。例如在赛车游戏中,您可能已对十辆赛车的发动机设置了默认 RPM(转速)值,同时可在播放赛车发动机声音的总线上使用低通滤波器。如果采纳了我们的建议(使用不同的 RTPC),找到低通滤波器效果的来源会更容易。

有关集成RTPC的示例,请参阅 RTPC 示例