Johans VFX sketchbook

niagara
ue4
vfx

#1

thumbail

Hey all! Thought I’d start one of these sketch threads, showing not only a finalized product, but also the journey and lessons learned along the way. It’s hard to tell yourself something is ‘done’ when its just for your personal enjoyment, but with this I hope to just share big and small things.

I have gotten really into UE4s Niagara lately. The flexibility of this system compared to what Cascade offer is astounding.

I have started on a series of modules that emits and controls particles, as emitted from a mesh, projected from a point. This is ideal to make energies that ‘burn’ away particles along the edges of the mesh, or to cast shadows consisting of particles.

Youtube vid of what i have so far

In essence, it emit particles from the mesh, with start position - engine position as velocity vector. Then an update module will check the if it behind, in front of or to the side of the mesh, in relation with the energy source, and write it to a particle namespace. This can be used as indexes on curve graphs to make the modules appear in and out of the shadow of the character, etc.

Another module will make particles follow behind the mesh, instead of staying behind.
This is how it looks without that module.

So far I am mostly messing around with the modules and making sure they are technically sound, but next I want to get started and make a more concrete concept.


#2

I like your idea. But I absolutely don’t like the noise :roll_eyes:


#3

What do you mean? The noisyness of the effect? Was wondering if some noise had snuck into the screengrab, but I couldn’t hear anything.

But yeah, mostly a technical demo for now. Want to get started applying to a more visual concept.


#4

Yes, the noise is too noisy :sweat_smile:


#5

Whoa, really good :grinning:
I’d love to see this effect with some context on scene. With this you’ll nail it.


#6

Yeah wow this looks awesome, how exactly are you checking the vector to tell where the particles should emitting from? I’m looking to do something with mesh emitters and vector math and I just wanna pick your brain a bit :stuck_out_tongue:


#7

To find where to spawn from with a mesh, just use the ‘RandomTriCoord’ node. It spits out a random world position on the mesh.

Then I take that position, subtracted with the position of the effect, to get the direction of the particle velocity. I normalize it, then multiply it, so the speed doesn’t vary with how long away from the source it is.

My laymans understanding is subtracting positional vectors gives you a directional vector that points from the second position to the first.

Now to check wether something is along the edge of something, behind or in front of something, just use a dot product. A dot product takes two directional vectors and compare the two, and spits out a number between 1 to -1. 1 means the direction of the vectors match. 0 means the directions face 90 degrees away from eachother. -1 means the directions face 180 degrees away from eachother. So in other words, the facing of a vector in relation to another. With this we can do the stuff like check whether it’s along the edge of the model in relation to the center of effect or.

In my case I take that -1 to 1 value, and use it as an index on a colour curve.

This is also how fresnel like effects often are done in shaders in UE4.


#8

This is amazing, I will make good use of it, thanks!


#9

Messing around with an enevloping flames kinda effect.


#10

Seems like it’d be easier to pass the mesh as an actor parameter to a skel vert/surf location particle using radial velocity, and center the particle’s origin on the explosion point.