Wwise SDK
重要的迁移说明 2017.2
|
Wwise SDK 2023.1.18
|
有了那么多 新功能概述 2017.2 “新特性”,您在迁移到 Wwise 2017.2 时注意几件事。
请仔细阅读以下重要迁移说明:
- 重命名了部分效果器插件和源插件
- 音频输出管理、二路输出和 Sink 插件的重大更改
- 振动支持的重大更改
- 振动迁移的其他限制/更改
- 取消了对 32 位 Wwise 设计工具的支持
- 采用 User-defined 定位的声障和声笼
- Auxiliary Bus 将处理干声信号
- 重命名了 WAAPI 函数
重命名了部分效果器插件和源插件
在 SDK lib 文件中:
- AkSoundSeedWind.lib -> AkSoundSeedWindSource.lib
- AkSoundSeedWoosh.lib - > AkSoundSeedWooshSource.lib
- AkSynthOne.lib -> AkSynthOneSource.lib
在 SDK bin 文件中:
- AudioInput.dll -> AkAudioInput.dll
- ParametricEQ.dll -> AkParametricEQ.dll
- SilenceGenerator.dll -> AkSilenceGenerator.dll
- Sine.dll -> AkSineTone.dll
- SynthOne.dll -> AkSynthOne.dll
- ToneGen.dll -> AkToneGen.dll
在 SDK\include\AK\Plugin 中:
- AkSoundSeedWindFactory.h - > AkSoundSeedWindSourceFactory.h
- AkSoundSeedWooshFactory.h-> AkSoundSeedWooshSourceFactory.h
- AkSynthOneFactory.h -> AkSynthOneSourceFactory.h
在 Authoring\x64\Release bin 中:
- AudioInput.dll -> AkAudioInput.dll
- iZHybridReverb_Plugin.dll -> iZHybridReverb.dll
- iZTrashBoxModeler_Plugin.dll -> iZTrashBoxModeler.dll
- iZTrashDelay_Plugin.dll -> iZTrashDelay.dll
- iZTrashDistortion_Plugin.dll -> iZTrashDistortion.dll
- iZTrashDynamics_Plugin.dll -> iZTrashDynamics.dll
- iZTrashFilters_Plugin.dll -> iZTrashFilters.dll
- iZTrashMultibandDistortion_Plugin.dll -> iZTrashMultibandDistortion.dll
- ParametricEQ.dll -> AkParametricEQ.dll
- SilenceGenerator.dll -> AkSilenceGenerator.dll
- Sine.dll -> AkSineTone.dll
- SynthOne.dll -> AkSynthOne.dll
- ToneGen.dll -> AkToneGen.dll
- Wind.dll -> AkSoundSeedWind.dll
- Woosh.dll -> AkSoundSeedWoosh.dll
- AkPerforce.dll -> Perforce.dll
- AkSubversion.dll -> Subversion.dll
音频输出管理、二路输出和 Sink 插件的重大更改
2017.2 中对输出(Main、BGM、Game Controller Speaker、Headphone、DVR 等)的管理进行了重大更改。现在所有音频 Sink(与音频硬件进行通信的组件)均使用插件模型,包括 Audiokinetic 通过 Wwise 提供的 Sink。因此,若工程至少使用一个支持的平台,则将为其添加各种类型的 Audio Devices ShareSet。现在每条 Master Bus(位于混音层级结构顶层的总线)都必须有一个与其关联的 Audio Device,以便定义将混音发送至哪个输出。之前,此功能在初始化期间(通过 AkInitSettings)由代码实现或通过 AK::SoundEngine::AddSecondaryOutput 完成。在迁移至 2017.2 的过程中,将为现有工程的 Master Audio Bus 和 Master Secondary Bus 自动添加 System 设备。
![]() | 注意: 请务必检查您的工程中是否使用了 Master Secondary Bus!若之前用过,则必须选择适合的 Audio Device。同时,还须拆分总线层级结构,以便为别的输出单独设置 Master Bus。现在可创建任意数量的 Master Bus,一般每个硬件输出对应一条 Master Bus。 |
![]() | 注意: 若主输出使用了插件(如 PSVR 双耳插件),请确保将其链接至 Master Audio Bus 的 Audio Device 属性。若只有一个平台(如 PS4)支持此插件,请确保使用 Link/Unlink 功能来针对各个平台正确设置属性。 |
另外,还更改了与 Secondary Output 相关的 Listener 管理。总的来说,原有代码的行为会保持不变。不过,请注意,若每种设备类型下只能存在一个设备,则系统需要的 Listener 将会少一些。有关详细信息,请参阅“集成二路输出 ”。
重整输出管理涉及的 API 变更
- 函数
AK::SoundEngine::AddSecondaryOutput改成了AK::SoundEngine::AddOutput,使用了不同的参数。与RemoveSecondaryOutput相同。请参阅函数相关文档。为了通过AddOutput实现相同的功能,必须在 Wwise 工程中找到或添加适合的 Audio Device 名称。 - 移除了
AK::SoundEngine::Init(AkInitSettings) 和AK::SoundEngine::AddSecondaryOutput中使用的 enum 参数AkAudioOutputType。现在代之以 Audio Device 的插件机制实现这一功能。 AK::SoundEngine::GetSpeakerConfiguration、AK::SoundEngine::GetPanningRule、AK::SoundEngine::SetPanningRule、AK::SoundEngine::GetSpeakerAngles、AK::SoundEngine::GetSpeakerAngles、AK::SoundEngine::SetSpeakerAngles全部使用AkOutputDeviceID,而非像之前一样使用AkAudioOutputType。AkOutputDeviceID将由AK::SoundEngine::AddOutput或新函数AK::SoundEngine::GetOutputID返回。
振动支持的重大更改
重新设计了整个振动系统,现在使用通用的 Audio Device 插件机制和新的输出系统,而非像之前一样使用单独的代码路径。Motion 设备现在视为 Audio Device,而非像之前一样有着特殊身份。这样简化了 Motion 对象的代码和数据模型,便于使用音频管线的所有相同功能。因此,为了获得相同的 Motion 效果,需要对现有代码进行很多修改。不过 Wwise 工程的大部分更改都是以透明方式自动完成的。如需了解对工程所做的更改,请参阅下文的“ 基本工程迁移更改: ”部分。
重新设计 Motion 所涉及的 API 变更
移除了所有 AK::MotionEngine 名字空间。因此,为了替代 AK::MotionEngine::AddPlayerMotionDevice,现在必须使用适合的 Audio Device ShareSet 名称(通常为 Wwise_Motion)来调用 AK::SoundEngine::AddOutput。此 Audio Device 应已自动添加到工程中。
另外,还更改了与 Motion 相关的 Listener 管理。现在必须将与玩家关联的听者作为参数提供给 AK::SoundEngine::AddOutput,而非像之前一样调用 AK::MotionEngine::SetListenerPipeline。注意,在游戏中仅有一个玩家时,此听者可有可无。对于多人游戏,仍需恰当地管理听者。
有关如何在游戏中实现振动效果的详细信息,请参阅 SDK 帮助中的“集成 Wwise Motion ”;有关 Secondary Output 的概要信息,请参阅“集成二路输出 ”。
基本工程迁移更改:
现有工程将自动迁移至新的系统。工程中的更改罗列如下:
- 在 Master-Mixer Hierarchy 中, Motion Bus 变成了 Audio Bus 。
- Motion FX 变成了 Sound FX 。 Motion Bus 引用改成了 Output Bus 引用。同时,启用了“不沿用 Output Bus 父对象”功能(如有父对象);因为要使用 Output Bus 引用,所以请确保存在通路。
- Motion Source 变成了 Source Plugin,同时添加了 SFX Language 规范。移除了 DeviceCompanyID 和 DevicePluginID。
- 我们希望在迁移之后振动效果能尽可能流畅工作,所以在工程中至少有一个 Wwise Motion 支持的平台时,将在 Audio Devices Default Work Unit 中自动添加新的 Wwise Motion ShareSet。有关例外情况,请参阅下文注释。
- Master Audio Bus、Master Secondary Bus 和 Master Control Bus 的 Audio Device ShareSet 引用将默认设为 System。
- 若工程中提供相应支持,则将把 Wwise Motion ShareSet 指派给 Master Motion Bus 或 Motion Master Bus。有关例外情况,请参阅下文注释。
- 在 Wwise 设计工具中,移除了 Property Editor 的 Motion 选项卡。
![]() | 备注: 若工程中未使用振动效果(Motion Bus 未分配任何引用),则将删除工程中的所有 Motion Bus。另外,即便对于支持振动效果的工程,也不会添加 Wwise Motion ShareSet。 |
Audio-to-Motion 迁移:
- 对 Motion Bus 的引用现在改为迁移之前的 Motion 总线的 Auxiliary Bus 子对象的 User Aux Send,以前的 Motion 总线已迁移至常规 Audio Bus。也就是说,为了确保 Motion Aux Send 生效,将隐含针对迁移对象启用“不沿用User Aux Send”功能。有关隐含意义的详细信息,请参阅下文的“从 Motion Bus 引用转为 User Auxiliary Send 对 Audio-to-Motion 的隐含意义 ”。
- Motion Low Pass 属性变成了 Auxiliary Send LPF。
- Motion Volume Offset 属性变成了 Auxiliary Send Volume。
从 Motion Bus 引用转为 User Auxiliary Send 对 Audio-to-Motion 的隐含意义
因为现在使用基本的 User Aux Send 而非单独的 Motion Bus 路径,因此出现了以下情况:
- 若 Sound SFX 或 Music Track 已有 4 个 User Aux Send,则将不迁移 Audio-to-Motion 对象。
- 在将 Motion Bus 引用转换为 User Aux Send 引用的过程中,将清除所述对象的 User Aux Send。
- 若定义了 User Aux Send 而未启用 Override parent 功能,则将移除 User Aux Send。这样有助于减少现有 User Aux Send 造成的 Audio-to-Motion 迁移失败。
![]() | 备注: 对于下文小节:在复制 User Aux Send 的过程中,将复制总线引用、音量和 LPF。同时,还将复制音量或 LPF 所应用的 RTPC、Modulator LFO、Modulator Envelope 以及 Curve 或 Modifier。在加载迁移工程时,为了避免 ID 冲突,将重新生成 ID(唯一 ID 和 ShortID)。若仍存在冲突(大多为 ShortID 问题),则 Wwise 工程加载程序将解决冲突,并在 Project Load Log 中显示警告消息。 |
![]() | 警告: 您可以将 User Aux Send 从父节点复制到子节点,也可以将子节点设为继承父节点的 User Aux Send。这两项操作的基本效果是一样的。但是,若对父节点的 User Aux Send 进行了更改,则子节点中将无法反映所述更改。 |
迁移未针对 User Aux Send 启用 Override parent 的 Audio-to-Motion 对象
- 启用 Override parent。
- 将父对象的 User Aux Send 复制到子对象(迁移对象继承父对象属性)。若父对象包含来自 Audio-to-Motion 的 User Aux Send,则不复制 User Aux Send。
- 因为一个对象最多只能设置 4 个 User Aux Send,所以可能不会复制父对象的所有 User Aux Send。此时将优先维持现有音频行为,而不迁移 Audio-to-Motion 对象。
迁移已针对 User Aux Send 启用 Override parent 的 Audio-to-Motion 对象
- Override parent 保持启用状态。
- 因为已经启用了 Override parent,所以不需要从父对象复制 User Aux Send。
针对包含子对象的对象迁移 Audio-to-Motion
- 若子对象已经沿用父对象(迁移对象)的 User Aux Send,但其本身没有父级 Audio-to-Motion,则将迁移节点的新 Motion Aux Send 复制到子对象。若子对象已包含 4 个 User Aux Send,则不执行复制操作。在到达包含 Audio-to-Motion 的节点时,将停止从父对象到子对象的向下继承。因为,该节点为其子节点的源。
- 若子对象继承父对象的 User Aux Send,则无需将 User Aux Send 复制到子对象。因为,子对象会从父对象继承 Motion。
振动迁移的其他限制/更改
- 嵌套 Work Unit 的处理方式有误 – 在确定对象是否为顶层对象时,不会通过嵌套 Work Unit 向上继承节点层级结构。后果:
- 部分节点可能会被错当为顶层节点,并认为其包含 Audio-to-Motion(其实并不包含)。在存在 Motion Bus 引用且禁用了 Override Motion Output 时可能会出现此情况。
- 删除 Preset 中的振动相关信息。也就是说,不会尝试迁移所述信息。其中包括:
- Motion FX 和 Motion Source 对象
- Motion Volume、Motion Low-pass 和 Override Motion Output 属性
- Motion Bus 引用
- Wwise 设计工具中已经移除这些引用。
- 删除查询中的振动相关信息。其中包括:
- Motion Volume、Motion Low-pass 和 Override Motion Output 属性
- Motion Bus、Motion FX 和 Motion Source 对象类型
- Motion Output Bus 通路
- Motion Device 源
- Wwise 设计工具中已经移除这些引用。
重命名了 WAAPI 函数
为了更清晰地反映预定用途,重命名了以下函数:
ak.wwise.core.plugin.getList已重命名为ak.wwise.core.object.getTypesak.wwise.core.plugin.getProperties已重命名为ak.wwise.core.object.getPropertyNamesak.wwise.core.plugin.getProperty已重命名为ak.wwise.core.object.getPropertyInfo
之前所用名称已弃用,请不要用在新代码中。
更改了 WAAPI C++ SampleClient
- 若在构造函数中提供了超时参数,则将不编译
Client类的用途。客户端的方法调用将使用不同的超时参数,因此必须针对每个调用单独进行设置。 - 在 SampleClient 中使用的 Autobahn 库版本(即 AkAutobahn)现已独立于 SampleClient 构建为静态库。Wwise SDK 中现在已经包含该库。有关使用示例的信息,请参阅 SampleClient 源代码。
取消了对 32 位 Wwise 设计工具的支持
取消了对 32 位 Wwise 设计工具的支持。现在 Windows 和 macOS 上都只支持 64 位 Wwise 设计工具。
请注意,Wwise SDK 库仍提供 32 位支持。
采用 User-defined 定位的声障和声笼
在改进内置 LPF/HPF 管线的过程中,我们解除了将声障/声笼强制设为 Game-defined 定位的条件限制。若不希望为采用 3D User-defined 定位的声音设置声障/声笼,则必须为这些声音使用不同的游戏对象。
Auxiliary Bus 将处理干声信号
在 Wwise 2017.2 中,Auxiliary Bus 将处理干声信号,而非像之前一样忽略。在迁移过程中,会将 Auxiliary Bus 上受影响的 Effect 的干声信号静音。受此更改影响的 Effect 包括:
- Wwise RoomVerb
- Wwise Convolution Reverb
- Wwise Matrix Reverb
- Wwise Reflect
- Wwise Delay
- Wwise Harmonizer
- Wwise Pitch Shifter
- Wwise Stereo Delay
- iZotope Hybrid Reverb
![]() | 注意: 若 Effect 同时应用于 Auxiliary Bus 和另一类型的媒介,则也会将其静音。并且,这可能会改变工程的行为。 |
空间音频
几何构造驱动的散布
为了 Spatial Audio 能够实现几何构造驱动的散布计算,用户必须删除 Auxiliary Bus(门户)所用 Attenuation ShareSet 的 Spread 曲线。
Room Aux Send
为发送至 Room 的 Aux Send 时不应再调用 AK::SpatialAudio::SetEmitterAuxSendValue ,因为现在这些是在 AkRoomParams 中指定并完全由 Spatial Audio 控制。AK::SpatialAudio::SetEmitterAuxSendValue 会将 Aux Send 添加至 Room 的 Aux Send,于是该 API 可用于在同一 Room 内自定义或实现更为复杂的混响区域。


