AreaSoundVolume

概述

CRIWARE UE4插件的AreaSoundVolume功能可以在3D空间中指定环境声音时实现。 由CRIWARE UE4插件Ver.1.27.11.00起新增了此功能。
area_sound_volume_sample_image.jpg
上图黄色线框显示的是AreaAudioVolume。 以上两个AreaAudioVolume有如嵌套式结构,其中一个Volume覆盖了湖泊,另一个则覆盖了整个森林。 AreaAudioVolume可以模仿在广范围听到的环境声音,例如在湖泊付近能听到水声,在森林中能听到鸟声。
通常情况下,要在河流或森林等地图中的广范围创建发声环境时,可以使用放置多个点声源对象来实现。 例如可以创建多个UE4的AmbientSound Actor并将其分布在广范围。 调整每个声源的距离衰减的平衡,尽量使倾听者不管身在何处都能听到均匀的声音。 但是,请注意使用此实现方法时,每当地图的形状更改时都必须重新放置点声源。
使用AreaSoundVolume功能来实现环境声音则无需放置多个点声源或调整声源平衡。 更改了地图形状后,也可以通过更改AreaSoundVolume的形状来重新调整。

如何使用

要使用AreaSoundVolume功能,需要执行以下操作。
  1. AreaSoundVolume的创建并放置
  2. SoundAtomCue Asset的设置
  3. AreaSoundVolume的设置
各个操作如下。

AreaSoundVolume的创建并放置

首先,创建Brush对象以覆盖河流和森林等环境。 可以使用以下其中一个方法来创建。
  • 从"几何体"创建并放置Brush对象
  • 在关卡(Level)上从"模式"–>"绘制工具"的Brush对象绘制
在关卡上选择已创建的Brush对象, 然后从详细信息选项卡的“Actor”–>“转换Actor”中选择AreaSoundVolume。
注意
请注意此时创建的Brush对象不应包含凹陷位置。 AreaSoundVolume功能将计算倾听者的坐标与AreaSoundVolume边界之间的最短距离,再计算环境声音的声源坐标。 在Brush对象中创建凹陷位置的话,则可能无法如预期计算与倾听者的距离。 举例说,当倾听者移动到凹陷位置附近时,将使声源坐标产生急剧变化,听到导致意外的声音。 如果不能避免凹陷位置,或许可以在凹陷处放置多个AreaSoundVolume来解决此问题。

SoundAtomCue Asset的设置

在内容浏览器中双击要用作环境声音的SoundAtomCue Asset,并打开以下Asset设置画面。
area_sound_volume_sound_cue_settings.jpg
在上述画面中,启用 "UseAreaSoundVolume" 的复选框。

AreaSoundVolume的设置

在AreaSoundVolume的详细信息面板添加"Sounds"元素。 然后,在此元素中指定要播放的环境声音的SoundAtomCue Asset。
area_sound_volume_settings_parameter.png

只要完成并使用以上设置,将可以通过以下操作之一来实现AreaSoundVolume的环境声音。

  • 开始关卡时,会自动创建引用设置于AreaAoundVolume中的SoundAtomCue的AtomSound Actor,并开始播放音频(此为预设动作)。
  • 在AreaSoundVolume中放置引用上述已设置的SoundAtomCue中带有AtomComponent的Actor后播放音频。
  • 使用SpwanSoundAtLocation和PlaySoundAtLocation函数来指定AreaSoundVolume内的坐标并播放上述已设置的SoundAtomCue。
关于如何无效化上述预设动作,请参照 控制播放时机

详细信息

受AreaSoundVolume影响下的对象位置关系

AreaSoundVolume功能计算显示为AreaSoundVolume形状的Brush对象边界与倾听者的坐标间的最短距离。 根据此计算结果计算环境声音的声源坐标。 另外,环境声音的坐标将随着倾听者移动,同时更新每帧。
受AreaSoundVolume影响下的Brush、声源和倾听者的位置关系如下。
  • 当倾听者移动至Brush对象外侧时,声源将沿着Brush的形状追随倾听者移动。
  • 当倾听者移动至Brush对象内侧时,声源坐标则与倾听者坐标一致。
因此,也可以说AreaSoundVolume是可以创建拟似环境声音的功能。

距离衰减区域

声源的距离衰减区域

受AreaSoundVolume影响下的对象位置关系 介绍了声源沿着AreaSoundVolume的Brush对象外周形狀移动。 这里的声源指的是3D声源。 可以设置3D声源的音量衰减距离。 随着倾听者远离声源,音量将变小。 而超过指定的最大衰减距离时,音量会变为0。 3D声源周围将具有圆形的“距离衰减区域”。

环境声音的距离衰减区域

声源沿着AreaSoundVolume的Brush对象外周形狀移动后, 环境声音的真实距离衰减区域将覆盖Brush对象的外周。

Tips

多个AreaSoundVolume重叠时的动作

在某些情况下,可能需要将多个不同的AreaSoundVolume的某一部分彼此重叠放置。 于重叠区域中播放环境声音时,声源坐标为未定义。 更改各AreaSoundVolume的"Priority"设置,可以指定在哪个AreaSoundVolume中使用声源坐标。 将优先"Priority"中的最高设置。

AreaSoundVolume的碰撞(Collision)事件

使用OnActorBeginOverlap和OnActorEndOverlap事件可以捕捉倾听者 进入或退出 AtomAreaSoundVolume的一刻。 右键单击在UE4编辑器的关卡中的Outliner(大纲视图)所显示的AtomAudioVolume, 选择“创建事件” –> "OnActorBeginOverlap" 。 指定Collision Profile将可以获取事件。

Player从AtomAreaSoundVolume离开一定距离时的Sound控制

在AtomAreaSoundVolume中,具有当Player(倾听者)距离AtomAreaSoundVolume为指定距离以上时,声音自动停止的功能。 通过在AtomAreaSoundVolume的详细面板中,为"Sound Stop Distance"参数指定以cm(厘米)为单位的距离,如果倾听者 与AtomAreaSoundVolume的距离远于该距离,Sound将停止。
停止距离的判断有两种。 预设情况下,根据AtomAreaSoundVolume的Actor坐标进行判断。 需要通过碰撞进行判断时,请启用“Is Determination from Volume Boundary Plane”标记。 这将从碰撞表面与Player坐标之间的最短距离判断。
area_sound_volume_volume_boundary_plane.png

控制播放时机

预设在关卡开始时,自动创建引用AreaSoundVolume所设SoundAtomCue Asset的声源,然后开始播放音频。 要在任意的时机开始播放音频时,请将AreaSoundVolume的"IsAutoPlaySound"属性设置为false。
Blueprint中使用下图的CreateSound函数,可以获取AtomComponent数组并执行播放控制和参数设置。
area_sound_volume_blueprints.jpg

示例

CRIWARE SDK for UE4捆绑了示例项目CriUE4Sample.uproject。 根据 样本 在UE4编辑器中打开此示例项目。
AreaSoundVolume的样例关卡相当于示例项目中的Atom110_AreaSoundVolume关卡。

操作使用说明

Atom110_AreaSoundVolume 的关卡如下。
  • 地图上有森林和湖泊
  • 在森林地区,以鸟叫声("se_forest_sound"的Cue)作为环境声音播放
  • 森林地区被称为AtomAreaSoundVolume_ForForest的AreaSoundVolume覆盖
  • 在湖泊地区,以流水声("se_lake_sound"的Cue)作为环境声音播放
  • 湖泊地区被称为AtomAreaSoundVolume_ForLake的AreaSoundVolume覆盖
  • 当玩家角色进入或退出地图上的各AreaSoundVolume时将执行事件,并开始或停止播放环境声音
  • 在关卡蓝图中记载了事件处理
area_sound_volume_sample_image.jpg