ue3d虚幻UE5引擎 Niagara 数据接口

虚幻UE5引擎 Niagara 数据接口

分类:

虚幻引擎的数据接口允许使用 自定义逻辑数据源 扩展Niagara。数据接口提供可在模块脚本图中使用的 cpugpu 函数。这些自定义函数将在执行 Niagara 模拟时调用,可用于从模拟中提取数据、处理数据或将自定义数据注入模拟中。

Niagara 插件中已经有很多数据接口,只要搜索 UNiagaraDataInterface 的子类即可。在编写自己的数据接口之前,查看基类及其提供的功能以及一两个现有的数据接口绝对是有意义的。

另外,如果只需要在模拟中注入一些静态数据,请查看是否不能为此使用用户参数或数组数据接口。

示例项目

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

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

相关信息

  • 类型:知识
  • 字数:932
  • 字符:2934
  • 适用软件:虚幻引擎5
  • 说明:无
  • 编号:61346

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!