Niagara中的音效

如何直接从Niagara播放音效

Choose your operating system:

Windows

macOS

Linux

当你希望在Niagara中播放音效时,例如一个颗粒与其他东西碰撞时的模拟声音,有多种方法可以直接在Niagara中达成此目的。

每种方法都有自己的优缺点。以下是每种方法的简要概述。

你可以在 内容示例项目 中找到这些方法的示例: Epic Games启动程序:虚幻引擎 > 学习 > 引擎功能示例 > 内容示例(Epic Games Launcher: Unreal Engine > Learn > Engine Feature Samples > Content Examples)

使用播放音频模块

对于 一次性音效(one-shot sound effect) 播放音频(Play Audio) 模块是从Niagara播放音效的最简单方法。它适用于事件驱动型效果,例如对颗粒碰撞做出的反应。这也是成本最低的解决方案。

  1. 播放音频(Play Audio) 模块添加到你的发射器。

    可从播放音频模块中设置播放条件。

  2. 要播放的音效(Sound to Play) 中,从下拉列表选择一个音效。

  3. 设置 播放音频(PlayAudio) 条件。

这将使用为音高、音量等配置的值来触发一次性的即用即弃效果。音效一旦触发就无法更改或停止,并且即使颗粒模拟停止,音效也会继续播放。

播放音频模块

优点(Pros)

缺点(Cons)

  • 性能最高的解决方案(无论从内存还是CPU使用率来看)

  • 声音开始播放之后,声音属性固定不变,例如音量或音高

  • 最容易设置

  • 声音无法随着颗粒的移动来持续更新其位置

音频模块示例

  1. 下载 内容示例项目 ,然后将其打开。

  2. 在内容浏览器中,使用筛选器来搜索 播放音频(Play Audio)

    在内容浏览器筛选器中设置播放音频,以查找音频内容示例。

  3. 双击 播放音频示例(PlayAudio Example) ,打开 Niagara系统(Niagara System) 示例。

点击放大。

PlayAudioExample2.png

内容示例中的系统包含不同的 发射器(emitter) (1) 显示如何使用 播放音频模块(Play Audio module) ( Play_Sound_on_Collision )。 (2) 使用 永久性音频(Persistent Audio) ( Mesh_Rotational_Velocity ),此示例在发射器堆栈中创建音频播放器数据接口(详见下文)。

使用播放永久性音频模块

此模块类似于播放音频模块,但保留了对每个已生成音效的引用,因此可以随着时间更新。

PlayPersistentAudioModule.png

此模块还支持一些高级功能,例如淡入淡出或设置Sound Cue参数。但是,模块的设置比第一种方法复杂一些,因为若要此模块正常工作,需要使用两个模块: 播放永久性音频(Play Persistent Audio) 更新永久性音频(Update Persistent Audio)

这两个模块中使用相同的音频播放器引用!

你可以创建音频播放器数据接口,将其作为发射器属性并将其绑定到模块。 在上面的截图中, Emitter.CustomPlayer 引用同时存在于这两个模块中。

EmitterCustomPlayer.png

发射器(EMITTER) 左侧的锁链符号表示它们正在引用现有的属性。

默认情况下,每个模块都创建自己的对象,且无法与其他模块共享。 如果你希望模块使用相同的对象,则必须在发射器或系统生成脚本中创建该对象,然后在模块中引用它。

要查看播放永久性音频模块的工作方式,请在内容示例文件中使用 筛选器(Filters) 来搜索 播放音频(Play Audio) ,然后双击 播放音频示例(PlayAudio Example) 将其打开。

PlayPersistentAudio.png

双击 播放永久性音频(Play Persistent Audio) 以打开 节点图表(Node Graph)

点击放大。

当需要声音属性在模拟期间变化时,此方法很有用,例如当声音需要随着颗粒的位置而变化时。

播放永久性音频模块(Play Persistent Audio Module)

优点(Pros)

缺点(Cons)

  • 在运行时更改音量、音高、位置和旋转

  • 设置更复杂

  • 设置Sound Cue参数并在模拟停止时结束声音

  • 性能低于播放音频模块

  • 根据摄像机距离过滤声音

使用音频组件渲染器

音频组件渲染器目前还只是实验版本。如果你希望体验任何实验性功能,可以在虚幻引擎中使用此模块。

音频组件渲染器(Audio Component Renderer) 可以用于生成音频组件。

音频组件渲染器窗口。

这是一种非常灵活的方法,因为它可以全面控制音频组件,但在颗粒模拟中,你可能需要从播放音频模块重新实施所有功能(例如淡入淡出或基于距离的筛选)。此外,它不支持在不创建自定义音频组件子类的情况下设置Sound Cue。

除了模块未提供足够功能按钮的特殊情况以外,不建议使用此组件渲染器。

音频组件渲染器(Audio Component Renderer)

优点(Pros)

缺点(Cons)

  • 非常灵活

  • 缺少很多功能

  • 提供更全面的音频控制能力

  • 性能较低

  • 无法设置Sound Cue参数

将颗粒数据导出到蓝图

如果其他方法都不够灵活,无法满足你的需求,则可将颗粒数据导出到蓝图或C++并在其中实施你的音频逻辑。

点击放大。

为实现此目的,请使用 导出颗粒数据(Export Particle Data) 接口。要在内容示例项目中查看示例,请在内容浏览器中搜索 导出颗粒(export particle)

从内容浏览器中选择导出颗粒数据示例。

双击 ExportParticleDataExample ,获得关于如何从颗粒模拟中导出数据的详细说明。

此示例提供了图表中各个事件的说明。

导出数据接口的一个优势在于,它还可以用于GPU发射器(有一些额外的延迟)。在蓝图中获得所需数据之后,您不但可以使用这些数据来播放音频,还可以驱动任意数量的组件,例如后期处理或用户界面(UI)控件。

虽然这是最灵活的音频播放方式,但其设置最耗时也最复杂。。可导出数据量方面也会有一些限制,需要由你自己在音频组件和颗粒数据之间进行任何映射。

将颗粒数据导出到蓝图(Export Particle Data to BP)

优点(Pros)

缺点(Cons)

*最灵活的方法

  • 最慢的性能

  • 适用于GPU

  • 需要在蓝图逻辑中重新实施所有模块功能

  • 设置复杂

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消