|
Wwise SDK 2025.1.3
|
有了那么多 新功能概述2017.1 “新特性”,您在迁移到 Wwise 2017.1 时注意几件事。
在 Wwise 2017.1 中听者现在是游戏对象了。现在 8 个听者的限制也已不复存在,API 也进行了简化,以删除只在听者上运行的调用——它们现在可在任何游戏对象上运行。在 Wwise 中使用多个听者的游戏需要为每个听者注册一个游戏对象——它们现在对每个听者都会进行完整混音。
总线不再是全局实体,它们可以用类似 Actor-mixer 层级结构中声部的方式进行多次实例化。现在可以在属于混音总线的参数上设置游戏对象范围的 RTPC。但是,要注意到总线一般性设置选项卡中的“声部”参数属于播放声部的游戏对象,而不是总线的游戏对象。
关联到总线实例的游戏对象是由两点结合而决定的:Wwise 工程中的Enable Positioning属性,以及由游戏定义的发声点-听者关联。请参阅 设计工具中的行为或‘Positioning Enabled(已启用定位)’标志已经变更 和 构建 Voice Graph 的算法已更改 了解更多详情。动态信号联通和 3D 定位总线现在在 Wwise 中成为了可能,但是,基本的设置会有不同的声源从一个或更多“发声点”游戏对象进行播放,并且整个混音总线链在另一个游戏对象“听者”上播放。
Wwise 不会为你提供游戏对象。想要迁移到 2017.1 并拥有相应的行为,需要在初始化时注册一个游戏对象,并将其设置为默认听者。
指派一个游戏对象作为默认听者只是为了方便。这样做就不需要在注册之后的游戏对象后调用 SetListeners()——会有默认听者被自动指派为它们的听者。
请注意,如果您使用 SoundFrame,那么就不需要访问 AK::SoundEngine::SetDefaultListeners API,而是需要直接调用 SetListeners() 。
当通过 API 来设置一个游戏定义的发送时,现在需要填写一个附加字段来指定哪个游戏对象将收取这次发送(需要辅助总线 ID 和游戏对象 ID 两者来确定一个混音总线实例)。在设置游戏定义的辅助发送时指定游戏对象也是一种添加发声体-听者关联的方式。这比较类似于 SetListeners() API,它会为主总线输出定义发声体-听者关联(也叫做“干路径”)。
为了方便,可以把 listenerID 字段设置为 AK_INVALID_GAME_OBJECT,这样就会让声音引擎直接使用那些已用 SetListeners() 或 SetDefaultListeners() API 指定的听者。这个功能有助于代码迁移以及最常见的辅助发送场景,这样可以让听者与直接输出的听者相同。
在 Wwise 2017.1 中,总线可以辅助发送到其他总线,这打开了信号通路方面的创新大门。就像声部一样,辅助发送可以由用户定义,也可以由游戏定义。当从总线中创建辅助发送时,有几件事需要牢记:
设计工具中的 Enable Positioning(启用定位)标志现在有了一个很重要的目的:它会决定是否要在声部图中该节点处评估当前游戏对象的发声体-听者关联。此外,2D 声像摆位器已脱离 Enable Positioning 标志;现在可以不用定位声音直接进行声像摆位。而且,现在可以有 Positioning Enabled 的 2D 声音了;这意味着我们将会评估发声体-听者关联(下游节点将在别的游戏对象上),但不会进行 3D 空间化。以下是一些 Enable Positioning 标志使用的例子:
![]() | 备注: 如果您在 Voice Graph 中出乎意料地看到了 Master Audio Bus 的两个实例,那么它很可能表示您在信号链中某处忘了设置 Enable Positioning 标志。 |
在 2017.1 版之前,播放声音时构建的声部图完全由 Wwise 工程指定,游戏能控制的部分非常少。在 Wwise 2017.1 中,声部图基于两点的结合:由 Wwise 工程中的层级所定义的通路,以及游戏中定义的发声体-听者关联。构建声部图的算法可以总结为以下:
定义声音通路的规则可能比较复杂。在 Wwise Advanced Profiler 中的新声部图现在会根据游戏对象来对节点进行分组,在针对通路问题进行调试时是极为有用的工具。
为了保持一致性,AkGameObjectID 现在在所有平台上都是 64 位,包括原生 32 位平台。
游戏对象 ID 现在可以是任意 64 位无符号整数,范围是从 0 到 0xFFFFFFFFFFFFFFDF(它是 -33,一个有符号的整数)。游戏对象 ID 范围 0xFFFFFFFFFFFFFFE0(-32)到 0xFFFFFFFFFFFFFFFF (-1) 是保留给内部使用的。transport 游戏对象,由设计工具注册,现在使用的游戏对象 ID 是 0xFFFFFFFFFFFFFFFE(-2)。
随着游戏对象和听者系统的变更,Watch 不再兼容,并将被重置。
使用官方 2017.1 之前版本所构建的插件与 Wwise 2017.1 不兼容。它们需要重新构建。
以下这些标志不再需要,所以它们被移除了。
AkPluginInfo::bIsAsynchronous AkFileSystemFlags::bIsFromRSX 在 Wwise 2017.1 之前,声音引擎会对 Random 和 Sequence Containers 的 Trigger Rate 的 Transition Time 做值域限制,使这个时间不可能小于 22 ms。我们移除了这一限制来鼓励更有创意的内容。
Metro 平台重命名为 Universal Windows Platform,并且也支持 Visual Studio 2017。
不再为所有发声体-听者对进行球坐标的系统计算。因此,它们不再直接从 AkEmitterListenerPair 中可用。Azimuth() 和 Elevation() 属性访问方法已被移除。使用 AkEmitterListenerPair 球坐标的插件和游戏代码将需要调用新服务 AK::IAkGlobalPluginContext->ComputeSphericalCoordinates() 来获取坐标。推荐的方法是使用笛卡尔(Cartesian)坐标和接受笛卡尔变换的 AK::IAkMixerPluginContext::Compute3DPositioning() 的重载。
使用 UseExisting 选项来导入制表符分割文件时的行为已经变更了。和以前一样,如果某处的 Wwise 已经存在,那么它会被重新使用。However, if a matching object is found and the source's WAV file name is different, the new source will be imported as a new inactive version.
ak.wwise.core.object.get 中添加了 where 变换。请参阅 transform 了解更多信息。ak.wwise.core.object.create 中添加了新的 merge 模式。请参阅 理解名称冲突模式 了解更多信息。ak.wwise.core.object.create 中创建 Virtual Folder(虚拟文件夹)的支持。使用 Folder 类型。请参阅 ak.wwise.core.object.create 了解更多信息。ak.wwise.core.object.preDelete 重命名为 ak.wwise.core.object.preDeleted。 ak.wwise.core.object.postDelete 被重命名为 ak.wwise.core.object.postDeleted。 ak.wwise.core.object.create 中创建 Events 和 Event Actions 的支持。ak.wwise.core.object.get 的支持。请参阅 ak.wwise.core.object.get 了解更多信息。ak.wwise.core.object.nameChanged, ak.wwise.core.object.notesChanged, ak.wwise.core.object.created, ak.wwise.core.object.preDeleted, ak.wwise.core.object.postDeleted, ak.wwise.core.object.childAdded, ak.wwise.core.object.childRemoved, ak.wwise.core.object.curveChanged, ak.wwise.core.object.attenuationCurveChanged, and ak.wwise.core.object.attenuationCurveLinkChanged.