Unity skinned mesh + FX sync

Hi all,

So I have been wondering for a while about a nice and flexible approach to do FX playing in sync with a skinned mesh in Unity.

From my experience, sometimes an FX is:

  • Another skinned mesh with an animation clip
  • A particle system
  • A mesh with an animation clip
  • Another animation clip in itself that is being triggered at a specific time

They can all be done separately without much trouble, but sometimes, I just want to mix it all up.
It used to be pretty hard with the Animation clips only.
But now, the great thing about Timelines is that they’re not restricted anymore to a strict hierarchy and naming(meaning once your FX animation was setup, if you changed the hierarchy or a name, it would all break).

Right now I’m looking at getting multiple particle emitters playing in Edit mode on the timeline and I’m blocked. They’ll play in Play mode, but in Edit mode, you always have to select a particle emitter for it to preview.

As you can see in this crappy test, i can have 1 particle emitter playing at a time in Edit mode and if I add an additional one, i’ll have to pick which one i want to see animating:

Ideally I’d like to preview both in Edit mode, rather than having to hit Play. The reason for that is if I hit Play and tweak my FX timing, although I can copy/paste values of the component, I can still only work on one at a time, then copy/paste then Play again, then tweak the next one. Not great.

Here are 2 particle systems playing together in Play mode:

What do you guys think would be the best workaround?
I herd about a plugin that would let you apply specific changes made in Play mode.

Thanks,
ben

Unity have Timelines now! Awesome!

Maybe an editor script that would force all (timeline) particles to update using the delegate EditorApplication.update would do the trick?

A hacky workaround could potentially be to lock the inspector using the little padlock on all your particles in the sequence, not sure if this works with the new Unity version (2017.1+) and timelines as I’m on 5.5 :confused:

Hey Ludvig, thanks for the input! :slight_smile:
I’ll ask our friendly engineers if the script you mentioned could be an option.

I did use the lock trick, but it only works with one Particle System at a time and when trigger using the Timeline, it wouldn’t trigger the children Particle Systems.
Oh actually, I haven’t tried locking multiple panels haha hmm… I’ll give it a try.

Thanks!
Ben

That type of workflow have always been painful. I remember that Unity folks mentioned the other day they are looking into improving how and when particles are playing in Edit Mode. Maybe @richardk could shed some light on that subject :wink:

This is definitely one way to do it. If you use the [ExecuteInEditMode] attribute, and use Object.FindAllCompinentsOfType() and ParticleSystem.Simulate(), you should be able to get this working (I’ve spoken to other devs who have done this)

The padlock idea may work too… although I’m thinking it might only work with one Particle System…

Unity 2017.3 actually makes some improvements in this area. See the Miscellaneous section at the bottom of this doc: Particle System Improvements (2017.3) - Google Docs

The Scene View Overlay will have a new option called “Simulate All”, which lets you make non-selected Particle Systems play in Edit Mode. It is a Layer Mask, so you can choose which layers to preview. It only works on looping effects though.

3 Likes

This was a nightmare trying to preview things in Dead and Buried. Pretty much scaled the effect up and placed it on or next to the mesh, constantly refreshed the particle system, played it in game to see if it looked right, then looped back to the start. Rinse and repeat. :sleeping: