CriWare Unreal Engine
Plug-ins for CriWare solutions.
载入中...
搜索中...
未找到
ADX教程20 :如何创建覆盖大范围的距离衰减

在实现河流等环境声音时,在放置音效时,通常会出现将声源放置在河流各处的情况。
在本文中,我们将介绍使用尽可能少的声源在广泛的区域中实现环境声音的功能。
CRIWARE UnrealEngine Plugin 提供了 MultiPositionComponent 作为用少量声源覆盖大范围区域的方法。
MultiPositionComponent 允许您为一个声源指定多个坐标,从而轻松实现用少量声音覆盖大范围的环境声音。

作为教程,以下是从多个位置播放波浪声音的步骤。

准备数据

导入准备好的 acf/acb/awb 文件

本教程中使用的声源是通过构建下面的 AtomCraftProject 生成的。
cri/Samples/CriWareShowroom/AtomCraftProject/CriWareShowRoom/CriWareShowRoom.atmcproject

构建产品存储在下面。
cri/Samples/CriWareShowroom/AtomCraftProject/CriWareShowRoom/PC

通过将文件夹中的以下文件拖放到内容浏览器中来导入它们。

  • CriWareShowRoom.acf
  • CueSheet_Effects.acb
  • CueSheet_Effects_awb.awb


声源的放置和设置

使用 AtomMultiPosition 放置 actor

即使您想要在广阔的区域(例如河流)听到音效,您首先需要将声源放置在水平位置。
通常,您会向 actor 添加 AtomComponent,指定要播放的音效,以及播放环境声音等。

但是,为了使指定区域能够听到音效,您可以添加 AtomMultiPositionComponent ,它扩展了 AtomComponent 的功能到 actor 等。需要指定您要播放的音效。

AtomMultiPositionComponent 的特点如下。

  • 不会发生同步错误。
  • 虽然声音是多处播放,但内部只播放一种声音,节省了声音数量。 (内存效率)

在附图中,放置了一个 Sphere 以便让 actor 更容易理解,我们将向该 actor添加一个 AtomMultiPositionComponent。


这次,AtomMultiPositionComponent 是从 Sphere actor 的 Detail 中添加的。


在 AtomMultiPositionComponent 设置项目中设置以下项目。

  • 声音 -> 设置 SoundAsset 和声音(Cue)。
注意
这里使用的 Sound(Cue) 必须具有 Normal 的 VirtualizationMode。
注意 VirtualizationMode 可以通过 AtomCraft 上的设置和虚幻编辑器 Cue 详细信息窗口中的 OverrideVirtualizationMode 设置进行更改。


  • 将 Attenuation->OverrideAttenuation 设置为 true。


*也可以通过在 AttenuationSettings 中设置任意 AtomAttenuation 资源来实现。


有关详细的衰减设置,请参阅AtomModulation概述

到目前为止,仅从指定的 Actor 位置听到音效。
下面,我们就来介绍扩大音效区域的步骤。

扩大声音范围

有三种方法可以指定声音实际播放的位置。

1.使用坐标 2.使用演员

使用坐标的方法

从 Sphere actor 的 AtomMultiPositionComponent 设置项目中的 MultiPosition -> SourcePositions项目将坐标设置为您想要播放声音的位置。
在这里,我们设置了 14 个位置的坐标,这与使用 actor 确定在哪里播放声音的方法相同。


以上就是如何利用坐标来决定在哪里播放声音。
这样,设置了衰减的声音就会应用到所有设置的坐标上。


如何使用 Actor

将任何 Actor 放置在您想要播放声音的位置。这里我们放置了 14 个 Cube Actor。


接下来,在 Sphere Actor 的 AtomMultiPositionComponent项目中设置您之前在 MultiPosition -> SourceActors 中放置的 Cube Actor。


上面是如何使用 Actor 来决定在哪里播放声音。
这样,设置了 Attenuation 的声音将应用到所有 Cube。


为播放位置添加偏移量

该方法可以与使用actor的方法结合使用。请按照上一节“如何使用 actor”中的步骤进行实施。

使用SceneComponent实现具有以下特点:可以通过与任何演员的相对位置来确定声源,并且通过对多个声源进行分组,可以更改位置以跟随父演员。
例如,这可以更轻松地实现演员中心(例如火炬)与您想要播放声音的位置不同的场景,或者实现环境声音(例如逼真的欢呼声)。
在下面的例子中,火炬 actor 的 actor 位置设置为树的中心,如果您想从火中发出噼啪声,这非常有用。

使用 SceneComponent 设置声源位置可以表达如下。

使用 BlueprintClass 的 SceneComponent。
仅SourceActor指定的Actor中通过下面描述的方法指定的SceneComponent才可以设置为声源位置。

首先,在内容浏览器中右键单击并创建一个 BlueprintClass。


接下来,将您之前在 Cube Details 中创建的 BlueprintClass 附加到 Sphere 的右侧。


最后,在 Sphere actor 的 AtomMultiPositionComponent 设置项目的 MultiPosition -> SourceComponentClass项目中设置您之前创建的 BlueprintClass。


以上是使用SceneComponent的应用方法。
这样,它将应用于 Sphere Actor 中设置的 SceneComponent 坐标。

此外,通过移动设置到Cube actor的SceneComponent的坐标,它可以用于各种表达。



【注意】
使用 SceneComponent 时,请注意SceneComponent 必须附加到所有想要播放声音的 actor。
例如,当所有 Cube Actor 都设置为 SourceActor 时,它将如下所示:

  • 如果 SceneComponent仅附加到两端的立方体 actor

  • 如果所有立方体演员都附加了场景组件

听声音

开始游戏并听声音。
您可以感觉到声音好像是从水面传来的。

Tips: Sphere 没有声音

通过设置 UseComponentPositionAsSource项目,您可以设置是否从自己的 Actor 播放声音。
通过在 AtomMultiPositionComponent 设置项目中设置 MultiPosition -> UseComponentPositionAsSource项目,您可以选择是否从 AtomMultiPositionComponent 所附加的 actor 的坐标处播放声音。

预设下,它是 true 并且声音将从 Sphere 播放。



THIS SERVICE MAY CONTAIN TRANSLATIONS POWERED BY GOOGLE. GOOGLE DISCLAIMS ALL WARRANTIES RELATED TO THE TRANSLATIONS, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF ACCURACY, RELIABILITY, AND ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.