Creating an advanced VFX Plugin, would like some feedback and ideas!

So I’ve started working on fleshing out my Advanced-VFX Plug-in for the Marketplace, which currently comprises of some cool new Cascade Modules. After spending some time with the source code I think I can find a solution to most of these ideas, and some are already integrated and working but not in plug-in format. The trick is, I’d like it to be fully compatible with other peoples plug-ins too and integrate seamlessly, I’m having some difficulties with the plug-in integation at the moment that I’ll bring up as I go! I’d rather get the functionality all working first.

Current List of Planned Cascade Modules

  • Audio-Driven Spawn - Generate particles based on a waveform, set the spawn threshold, delay and whether to loop the audio
  • Spawn-Driven Audio - Play-Back audio based on particle spawning, I’m not sure this one is possible yet!
  • Size By Velocity - Already complete, scale a CPU particle size by it’s velocity, Cap Min and Max values
  • Mesh Initial Location - Similar to Initial Location, but allows you to emit particles based on a mesh. Similar options for mesh position and whether to use the surface or volume of the mesh! Also enables you to add velocity based on the surface normals!
  • Random Uniform Velocity - Emit particles with a uniform random velocity that changes over time, allows for more controlled random velocity
  • Angular Camera-Facing Particles - Different algorithm for Particle Camera alignment, rotates them on all Axis’ similar to how you see in the Math Hall demo
  • Rotation Rate by Camera Direction - Rotate particles based on their offset from the centre of the screen.
  • Velocity By Wind Direction - Allow Wind Actors to influence particle velocity
  • Particle Projection Collision - Allow particles to project a complex collision and move around it. MAY be too expensive for real-time simulations
  • Mesh Convergence/Attraction - Allow particles to converge to a meshes shape based on a strength, similar to current attraction modules
  • Velocity Turbulence - Self-Explanatory!

Is there anything anybody particularly wants to see, or if there’s something that they know isn’t possible off-the-cuff?

Seems like that plugin will be cool :). Just a quick note, it is possible to play back sounds based on particle spawn/impact/death. This is done by adding events to the Cascade tracks, and then listening for those event names in a blueprint. There will be some demo content coming soon that will show this off :).
The waveform-based idea would be cool- looking forward to checking it out.
Best-
Zak

The first thing that comes to mind is “destroy on location”
Basically if you look at point gravity/particle attractor, a particle goes to a certain location… kill it when it reaches it. (maybe with radius control) (though could perhaps do that with event/killbox)

Color by velocity.

Color over time.

Location over life. (basically an alternative for vector field)

Rotation around location.

Just some things on top of my head.

Also: Epic work :slight_smile:

Thanks, most of these are actually already possible. Rotation around location can be achieved by offsetting particle pivots, Location over life has a location module which can directly set the location over time or lifespan, Scale Colour can be checked to use Emitter time to scale the colour.

Colour By Velocity would certainly be a new one, a few alternative ways to implement that too.

Hey hey thanks for the reply :slight_smile:

Offsetting pivots doesn’t work for mesh particles though. (sadly)
Pivot offset itself doesn’t have a Z-axis. (and can contain only a constant, would be nice to have a univorm)
Location over life has a location module? where can i find the location over life? or do you mean direct location?
Scale color can be checked to use emitter time yes, but if the emitter shoots out particles with a variable lifetime, the colors will differ between them (which can look good, but id prefer to have both options)

Forgive me if i missed anything though :slight_smile:

Edit: oh, another one popped in my head:
There is basically “Global space” and “Local space” for particles.
what if there was a screen position option? where the particle stays on the position of the screen (with its velocity etc working from that location)

<nitpick>
Size By Velocity - since velocity is speed and direction, unless you want to scale each axis of the particle by each component of the velocity, maybe it should be called Size By Speed.
(Though that might be neat, too - could give particles a sort of stretching effect when they go fast)
</nitpick>

These all sound very useful though :slight_smile:

But that’s exactly what it does :wink: You can cap the min and max size though to prevent it getting too high. We also already have size by speed, but it’s GPU-only and has fairly limited options.

Then never mind :slight_smile:

Well I have tested that found that particle’s life/velocity module cause a bug in particle’s initial position… can this be fixed soon?