I want to allow users to change the particle system at runtime.
I was hoping to access the Niagara attributes as you do for colour, position etc. as the point cache seems to be accessible, but I’m missing something…
Is there anyway to allow users to change the particle system at runtime?
The exact scenario I have in mind is for users to upload their own point data in the form of the Hjson, Hbjson or hcsv and have the system give them the option to use the imported data.
I’ve looked into the modules and it seems I can get any data from the point caches but I cant swap the parameter/point.cache itself, even after setting up User.points as the system variable.
I thought “Set Niagara Object” node would do the trick but it just makes the system disappear. (I’d like the system to only use blueprints because of other requirements, but not adverse to creating my own functionality/nodes.)
As always any and all help is much appreciated.
Just use Vector fields? They definitely do change at runtime…
Vector fields aren’t doing it for me unfortunately, but thanks for suggestion. Opened another bunch of stuff to look into.
Ideally this needs to be driven from an imported csv.
Can’t you pack vector fields into a csv?
I mean, data is data…
Parsing within unreal isn’t the easiest thing, but you can use blueprint to read the csv row by row and do something.
Including manually spawning the particles based on your own data points…
Maybe I’m missing something, but I understood vector fields only effect particles?
With the method I was getting at before The HCSV information was the actual particles and their respective paths, an exact visualisation of the CFD information.
I could create a “3D” vector field but trying to get the particles to match the positions of the simulation exactly would be hard. If I understand vector fields correctly that is.
I would pipe a particle in one end, the vector field would work its magic and it would come out the other end…
What I’m looking at now is to do the actual simulation in unreal, and have the particle information from its own solvers effect the dynamic material on the meshes.
Not exactly what I wanted but if I can get it to work might be a nice trade off.
Again if I’m wrong about those vector fields I’d love to be set straight…
Thanks for your time MostHost,
You can read the new docs on those
perhaps more intuitively, you could spawn per vertex
And apply the vector field to determine the starting motion of each particle.
Or you could code a spawn per vertex scratchpad that takes in the vector field locations. After all its essentially an array of vectors…
it depends on what you actually need to do.
converting an FBX vertex data to CVS is trivial since thats what the export in Blender does, and all verts are readable within the FBX.
changing the FBX at runtime may be problematic, using the same logic of it to spawn based on custom CSV probably isn’t - you do still need to read data in at runtime though.
I only need to be able to show various CFD Simulations at runtime.
Example would be we receive CFD data from a consultant in a specific format, eg csv.
I then want to be able to navigate to location in the model the CFD was created for and have them import the CFD data and watch it.
I can get the CFD info into Niagara Particle systems but switching the CSV/hCSV at runtime isn’t working. Despite being exposed as a user parameter.
I could as I understand create struct and a data table and then switch values of one system but I’m lazy. If I have to in the end I will but for now I’m looking for quick fixes to produce a PoC.
Now I’ve fallen into the rabbit hole that is Fluid Sim and all the marvellous implementations of it on the web. There are some amazing people in this world…
I can do Alembic but again the import times are out of this world for complex sims. I can import FBX at runtime so that might be a way to go but still doesn’t feel right.
I’ll look more into vector fields, it seems my understanding is lacking. You’re 100% right it is only an array plus I have every possible piece of data per particle…
Thanks again MostHost, Kudos!
Hello, MorphusOne! Is there any progress you can share, I am also having trouble there. In addition, I used the method of converting the CFD surface drawing data into glTF, and then used the plug-in glTFRuntime to read it in real time. I use Houdini Niagara to render a large number of particles rather than CFD data.