AtomAudioVolume

概要

AudioVolume是UE4音频的3D空间设计功能,而AtomAudioVolume是将AudioVolume用于ADX2的扩展类。 由CRIWARE UE4插件Ver.1.27.11.00起新增此功能。 AtomAudioVolume是根据3D倾听者的进入或退出而更改3D音效的参数。 变化的强度与AtomAudioVolume边界和倾听者间的距离对应。
AtomAudioVolume功能主要分为两种类型。
  1. 在倾听者进入或退出AtomAudioVolume边界时切换DSP Bus Snapshot设置的功能
  2. 按照倾听者进入或退出与AtomAudioVolume边界之间的距离来更改音频参数(BusSendLevel和AisacControl Value等)的功能 . 
前者为影响整体Level的设置,后者则为仅影响AudioVolume中的音频设置。

使用示例

此使用示例中假设此游戏为动作角色扮演游戏。
  1. 此游戏为第三人称视角游戏。
  2. 摄像机坐标始终与3D倾听者的坐标一致。
  3. 于玩家角色的Actor添加AtomComponent并播放Voice的Cue。
  4. 在玩家角色的行走动画中配置PlayAtomCue触发器,播放脚步声的Cue。
  5. 准备可供玩家探索的洞穴地图。
  6. 设计者希望“在洞穴地图中让玩家角色发出的所有Cue附加回响效果”。
此时,游戏开发者可以在洞穴内部空间重叠配置AtomAudioVolume Actor。 通过正确设置此AtomAudioVolume,可以让玩家在进入洞穴后所播放Cue全部带有混响。 也可以设置为随着玩家深入洞穴而增强混响的效果。
可以为每个SoundAtomCue Asset设置指定受AtomAudioVolume设置影响的声音。 例如,用于BGM的Cue也可以设置为不受AtomAudioVolume影响。

如何使用

准备ADX2数据

在CRI Atom Craft的准备工作

使用AtomAudioVolume时,需要使用在CRI Atom Craft v3.43.05中添加的json文件导出功能。 需要在CRI Atom Craft输出ACF数据的json文件并导入至UE4编辑器,准备DataTable Asset。 此DataTable Asset将复制ACF文件内信息,而AudioVolume则引用此Asset。
atom_audio_volume_export_json.png
CRI Atom Craft v3.43.05或以后版本中,请有效化WithACFJson复选框并进行构建。 除输出ACF、ACB、AWB文件外,将同时输出json文件。 此文件将包含ACF信息。
注意
请务必使用相同版本的Atom Craft项目来构建的ACF文件和json文件。 以上两个文件内容如有任何差异,则可能导致意外问题。

准备UE4 Asset

导入至UE4

将ACF文件、ACB文件和json文件导入至UE4。 导入json文件时,如下图所示,从“选择数据表的列类型”中选择 "AcfDataTable" 。 选择后将创建AtomConfig Asset、AtomCueSheet Asset和DataTable Asset。 预设情况下,将自动创建在ACB文件中的各个Cue的SoundAtomCue Asset。
atom_audio_volume_import_json.png

有效化SoundAtomCue Asset的EnableAudioVolume设置

在CRIWARE UE4插件,将使用AtomComponent和PlayAtomCue触发器的功能来播放3D音效。 AtomComponent和PlayAtomCue引用SoundAtomCue Asset。 从此SoundAtomCue Asset播放的ADX音频如果需要受AudioVolume影响时,请对该Asset进行特别的设置。
atom_audio_volume_soundcue_setting.png
在Asset编辑器中打开要播放的SoundAtomCue Asset,启用"EnableAudioVolume"复选框。 启用后此SoundAtomCue Asset将受到配置在关卡上的AudioVolume影响。
要允许自由移动声源时,必须从SoundAtomCue Asset设置中启用“IsMovable”复选框。 除了移动声源外,还需要自由进出AudioVolume时,请同时启用“CanStraddleAudioVolume”复选框。 但这些设置可能会大大增加AudioVolume的处理负荷,因此请仅用于重要的声源。

设置UE4项目

在UE4编辑器的菜单栏上选择“编辑”–> “设置项目”–>“CriWare”,打开CRIWARE UE4插件的设置画面。
atom_audio_volume_use_datatable.png
如上图所示,于“AtomConfig”属性中设置AtomConfig Asset。 然后,于“AtomConfigDataTable”指定从ACF数据的json文件创建的DataTable Asset。 重新启动UE4编辑器将启用以上设置。

补充事项

要同时从多个设备输出音频,则需要在各个设备创建AsrRack。 可以在SnapshotSwitchSettings的元素中设置支持目标设备的AsrRackID。

设置AudioVolume

本节将介绍在AtomAudioVolume中可以设置的各种参数。
atom_audio_volume_settings_parameter_list.png

Use Snapshot Settings

启用此标记时,可以随着倾听者进入或退出AtomAudioVolume切换DspBusSettings和Snapshot。 也可以在BusSettings添加元素。

Snapshot Switch Settings 元素的详细信息

  • Asr Rack ID : 要使用的 ASR Rack 的 ID
  • Dsp Bus Settings ID : 要使用的 DspBusSettings 的 ID
  • Snapshot ID : 要使用的 Snapshot 的 ID
  • Fade Time : DspBusSetting转换完成之前的时间

Use BusSend Settings

启用此标记时,可以随着倾听者进入或退出AtomAudioVolume时的进入距离更改Bus Send Level。 也可以在BusSendInterpolateSettings添加元素。

BusSendInterpolate Settings 元素的详细信息

  • Dsp Bus Settings ID : 用于指定使用的 Dsp Bus Settings Name 的 ID
  • Bus ID : 需要更改参数的总线(Bus)的ID
  • Bus Send Level for AudioVolume Inside: 当倾听者和声音在相同位置的AtomAudioVolume时的值
  • Bus Send Level for AudioVolume Outside : 当倾听者和声音在不同位置的AtomAudioVolume时的值
  • Area Width : 倾听者进入 AtomAudioVolume 内部时,从 BusSendLevelForAudioVolumeoutside 到 BusSendLevel 转换完成之前的距离

Use AisacControl Settings

启用此标记时,可以按照倾听者进入或退出AtomAudioVolume的进入距离更改 AisacControl Value 。 也可以在AisacControlInterpolateSettings添加元素并设置值。

Aisac Control Interpolate Settings 元素内参数

  • Aisac Control ID : 要使用的 Aisac Control 的 ID
  • Aisac Value for AudioVolume Inside: 当倾听者和声音在属于相同AtomAudioVolume时的使用值
  • Aisac Value for AudioVolume Outside: 当倾听者和声音在属于不同AtomAudioVolume时的使用值
  • Area Width : 倾听者进入 AtomAudioVolume 内部时,从 AisacValueForAudioVolumeoutside 到 AisacValue 转换完成之前的距离

Atom Brush Color

可以设置在关卡上配置的AtomAudioVolume的线框(Wire Frame)颜色。

Max distance for EntranceVolume

倾听者距离比 EntranceVolume 设置值更大时,则不会计算倾听者和EntranceVolume之间的距离。

Switch Interpolation Inside for Bus

启用标记后,将在AtomAudioVolume内側执行Bus Send Level参数转换的区域。

Switch Interpolation Inside for Aisac

启用标记后,将在AtomAudioVolume内側执行AisacControl Value参数转换的区域。

如何在AtomAudioVolume切换DSP Bus Snapshot

以下将介绍在倾听者进入或退出AtomAudioVolume边界时,如何切换DSP Bus Snapshot设置。
  1. 在关卡上配置AtomAudioVolume。
  2. 选择在关卡上配置的AtomAudioVolume后,在详细信息选项卡上选中并启用UseSnapshotSettings(请选中右侧的复选框)。
  3. 添加一个 SnapshotSwitchSettings 的元素。
  4. 设置DspBusSettingsID为目標值。根据此值更改DspBusSettingsName的显示字符串。
  5. 设置SnapshotID为目標值。根据此值更改SnapshotName的显示字符串。
  6. 输入在FadeTime中切换Dsp Bus Snapshot时的转换时间(秒)。

详细信息

按照倾听者位置的参数控制

  1. 可以根据倾听者相对AtomAudioVolume表面的进入或退出距离更改音频参数(BusSendLevel和AisacControl Value等)。 从声源播放声音的音频参数有以下两种类型。
  2. 声源和倾听者属于相同AtomAudioVolume时。
  3. 声源和倾听者属于不同的AtomAudioVolume时。
从AtomAudioVolume的角度而言,
  • 前者参数是“当倾听者在内側时的参数(Inside参数)”。
  • 后者参数是“当倾听者在外側时的参数(Outside参数)”。
atom_audio_volume_inside_and_outside_param.png
黄色区域、蓝色区域和灰色区域分别为不同的AtomAudioVolume。 上图黄色区域中的图标代表倾听者。 蓝色区域中的图标则代表声源。
  • 倾听者停留在黄色区域时,在从声源播放的音频将使用“Outside参数”。
  • 倾听者移动至蓝色区域时,音频参数将转换为“Inside参数”。
  • 倾听者从蓝色区域移动到黄色或灰色区域时,将转换为“Outside参数”。
可以使用AtomAudioVolume的“Area width”属性,设置从Outside参数完全转换至Inside参数的距离。

EntranceVolume的参数控制

倾听者相对于AtomAudioVolume的进入距离通常以最接近倾听者坐标值的AtomAudioVolume表面点为准来计算。
下图所示为AtomAudioVolume的倾听者进入距离。
  • 此白色房间代表AtomAudioVolume本身。
  • 蓝色人代表倾听者,从位置1移動至位置2。
  • 于位置1时,最靠近倾听者坐标值的墙是"Wall (A)"。
  • 于位置1时,绿色虚线的长度为实际的进入距离。
  • 于位置2时,最接近倾听者坐标值的墙是"Wall (B)"。
  • 于位置2时,橘色虚线的长度为实际的进入距离。
atom_audio_volume_distance_to_apply.jpg
需要使用进入距离需要以 "Wall (A)" 的门口为基准时, 可以使用 "EntranceVolume" 功能来实现。 顾名思义,此功能即是定义AtomAudioVolume入口的Volume。 EntranceVolume是以AtomAudioVolume计算倾听者的进入距离为基准时的动作。 以上图为例,在 "Wall (A)" 的门口上重叠配置EntranceVolume,就可以把蓝色虚线作为位置2的进入距离。

关联到AudioVolume的EntranceVolume

如果未将放置在关卡上的EntranceVolume与AudioVolume相关联,则将无法识别哪个是代表的AudioVolume入口。 要将EntranceVolume与AudioVolume关联,在AudioVolume与EntranceVolume重复的状态下,需要于AudioVolume详细信息面板中 启用"Auto Settings Entrance Volume"标记和"Auto Settings Neighbor AudioVolume to EntranceVolume"标记。
atom_audio_volume_entrance_volume_settings.png
注意
EntranceVolume是通过AudioVolume和EntranceVolume之间的碰撞(Collision)来进行判断,因此如果EntranceVolume进入了AudioVolume内时 将被关联。 此碰撞的预设Profile是Trigger。 在此,根据用户判断的设置,将作为在WorldDynamic(世界动态)更改为Overlap(重叠)的碰撞设置, 因此在某些情况下,您可能无法将EntranceVolume与AudioVolume相关联。 为了应对这种情况,在AudioVolume的設置項目中提供了碰撞Profile。如附图所示, 可以在此项目中检测名为“Collision Profile for Detecting EntranceVolume”的EntranceVolume。 通过在碰撞设置中指定“WorldDynamics”为“Overlap”的碰撞,可以在此关联“EntranceVolume”。
atom_audio_volume_collision_profile_for_entrancevolume.png

对 AtomAudioVolume 的 EntranceVolume 设置

对AtomAudioVolume设置AtomEntranceVolume的方法如下:
  1. 对关卡中的AtomAudioVolume,在其想作为入口的边界上放置AtomEntranceVolume。
  2. 在关卡上选择AtomAudioVolume,并在详细信息面板中批量启用“Auto Setting Entrance Volume”标记,然后启用“Auto Setting Neighbor AudioVolume To EntranceVolume”标记。
注意
  • 如果您创建的AtomAudioVolume具有复杂的形状,则可以通过将AtomEntranceVolume的形状设置为简单的形状(例如长方体)来减轻处理负担。
  • 添加或删除新的AtomAudioVolume和AtomEntranceVolume时,对新添加的音量相邻的所有AtomAudioVolume的“Auto Setting Entrance Volume”标记和“Auto Setting Neighbor Audio Volume To Entrance Volume”标记,请禁用后重新启用,以重新设置所有AtomAudioVolume和AtomEntranceVolume的连接信息。另外,为了防止连接信息遗漏,建议选择所有AudioVolume后重新启用这两个标记。

Tips

Volume的可视化

如何在应用程序运行(例如PIE)时放置Volume

当AtomAudioVolume或AtomEntranceVolume放置在关卡上时,可能需要在PIE等执行过程中确认Volume的放置位置。 在这种情况下,通过在控制台命令行中输入“show Volumes”,可以使用线框可视化放置在关卡上的Volume。
atom_audio_volume_show_volumes_command.png

改善了Volume放置在关卡上时的可见性

AtomAudioVolume或AtomEntranceVolume等在放置时将于线框中显示。 因此,Volume越大越复杂,就越难确认它是否正确放置在预期的区域内。

UE4的Brush功能是用于调整已放置的 Volume。 设置为BrushEditing模式时,选中的Volume将以半透明的颜色显示,将更容易识别其突出部分。

atom_audio_volume_improve_visivility_for_editing.png

然后,当找到突出部分时,您可以通过添加、移动或删除Volume的面、边和顶点作出调整。

atom_audio_volume_editing_brush.png

通过调整等方式增加了Volume的顶点后,最好尽量删除不需要的顶点。调整后可以通过按下BrushEditing面板的Optimize按钮删除不需要的顶点。

atom_audio_volume_optimising.png

此外,随着开发的进行,关卡中将放置各种Volume。 在这种情况下,将只会显示您需要确认的Volume。 要仅显示要确认的Volume时,您可以通过从Viewport的“Show”选项卡中仅选中要显示的Volume来限制要显示的Volume。

atom_audio_volume_limitation_volume_visibility.png

AtomAudioVolume的处理负荷

处理负荷增加的情况

由于以下情况可能会增加处理负荷,应避免使用。
  • 使用多个未设置EntranceVolume的AtomAudioVolume时
  • 嵌套重叠多个AtomAudioVolume时
  • 在AtomAudioVolume设置多个EntranceVolume时
  • 大量新增AtomAudioVolume的音频参数设置时(例如:添加了数百种转换至AisacControl Value的音频参数等)
  • 配置了复杂形状的AtomAudioVolume时(例如:在关卡上配置存在数千个顶点数量的AtomAudioVolume时)
  • EntranceVolume 的形状复杂时
  • 使用了多个有效化Movable标记和StraddleAudioVolume标记的SoundAtomCue Asset时

如何减轻处理负担

可以通过以下方法减少由于处理AtomAudioVolume而造成的CPU负荷。
  • 在SetEnable函数将不需要的AtomAudioVolume更改为Disable状态
  • 使用SoundAtomCue的Culling功能降低远离倾听者位置的音频数量

AtomAudioVolume的碰撞事件

AtomAudioVolume可以创建 OnActorBeginOverlap和 OnActorEndOverlap等的事件。 在UE4编辑器右键单击在关卡的Outliner(大纲视图)中显示的AtomAudioVolume, 选择“创建事件”->“ OnActorBeginOverlap”。 如下图所示可以指定Collision Profile来获取事件。
atom_audio_volume_collision_setting.png

分组AtomAudioVolume

使用AtomAudioVolume的分组功能可以 以组为单位切换“Inside参数”和“Outside参数”。
按照倾听者位置的参数控制 所述, 将根据倾听者是否入侵AtomAudioVolume来切换“Inside参数”和“Outside参数”。
许多情况下,游戏中仅存在一位倾听者。 当倾听者进入任何一个AtomAudioVolume时,则配置于其他Volume中的声源输出的音频 将全部使用各个Volume的“Outside参数”。
倾听者属于某一个AudioVolume时,可能需要在AtomAudioVolume中播放的相隔遥遠的音频 使用“Inside参数”。 此时,倾听者入侵的AtomAudioVolume和属于同一组的Volume中的音频, 全部都可以使用“Inside参数”。

如何设置

在以下画面可以设置分组功能。
atom_audio_volume_grouping.png
可以在上图的“AudioVolumeTags”属性中添加元素,并指定其Tag名称。 付加了相同Tag名称的AtomAudioVolume将属于同一组。

设置Switch Interpolation Inside的补充事项

要从AtomAudioVolume中的声源中播放音频,将使用Bus Send Level和AisacControl Value等参数。 这些参数将按照倾听者的进入距离转换至设置值。 将沿着AtomAudioVolume边界而产生实际参数转换的区域。 会随着倾听者在此区域中移动时更改参数。
AtomAudioVolume的参数转换区域如下图所示。
  • 此白色房间代表AtomAudioVolume本身。
  • 绿色区域是参数转换区域。
  • 在蓝色区域则不会转换参数。
atom_audio_volume_parameter_changing_area_default.jpg
此为预设的参数转换区域,也可以使用AtomEntranceVolume更改转换区域的位置和方向。 例如,在上图门口位置配置了EntranceVolume后,参数转换区域将如下图所示。
atom_audio_volume_parameter_changing_area_outside.jpg
有效化AtomAudioVolume的SwitchInterpolationInside标记时, 可以将参数转换区域设置于AtomAudioVolume内侧,如下图所示。
atom_audio_volume_parameter_changing_area_inside.jpg

示例

CRIWARE SDK for UE4捆绑了示例项目CriUE4Sample.uproject。 参照 样本 ,在UE4编辑器打开此示例项目。
AtomAudioVolume的样例Level相当于示例项目中的Atom080_Audiovolume Level。
atom_audio_volume_sample.jpg

操作使用说明

Atom080_Audiovolume 为以下的Level。
  • 地图以不同墙壁颜色代表3个房间。
  • 各个房间分别有其个别的AtomAudioVolume。
  • 在关卡中除了玩家角色外,还配置了3个小车型的Actor。
  • 在各车型Actor上方将播放警笛声。
  • 车型Actor会在遇到玩家后追赶玩家。
  • 按照车型Actor入侵的房间颜色更改警笛声音高。
此示例是使用AtomAudioVolume实现车型Actor移动至房间时逐渐更改音高的动作。

如何在示例中设置AtomAudioVolume

以下将介绍此示例的AtomAudioVolume设置方法。

Step 1

配置作为基础的房间。
( 大纲视图上的 Aisle , WideFloor , NarrowFloor )

Step 2

从模式选项卡中选择与房间大小相符的AtomAudioVolume ,并配置在关卡上。
( 大纲视图上的 AtomAudioVolume1 、 AtomAudioVolume2 , AtomAudioVolume3 )

Step 3

从模式选项卡中选择各房间入口的AtomEntranceVolume,并配置在关卡上。
( 大纲视图上的 AtomEntranceVolume1 、 AtomEntranceVolume2 )

Step 4

在内容浏览器创建已配置了AtomAudioVolumeParameter Asset的AtomAudioVolume的数量后,打开Asset浏览器。
( ADX2Samples/Atom080_AudioVolume/Sounds/AtomAudioVolumeParameterSettings 以下的 AAV_Blue , AAV_Green , AAV_Red )

Step 5

设置各AtomAudioVolumeParameter Asset参数。

Step 6

在关卡上配置的AtomAudioVolume中设置已创建的AtomAudioVolumeParameter。

Step 7

有效化在各AtomAudioVolumeParameter Asset的"AutoSettingsEntranceVolume" 和 "AutoSettingNeighborAudioVolumeToEntranceVolume" 标记。
( 重新配置EntranceVolume后,建议先选择并一次过无效化所有AtomAudioVolume后,再重新有效化。 )

Step 8

在Asset编辑器打开想要进行AtomAudioVolume参数转换音频的SoundAtomCue Asset,有效化"EnableAudioVolume"标记。
( ADX2Samples/Atom080_AudioVolume/Sounds 以下的SoundAtomCue Asset )
声源要在AtomAudioVolume中移动时,请有效化SoundAtomCue Asset的 "IsMovable"标记。 而要将声源脱离到AtomAudioVolume外面时,则有效化SoundAtomCue Asset上的 "IsMovable" 和"CanStraddleAudioVolume" 标记。

Step 9

完成上述设置后,请在PIE等运行游戏并播放声音。 可以确认AtomAudioVolume参数的转换动作。