闲鱼技术01 发表于 2022-7-18 16:24

UE5中如何使用Niagara 数据接口?

数据接口允许您使用自定义逻辑和数据源扩展 Niagara。数据接口提供可在模块脚本图中使用的 cpu 和 gpu 函数。这些自定义函数将在执行 Niagara 模拟时调用,可用于从模拟中提取数据、处理数据或将自定义数据注入模拟中。
Niagara 插件中已经有很多数据接口,只要搜索 UNiagaraDataInterface 的子类即可。在编写自己的数据接口之前,查看基类及其提供的功能以及一两个现有的数据接口绝对是有意义的。
另外,如果您只需要在模拟中注入一些静态数据,请查看是否不能为此使用用户参数或数组数据接口。
示例项目

UE5自带了一个模板数据接口,你可以在其中使用Engine\Plugins\FX\ExampleCustomDataInterface,它由三个主要文件组成:

[*]Source\ExampleCustomDataInterface\Private\NiagaraDataInterfaceMousePosition.h
[*]Source\ExampleCustomDataInterface\Private\NiagaraDataInterfaceMousePosition.cpp
[*]着色器\私有\NiagaraDataInterfaceMousePosition.ush
请注意,此示例同时提供 cpu 和 gpu 功能,如果您的数据接口只需要 cpu 支持,那么您可以通过删除大部分功能来大大简化实现。对于只需要为 cpu 粒子运行的示例数据接口,您可以查看 UNiagaraDataInterfacePlatformSet。
数据接口 UProperties

您放在数据接口上的任何 UPROPERTY 都将暴露给堆栈中的用户,并且不能由粒子属性设置。这对于为所有函数调用配置数据接口以及提供粒子属性类型不支持的数据(例如字符串或 UClass 引用)很有用。
如果您希望通过用户参数设置数据接口属性,可以使用 FNiagaraUserParameterBinding 属性。例如,UNiagaraDataInterfaceExport 使用它来设置用于将其数据导出到的 UObject。
如果您在数据接口上定义了任何 UProperties,请确保覆盖 Equals() 和 CopyToInternal(),否则您可能会在使用堆栈中的数据接口时遇到问题。
线程注释

Niagara 模拟不一定在游戏线程上运行,因此了解哪些数据接口函数是线程安全的,哪些不是线程安全的很重要。
如果你需要做任何游戏线程的工作,比如访问一个 UObject,你可以使用以下方法:

[*]InitPerInstanceData- 运行一次以设置模拟的实例数据
[*]PerInstanceTick- 在模拟之前运行每个刻度。要求 HasPreSimulateTick() 返回 true!
[*]PerInstanceTickPostSimulate- 与 PerInstanceTick 相同,但在模拟完成后运行。要求HasPostSimulateTick()返回真!
您通过提供的数据接口函数GetVMExternalFunction不是线程安全的,可以在模拟期间从任意数量的线程调用。如果您需要访问任何游戏线程数据,请使用提供的实例数据对象来存储该数据。
例如,UNiagaraDataInterfaceCollisionQuery 支持异步线路跟踪。它用于InitPerInstanceData()设置保存跟踪查询和命中结果的结构。在模拟过程中,它返回上一帧查询的结果,并从粒子中收集所有新查询并将它们存储在实例数据对象中。PerInstanceTickPostSimulate()使用 UWorld 触发新查询并PerInstanceTick()从最后一帧的查询中收集结果。
生成用户反馈

如果您想为您的数据接口实现一些自定义验证逻辑以向堆栈中的用户提供反馈,您可以覆盖以下函数之一:

[*]void ValidateFunction(const FNiagaraFunctionSignature& Function, TArray<FText>& OutValidationErrors):每当编译数据接口函数之一时,它就会运行。如果此处返回任何文本消息,则编译失败并向用户显示错误。这主要用于捕获无效配置,例如在尝试对距离场进行采样时,即使在项目设置中禁用了距离场。
[*]void GetFeedback(…):当堆栈中的数据接口显示给用户时执行,它允许您不仅向用户提供任何类型的堆栈注释,还提供快速修复功能,因此用户可以自动修复任何内容问题是。
重要提示:

Unreal软件电脑配置的要求是比较高,特别是实时渲染,前期的硬件成本是比较高的,目前有云端解决方案,使用呆猫云桌面,即使本地普通的电脑也能运行Unreal软件,且普通电脑也能享受行业最高端的CPU和GPU,极大提高制作效率和使用体验,且使用方便快捷,全面支持3D应用软件插件运行,随时调用百余款软件插件,高效作业。
呆猫云桌面后台可配置的CPU机器数量上不封顶,同时针对GPU机型呆猫设有天璇型、天玑型、天枢型、天神型4种选项,所有GPU机型皆配备NVIDIA专业级顶配显卡,机器类型丰富适用于规模办公应用、弹性增加桌面、跨区域联网、商业信息安全等。

页: [1]
查看完整版本: UE5中如何使用Niagara 数据接口?