How to only play an animation again after it was completed?

Trying to make a tear based on animating the UV, but having difficult on not interrupting it if blinking again. Thanks!

1 Like

Hi @jepharaujo,
I think you should provide more information about how you want it to be or your current setup, that would give us better understanding and figure out what caused the issue and if there is an alternative way to accomplish it. But I’ll try my best to guess what caused it and hopefully provide a solution that you can try until we get a better understanding of your setup and goals.

There are many methods that we can use to animate UV.
Based on what you mention about interruption issue, I’m guessing you created the animation using eye openness to send a pulse to turn on and off an animation patch. that’s prone to interruption issue based on my experience, it would require some fidgeting around the logic with some delay.
But you could make a duplicate of the mechanism and merge some of the driver value to reduce redundant processing and then make a blend of them using the same interpolation trick in a flow map.
If you’re interested to learn about it you could check out this thread:

Or you could watch this video first about flow map:

(Note that what you need is just the interpolation between 2 animation to avoid the interruption, so the first animation won’t reset just because there is another trigger before it’s finished. Because I guess you wouldn’t want a continuous stream of tears just like what you can see in the video.)

After you’re done with blending the 2 animation setup, It’s just a matter of building the logic of the trigger and the blend so it looks like it just keep on spawning tears in every blink.

With that said, roughly the setup that you need to have would be something like this:
Set a mask of where the tears would go (the tear track).
Set a mask of a single drop of tears
Set the direction of the tears (which is down in Y axis leave the X 0.)
Set the trigger for tears A
Set the speed of the tears that put the trigger and other driver/multiplier into the calculation
Duplicate tears A setup and merge all patch that you want to have the same input.
Set a blend for both tears
If you have multiple column of tears, and want each column have different speed, you could also set a grayscale temporal mask (a mask to control the speed of time or progress) based on the tear track.

(Note that if your tears are a 2D droplet that use normal map to look 3D and realistic, You would also need to animate the normal map texture just like the diffuse texture).

If that’s too complicated, and what you need is only a simple animation, you could try to put an AND logic patch between the trigger. 1st input is for the real time trigger, and 2nd input is the real time trigger with a delay with the same duration as the animation duration. that way it will only send a pulse after both slot are turned on.

EDIT (additional info):
Here is a little preview of how it looks and textures that i created in april to achieve this effect :




(It’s from my old unfinished project, i didn’t put a specific trigger for it. but if you want a trigger, you could make it control the opacity and reset animation. but in my case I use runtime, to procedurally changes the order and speed of tears. but of course you could do it using loop animation or animation patch. it’s just preference.)

I hope it helps. Good luck!

4 Likes

Yes! This is a great use-case for flow maps!

@jepharaujo we have a flowmap project included in Flow Kit.

3 Likes