概述
- CRIWARE UE4插件的AreaSoundVolume功能可以在3D空间中指定环境声音时实现。 由CRIWARE UE4插件Ver.1.27.11.00起新增了此功能。
- 上图黄色线框显示的是AreaAudioVolume。 以上两个AreaAudioVolume有如嵌套式结构,其中一个Volume覆盖了湖泊,另一个则覆盖了整个森林。 AreaAudioVolume可以模仿在广范围听到的环境声音,例如在湖泊付近能听到水声,在森林中能听到鸟声。
- 通常情况下,要在河流或森林等地图中的广范围创建发声环境时,可以使用放置多个点声源对象来实现。 例如可以创建多个UE4的AmbientSound Actor并将其分布在广范围。 调整每个声源的距离衰减的平衡,尽量使倾听者不管身在何处都能听到均匀的声音。 但是,请注意使用此实现方法时,每当地图的形状更改时都必须重新放置点声源。
- 使用AreaSoundVolume功能来实现环境声音则无需放置多个点声源或调整声源平衡。 更改了地图形状后,也可以通过更改AreaSoundVolume的形状来重新调整。
如何使用
- 要使用AreaSoundVolume功能,需要执行以下操作。
- AreaSoundVolume的创建并放置
- SoundAtomCue Asset的设置
- AreaSoundVolume的设置
- 各个操作如下。
AreaSoundVolume的创建并放置
- 首先,创建Brush对象以覆盖河流和森林等环境。 可以使用以下其中一个方法来创建。
- 从"几何体"创建并放置Brush对象
- 在关卡(Level)上从"模式"–>"绘制工具"的Brush对象绘制
- 在关卡上选择已创建的Brush对象, 然后从详细信息选项卡的“Actor”–>“转换Actor”中选择AreaSoundVolume。
- 注意
- 请注意此时创建的Brush对象不应包含凹陷位置。 AreaSoundVolume功能将计算倾听者的坐标与AreaSoundVolume边界之间的最短距离,再计算环境声音的声源坐标。 在Brush对象中创建凹陷位置的话,则可能无法如预期计算与倾听者的距离。 举例说,当倾听者移动到凹陷位置附近时,将使声源坐标产生急剧变化,听到导致意外的声音。 如果不能避免凹陷位置,或许可以在凹陷处放置多个AreaSoundVolume来解决此问题。
SoundAtomCue Asset的设置
- 在内容浏览器中双击要用作环境声音的SoundAtomCue Asset,并打开以下Asset设置画面。
- 在上述画面中,启用 "UseAreaSoundVolume" 的复选框。
AreaSoundVolume的设置
- 在AreaSoundVolume的详细信息面板添加"Sounds"元素。 然后,在此元素中指定要播放的环境声音的SoundAtomCue Asset。
只要完成并使用以上设置,将可以通过以下操作之一来实现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坐标之间的最短距离判断。
控制播放时机
- 预设在关卡开始时,自动创建引用AreaSoundVolume所设SoundAtomCue Asset的声源,然后开始播放音频。 要在任意的时机开始播放音频时,请将AreaSoundVolume的"IsAutoPlaySound"属性设置为false。
- Blueprint中使用下图的CreateSound函数,可以获取AtomComponent数组并执行播放控制和参数设置。
示例
- 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时将执行事件,并开始或停止播放环境声音
- 在关卡蓝图中记载了事件处理