立体混响声是一种音频,它提供可以完全环绕听众的声音表示。它可为遥远环境声音提供音频天空盒,尤其适用于 360 度视频和应用程序。
立体混响声以多声道格式存储。立体混响声以更加通用的方法来表示声场,而不是将每个声道映射到特定扬声器。您可以根据听者的方向(例如 VR 中用户的头部旋转)旋转声场。您还可以将声场解码为与扬声器设置相匹配的格式。
要在项目中选择立体混响声音频解码器,请打开项目的 Audio 设置(菜单:Edit > Project Settings > Audio)。从项目的可用解码器列表中选择 Ambisonic Decoder Plugin。Unity 没有内置解码器,但一些 VR 硬件制造商在其音频 SDK 中为 Unity 提供了解码器。查看您的目标平台制造商的文档,了解是否提供了适用于您的项目的解码器。
要导入立体混响声音频剪辑,请导入多声道 B 格式 WAV 文件(按照 ACN 组件排序并采用 SN3D 标准化)。在音频剪辑的 Inspector 窗口中,启用 Ambisonic。
要通过音频源播放立体混响声音频剪辑:
在 Unity 播放立体混响声剪辑时,会解压缩文件(如果需要),然后通过立体混响声解码器解码以将其转换为项目的选定扬声器模式。然后应用音频源的效果。
注意: 立体混响声音频剪辑的混响区会被禁用。
有关如何编写插件的信息,请参阅有关原生音频插件 SDK 和空间音响 SDK 的 Unity 用户手册页面。您还应该下载音频插件 SDK。
立体混响声音频解码器的 AudioPluginInterface.h
有两项更改:
UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder
。UnityAudioAmbisonicData
。在插件扫描阶段,此标志通知 Unity 此效果是立体混响声解码器。然后 Unity 允许在您音频的 Project settings 设置中将该解码器显示为立体混响声解码器选项。
definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
UnityAudioAmbisonicData
结构类似于 Unity 传递到空间音响的 UnityAudioSpatializerData
结构,但新增了一个 ambisonicOutChannels
整数。有关 UnityAudioSpatializerData
结构的更多信息,请参阅关于空间音响效果元数据的空间音响 SDK。
对于 UnityAudioAmbisonicData
结构,ambisonicOutChannels
应该设置为 DefaultSpeakerMode
的声道数。立体混响声解码器放在 Unity 音频管线中非常靠前的位置,ambisonicOutChannels
告知插件 Unity 需要使用多少个输出声道。
如果您要播放一阶立体混响声音频剪辑(包含 4 个声道),而您的扬声器模式是立体声(只有 2 个声道),则为立体混响声解码器的进程回调传入的输入和输出声道数将为 4。ambisonicOutChannels
字段将设置为 2。插件应将其空间定位数据输出到前 2 个声道,并将另外 2 个声道清零。
Unity 立体混响声源框架可以支持一阶立体混响声。插件接口包含用于支持双耳立体声、四声道输出的信息,但由插件自行决定支持哪些输出。最初,立体混响声解码器插件支持一阶立体混响声源和双耳立体声输出。不支持二阶立体混响声。
框架中未提供任何特定于不同立体混响声格式的内容。如果剪辑的格式与立体混响声解码器插件的预期格式相匹配,立体混响声应该可以正常工作。Unity 的首选立体混响声格式是 B 格式(按照 ACN 组件排序并采用 SN3D 标准化)。