(above gif is just an updated thumbnail to reflect latest)
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.
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.
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.
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
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.
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.
OK! Been a while. But I have been tinkering on an explosion effect on n off. Idea is a crustal that is covered in flakes of ash, which is peeled off by released energy, followed by an implosion, then an explosion. This effect was in large parts to learn a bit more about making and using interparticle events. So each flake off ash will be shot off by a light particle that disturbs it, which in turns agitates the dust that is floating around in the air.
Also used the system I showed off earlier in this thread, with the charge-up of the effect radiating along the edges of the character based on fresnel ish look up. This also animates along with the events on of the ‘main’ fx.