版本

menu_open
Wwise SDK 2019.2.15
重要的迁移说明 2017.2

有了那么多 新功能概述 2017.2 “新特性”,您在迁移到 Wwise 2017.2 时注意几件事。

请仔细阅读以下重要迁移说明:

重命名了部分效果器插件和源插件

在 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 中:

在 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 将会少一些。有关详细信息,请参阅“integrating_secondary_outputs”。

重整输出管理涉及的 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 返回。 @subsection motion_migration_what_changes 振动支持的重大更改 重新设计了整个振动系统,现在使用通用的 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 帮助中的“integrating_elements_motion”;有关 Secondary Output 的概要信息,请参阅“integrating_secondary_outputs”。

基本工程迁移更改:

现有工程将自动迁移至新的系统。工程中的更改罗列如下:

  • 在 Master-Mixer Hierarchy 中, Motion Bus 变成了 Audio Bus
  • Motion FX 变成了 Sound FXMotion Bus 引用改成了 Output Bus 引用。同时,启用了“不沿用 Output Bus 父对象”功能(如有父对象);因为要使用 Output Bus 引用,所以请确保存在通路。
  • Motion Source 变成了 Source Plugin,同时添加了 SFX Language 规范。移除了 DeviceCompanyIDDevicePluginID。
  • 我们希望在迁移之后振动效果能尽可能流畅工作,所以在工程中至少有一个 Wwise Motion 支持的平台时,将在 Audio Devices Default Work Unit 中自动添加新的 Wwise Motion ShareSet。有关例外情况,请参阅下文注释。
  • Master Audio BusMaster Secondary BusMaster Control Bus 的 Audio Device ShareSet 引用将默认设为 System。
  • 若工程中提供相应支持,则将把 Wwise Motion ShareSet 指派给 Master Motion BusMotion 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_migration_aux_sends”。
  • 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.getTypes
  • ak.wwise.core.plugin.getProperties 已重命名为 ak.wwise.core.object.getPropertyNames
  • ak.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 内自定义或实现更为复杂的混响区域。


此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅