Tutorial: Niagara Data Channels Intro

An introduction to Niagara Data Channels. A new feature that allows communication between Game code and Niagara Systems.

DISCLAIMER: Niagara Data Channels are still experimental and all of the below is subject to change.

https://dev.epicgames.com/community/learning/tutorials/RJbm/unreal-engine-niagara-data-channels-intro

3 Likes

вы путаете рекламу себя с обучением , тут нету обучающего материала

Hi,
I followed the tutorial, but nothing gets spawned when using NDC.
The positions and spawning are ok if I don’t use NDC, but if I look at the niagara debugger, I see 0 system spawned using the NDC.

My NDC Asset:

Blueprint logic:

Niagara:
(content of the modules are same as yours, but I only set the position)


What am I missing?
Thanks!

Started to work out of nowhere without me changing anything.

Okay, but we should be able to read other systems data? Right? I tried to have two systems, reader and writer.

This is my reader in system update, it also have a “get NDC scratchpad in emitter update” which is just saving NDC as a emitter value.

then in my second system - writer, I’m trying to use Data Channel writer to save my position.


but it’s end up with comilation Failded and no informations why :confused:

There is a lot of crashes but I understand that’s experimental :smiley: I just want to know if my leaves can read the fire position :smiley:

Thank you for this tutorial, it saved my life!!

Yeah, Im having the same issue, cant compile the Niagara System when there is a NiagaraDataChannelWriter on ParticleUpdate :frowning:

Hello STovey,

thx a lot for the tutorial, this should increase performance a lot.
I’d like to write via c++. How would I create the same NDC you created as blueprint inside c++?
I assume I have to derive from the “UNiagaraDataChannelAsset”.
I’m not very familiar with the Scratch Module and I also heared about Niagara Data Interfaces. What’s the difference between Niagara Data Interface and Data Channels, apparently I can’t use the Spawn Conditional, is there anything else more substantially different?

My goal is to pass position and vectors from c++ to my Niagara System, and I’d like to make use of the conditional spawn inside the scratch module so I don’t have to spawn individual systems.

would be nice if I could get some guide lines here, I’m still fairly new to Unreal. Only being playing around with the engine for 1.5 years, and just started to port logic from blueprint to c++.
if I want to use NiagaraSystems especially, I’ve stuck with just making use of the user.paramaters.
But via your tutorial I learned more about the scratch module and that it’s possible to use a more efficient approach of handling multiple impact effects via a single system.

so this is my ultimate goal. Using only one Niagara System and passing data via c++ the most efficient way.

I would be thankful for any tips and advice. (I’m using 5.4)