查看原文
其他

Sequencer中的Niagara模拟缓存

虚幻引擎 虚幻引擎 2024-02-17


当你发现模拟结果的算力成本过高时,缓存可以帮助你改善性能,或者锁定序列的特定效果。本指南将介绍如何创建和使用Sequencer中的Niagara缓存功能。

做好准备

要在Sequencer中捕捉和使用模拟缓存,需要先启用NiagaraSimCaching插件。请注意,该插件仍处于试验阶段,之后可能会有变动。

Sequencer缓存

要捕捉Niagara中的模拟结果,有两种不同的方法:

    1.在Sequencer中插入缓存轨道,并使用录制功能

    2.使用Niagara Actor作为镜头试拍录制器中的源

这两种方法各有优势,下文中会详细说明。

默认设置下,Niagara在Sequencer中的缓存会保存为轨道属性的一部分,不过你也可以自行创建并将其保存为独立资产。当你需要将缓存添加到版本控制,或者处理超大的缓存文件时,保存为单独资产就尤其有用。你也可以在Sequencer中通过烘焙工具或蓝图单独创建。

烘焙器模拟缓存

然后就可以在缓存轨道中使用这些Niagara模拟缓存资产了:

Sequencer轨道中的缓存资产

缓存模拟时推荐使用的Sequencer工作流

添加Niagara组件并附带一个生命周期轨道。在生命周期轨道上将“年龄更新模式(Age Update Mode)”设置为“所需年龄(Desired Age)”。

所需年龄更新模式

录制缓存之后,它会作为单独的轨道出现在序列中。当使用缓存中的数据而不是运行系统模拟时,该缓存轨道会禁用生命周期轨道并显示状态图标。

缓存激活

要重新启用生命周期轨道,并在序列中迭代效果,可以先将缓存轨道静音(即未激活)。做好修改之后,再取消缓存轨道的静音,然后重新录制。

静音轨道

右键单击缓存轨道,编辑此部分可以更改一系列的属性,例如录制属性、播放速率或缓存反转。

录制缓存之后,你还可以使用“将缓存保存为资产(Save Cache to Asset)”选项,将关卡序列中的数据转移到单独的资产中。这在做版本控制时会尤为有用,因为缓存文件也可能会变得很大。

缓存属性

缓存轨道的大小可通过该片段的句柄进行更改。由于缓存中的帧数是固定的,因此可用于减慢缓存播放速度或重复缓存。你也可以在编辑该片段时修改相应拉伸行为的设置。

轨道选项中的“片段拉伸模式(section stretch mode)”属性也可以改变缓存播放时拉伸片段的方式。

拖拽片段句柄

使用缓存轨道直接录制

    1.将缓存轨道添加到Niagara组件

    2.单击添加的轨道上的录制按钮,捕捉组件的数据

默认情况下,这样只会录制在生命周期轨道时间范围内的数据。如果没有生命周期轨道,缓存则会拉伸至所选序列的播放范围。

这种录制方式有以下优点:

    ·无需打开镜头试拍录制器即可快速迭代和重新缓存

    ·在捕捉缓存之前,可以先在轨道上编辑捕捉属性等录制选项

    ·你可以在片段选项中选择缓存资产,这样录制时就会直接将数据写入资产。使用该选项时还请注意,重新缓存将删除现有的资产数据。前往不要在没有做版本控制的情况下使用。

    ·使用序列的目标帧率来tick,这样每个模拟帧就都有固定的Delta时间了,而不是变量的编辑器tick。这也是更改缓存中录制的帧数的好办法——只需要在录制缓存前调整序列的目标显示帧率即可。

使用镜头试拍录制器进行录制

录制器可以通过非破坏性的方式来录制数据,因此它在录制时总是会创建新的缓存轨道或关卡序列。

    1.首先,添加Niagara Actor作为源

    2.选择添加的源时,可以在Actor属性中启用/禁用缓存录制

    3.然后点击大红按钮开始录制!

请注意,默认情况下,录制的序列会把Niagara Actor添加为新的可生成(而不是可拥有)资产。如果你只需要看到缓存的版本,请在大纲视图中将原来Niagara Actor的可见性关闭。

这种录制方法的优点是可以同时录制多个源和缓存(不只是Niagara)。

使数据接口可缓存

默认情况下,只有绑定到渲染器的粒子属性才会在录制时写入缓存。当自定义数据接口也需要录制状态来正确显示效果时,可以使用接口

INiagaraSimCacheCustomStorageInterface

UObject* SimCacheBeginWrite()

bool SimCacheWriteFrame()

bool SimCacheEndWrite()

bool SimCacheReadFrame()

void SimCachePostReadFrame()

TArray GetSimCacheRendererAttributes()

要了解这些接口是如何实现的,可以参考例子UNiagaraDataInterfaceRenderTargetVolumeUNiagaraDataInterfaceHairStrands



近期焦点

完整议程正式曝光 | Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日第六波演讲主题公布
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日第五波演讲主题公布
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日第四波演讲主题公布
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日第三波演讲主题公布
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日第二波演讲主题公布
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日首波演讲主题抢先看
Unreal Fest Shanghai 2023 | 虚幻引擎技术开放日门票预售已开放
虚幻引擎5.3现已发布!


扫描下方二维码,关注后点击菜单栏按钮“更多内容”并选择“联系我们”获得更多虚幻引擎的授权合作方式和技术支持;选择“招聘”,即可了解最新招聘信息。

长按屏幕选择“识别二维码”关注虚幻引擎
“虚幻引擎”微信公众账号是Epic Games旗下Unreal Engine的中文官方微信频道,在这里我们与大家一起分享关于虚幻引擎的开发经验与最新活动。


继续滑动看下一个

Sequencer中的Niagara模拟缓存

虚幻引擎 虚幻引擎
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存