概要
- AudioVolume是UE4音频的3D空间设计功能,而AtomAudioVolume是将AudioVolume用于ADX2的扩展类。 由CRIWARE UE4插件Ver.1.27.11.00起新增此功能。 AtomAudioVolume是根据3D倾听者的进入或退出而更改3D音效的参数。 变化的强度与AtomAudioVolume边界和倾听者间的距离对应。
- AtomAudioVolume功能主要分为两种类型。
- 在倾听者进入或退出AtomAudioVolume边界时切换DSP Bus Snapshot设置的功能
- 按照倾听者进入或退出与AtomAudioVolume边界之间的距离来更改音频参数(BusSendLevel和AisacControl Value等)的功能 .
- 前者为影响整体Level的设置,后者则为仅影响AudioVolume中的音频设置。
使用示例
- 此使用示例中假设此游戏为动作角色扮演游戏。
- 此游戏为第三人称视角游戏。
- 摄像机坐标始终与3D倾听者的坐标一致。
- 于玩家角色的Actor添加AtomComponent并播放Voice的Cue。
- 在玩家角色的行走动画中配置PlayAtomCue触发器,播放脚步声的Cue。
- 准备可供玩家探索的洞穴地图。
- 设计者希望“在洞穴地图中让玩家角色发出的所有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。
- 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。
有效化SoundAtomCue Asset的EnableAudioVolume设置
- 在CRIWARE UE4插件,将使用AtomComponent和PlayAtomCue触发器的功能来播放3D音效。 AtomComponent和PlayAtomCue引用SoundAtomCue Asset。 从此SoundAtomCue Asset播放的ADX音频如果需要受AudioVolume影响时,请对该Asset进行特别的设置。
- 在Asset编辑器中打开要播放的SoundAtomCue Asset,启用"EnableAudioVolume"复选框。 启用后此SoundAtomCue Asset将受到配置在关卡上的AudioVolume影响。
- 要允许自由移动声源时,必须从SoundAtomCue Asset设置中启用“IsMovable”复选框。 除了移动声源外,还需要自由进出AudioVolume时,请同时启用“CanStraddleAudioVolume”复选框。 但这些设置可能会大大增加AudioVolume的处理负荷,因此请仅用于重要的声源。
设置UE4项目
- 在UE4编辑器的菜单栏上选择“编辑”–> “设置项目”–>“CriWare”,打开CRIWARE UE4插件的设置画面。
- 如上图所示,于“AtomConfig”属性中设置AtomConfig Asset。 然后,于“AtomConfigDataTable”指定从ACF数据的json文件创建的DataTable Asset。 重新启动UE4编辑器将启用以上设置。
补充事项
- 要同时从多个设备输出音频,则需要在各个设备创建AsrRack。 可以在SnapshotSwitchSettings的元素中设置支持目标设备的AsrRackID。
设置AudioVolume
- 本节将介绍在AtomAudioVolume中可以设置的各种参数。
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设置。
- 在关卡上配置AtomAudioVolume。
- 选择在关卡上配置的AtomAudioVolume后,在详细信息选项卡上选中并启用UseSnapshotSettings(请选中右侧的复选框)。
- 添加一个 SnapshotSwitchSettings 的元素。
- 设置DspBusSettingsID为目標值。根据此值更改DspBusSettingsName的显示字符串。
- 设置SnapshotID为目標值。根据此值更改SnapshotName的显示字符串。
- 输入在FadeTime中切换Dsp Bus Snapshot时的转换时间(秒)。
详细信息
按照倾听者位置的参数控制
- 可以根据倾听者相对AtomAudioVolume表面的进入或退出距离更改音频参数(BusSendLevel和AisacControl Value等)。 从声源播放声音的音频参数有以下两种类型。
- 声源和倾听者属于相同AtomAudioVolume时。
- 声源和倾听者属于不同的AtomAudioVolume时。
- 从AtomAudioVolume的角度而言,
- 前者参数是“当倾听者在内側时的参数(Inside参数)”。
- 后者参数是“当倾听者在外側时的参数(Outside参数)”。
- 黄色区域、蓝色区域和灰色区域分别为不同的AtomAudioVolume。 上图黄色区域中的图标代表倾听者。 蓝色区域中的图标则代表声源。
- 倾听者停留在黄色区域时,在从声源播放的音频将使用“Outside参数”。
- 倾听者移动至蓝色区域时,音频参数将转换为“Inside参数”。
- 倾听者从蓝色区域移动到黄色或灰色区域时,将转换为“Outside参数”。
- 可以使用AtomAudioVolume的“Area width”属性,设置从Outside参数完全转换至Inside参数的距离。
EntranceVolume的参数控制
- 倾听者相对于AtomAudioVolume的进入距离通常以最接近倾听者坐标值的AtomAudioVolume表面点为准来计算。
- 下图所示为AtomAudioVolume的倾听者进入距离。
- 此白色房间代表AtomAudioVolume本身。
- 蓝色人代表倾听者,从位置1移動至位置2。
- 于位置1时,最靠近倾听者坐标值的墙是"Wall (A)"。
- 于位置1时,绿色虚线的长度为实际的进入距离。
- 于位置2时,最接近倾听者坐标值的墙是"Wall (B)"。
- 于位置2时,橘色虚线的长度为实际的进入距离。
- 需要使用进入距离需要以 "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"标记。
- 注意
- EntranceVolume是通过AudioVolume和EntranceVolume之间的碰撞(Collision)来进行判断,因此如果EntranceVolume进入了AudioVolume内时 将被关联。 此碰撞的预设Profile是Trigger。 在此,根据用户判断的设置,将作为在WorldDynamic(世界动态)更改为Overlap(重叠)的碰撞设置, 因此在某些情况下,您可能无法将EntranceVolume与AudioVolume相关联。 为了应对这种情况,在AudioVolume的設置項目中提供了碰撞Profile。如附图所示, 可以在此项目中检测名为“Collision Profile for Detecting EntranceVolume”的EntranceVolume。 通过在碰撞设置中指定“WorldDynamics”为“Overlap”的碰撞,可以在此关联“EntranceVolume”。
对 AtomAudioVolume 的 EntranceVolume 设置
- 对AtomAudioVolume设置AtomEntranceVolume的方法如下:
- 对关卡中的AtomAudioVolume,在其想作为入口的边界上放置AtomEntranceVolume。
- 在关卡上选择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。
改善了Volume放置在关卡上时的可见性
- AtomAudioVolume或AtomEntranceVolume等在放置时将于线框中显示。 因此,Volume越大越复杂,就越难确认它是否正确放置在预期的区域内。
UE4的Brush功能是用于调整已放置的 Volume。 设置为BrushEditing模式时,选中的Volume将以半透明的颜色显示,将更容易识别其突出部分。
然后,当找到突出部分时,您可以通过添加、移动或删除Volume的面、边和顶点作出调整。
通过调整等方式增加了Volume的顶点后,最好尽量删除不需要的顶点。调整后可以通过按下BrushEditing面板的Optimize按钮删除不需要的顶点。
此外,随着开发的进行,关卡中将放置各种Volume。 在这种情况下,将只会显示您需要确认的Volume。 要仅显示要确认的Volume时,您可以通过从Viewport的“Show”选项卡中仅选中要显示的Volume来限制要显示的Volume。
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来获取事件。
分组AtomAudioVolume
- 使用AtomAudioVolume的分组功能可以 以组为单位切换“Inside参数”和“Outside参数”。
- 如 按照倾听者位置的参数控制 所述, 将根据倾听者是否入侵AtomAudioVolume来切换“Inside参数”和“Outside参数”。
- 许多情况下,游戏中仅存在一位倾听者。 当倾听者进入任何一个AtomAudioVolume时,则配置于其他Volume中的声源输出的音频 将全部使用各个Volume的“Outside参数”。
- 倾听者属于某一个AudioVolume时,可能需要在AtomAudioVolume中播放的相隔遥遠的音频 使用“Inside参数”。 此时,倾听者入侵的AtomAudioVolume和属于同一组的Volume中的音频, 全部都可以使用“Inside参数”。
如何设置
- 在以下画面可以设置分组功能。
- 可以在上图的“AudioVolumeTags”属性中添加元素,并指定其Tag名称。 付加了相同Tag名称的AtomAudioVolume将属于同一组。
设置Switch Interpolation Inside的补充事项
- 要从AtomAudioVolume中的声源中播放音频,将使用Bus Send Level和AisacControl Value等参数。 这些参数将按照倾听者的进入距离转换至设置值。 将沿着AtomAudioVolume边界而产生实际参数转换的区域。 会随着倾听者在此区域中移动时更改参数。
- AtomAudioVolume的参数转换区域如下图所示。
- 此白色房间代表AtomAudioVolume本身。
- 绿色区域是参数转换区域。
- 在蓝色区域则不会转换参数。
- 此为预设的参数转换区域,也可以使用AtomEntranceVolume更改转换区域的位置和方向。 例如,在上图门口位置配置了EntranceVolume后,参数转换区域将如下图所示。
- 有效化AtomAudioVolume的SwitchInterpolationInside标记时, 可以将参数转换区域设置于AtomAudioVolume内侧,如下图所示。
示例
- CRIWARE SDK for UE4捆绑了示例项目CriUE4Sample.uproject。 参照 样本 ,在UE4编辑器打开此示例项目。
- AtomAudioVolume的样例Level相当于示例项目中的Atom080_Audiovolume Level。
操作使用说明
- 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参数的转换动作。