版本

menu_open
Wwise SDK 2023.1.9
集成详情——RTPC

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

RTPC 值

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

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

设置 RTPC 值

设置 RTCP 值的方式如下:

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

或者

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

或者

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 值。

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

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

AKSOUNDENGINE_API AKRESULT SetRTPCValue(AkRtpcID in_rtpcID, AkRtpcValue in_value, AkGameObjectID in_gameObjectID=AK_INVALID_GAME_OBJECT, AkTimeMs in_uValueChangeDuration=0, AkCurveInterpolation in_eFadeCurve=AkCurveInterpolation_Linear, bool in_bBypassInternalValueInterpolation=false)
AkUInt32 AkRtpcID
Real time parameter control ID
Definition: AkTypes.h:73
AkUInt64 AkGameObjectID
Game object ID
Definition: AkTypes.h:60
AKRESULT
Standard function call result.
Definition: AkTypes.h:131
static const AkGameObjectID AK_INVALID_GAME_OBJECT
Invalid game object (may also mean all game objects)
Definition: AkTypes.h:94
AkReal32 AkRtpcValue
Real time parameter control value
Definition: AkTypes.h:74

此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅