Jump to content

Why won't some animations stop until complete?


Qie Niangao
 Share

You are about to reply to a thread that has been inactive for 880 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I have a few ancient boxing-related animations that I began playing with recently, all priority 4, looped.

Thing is, two of them just won't stop until they play through to the end.
They're still visibly active in the viewer and included in the Develop / Avatar / "Animation Info" text, despite being gone from llGetAnimationList().
This happens whether trying to Stop them when playing from inventory or after llStopAnimation after playing in a scripted object.
Pushing a single-frame unlooped animation (as suggested in the LSL wiki) doesn't appear to matter.*

This is probably all a simple, very common phenomenon that I've somehow missed all these years, but now I can't stop obsessing over it:
Why do these two anims behave this way whereas other, seemingly similar ones stop when told?

_________________
*I tried with one I made in QAvimator but I obviously don't know what I'm doing with animations so maybe a different one could work?

Link to comment
Share on other sites

4 hours ago, Qie Niangao said:

I tried with one I made in QAvimator but I obviously don't know what I'm doing with animations so maybe a different one could work?

The only things in Qavimaor you have any control over are the fade-in and fade-out durations, and the number of frames, it's possible that a large number of frames results in it not stopping? It's easy enough to add extra steps to the same animation and squander a few lindens to see if there's any effect.

Link to comment
Share on other sites

56 minutes ago, Profaitchikenz Haiku said:

The only things in Qavimaor you have any control over are the fade-in and fade-out durations, and the number of frames, it's possible that a large number of frames results in it not stopping? It's easy enough to add extra steps to the same animation and squander a few lindens to see if there's any effect.

Ah. I didn't create these looped animations that won't stop; they're very old, salvaged from some forgotten SL antiquity, and created by an animator who seems long gone from SL. I only used Qavimator to make a single-frame unlooped animation to play after trying to stop one of the unstoppable ones, as the wiki suggests. That suggestion, though, is specifically for the situation where there are no other animations playing on the avatar at all, which is not really the case here.

In the past, I've pushed a built-in "sit" or "stand" to make sure a looped animation stops, but that didn't work with these particular looped boxing anims so instead I tried—just as unsuccessfully—to stop them with one that I made specifically single-frame and unlooped to match the wiki suggestion. But maybe somebody has one that's known to work for whatever magic the wiki is suggesting.

Link to comment
Share on other sites

1 minute ago, Profaitchikenz Haiku said:

Just a thought here, these are actually sequences of changing positions, not just a pose that starts with the T and then loops repeatedly fro 2 to n frames? Are they perhaps P5?

They show as P4 in the Avatar / Animation Info text, and they definitely change a lot of joints while they play, dancing the avatar around quite a bit. Stopping them immediately after starting them they each last about twelve seconds. I can't really tell for sure if they loop back to the very first frame but it's gotta be close to that.

Link to comment
Share on other sites

Just woke the machine to check what Qavimator offers, it's loop in, loop out, frames and speed. So unless there's some trick with setting a very long loop in or loop out I can't think of any other options nt also given to you at upload. I've never actually looked at things I created to see where exactly they stop, but from what you're describing it sound's like its motion capture stuff which I've not pplayed with at all.

 

As an experiment, I's suggest creating a long animation (60 + frames) in Qavimator where every 10 frames the avatar moves one limb, then see if you can stop it anywhere in the cycles or only at the final fifth movement

Link to comment
Share on other sites

30 minutes ago, Profaitchikenz Haiku said:

As an experiment, I's suggest creating a long animation (60 + frames) in Qavimator where every 10 frames the avatar moves one limb, then see if you can stop it anywhere in the cycles or only at the final fifth movement

Okay, I did that just to make sure, and of course it stops wherever in the animation it's told.

I have other anims from the same animator that work as expected, just these two I've found (so far) that won't stop until the end of the loop.

Link to comment
Share on other sites

When you stop an unlooped animation, it continues playing either for its EaseOut time or to its natural end, whichever comes first.

When you stop a looped animation that doesn't have an outro (that is, Loop Out is 100% or the last frame), it continues playing for exactly its EaseOut time. If it reaches the loop end during that time, it will hold on the last frame instead of looping.

When you stop a looped animation that does have an outro, it continues playing either for its EaseOut time or to its natural end, whichever comes second, so it always finishes to the end of its current loop and plays the full outro (though possibly very muted by outbound easing at that point). It will also hold its last frame instead of looping if it reaches the end during this.


According to the wiki, there is also a weird corner case where if your avatar is playing exactly one animation, and it loops, that trying to stop it doesn't stop it. It only flags the animation as "leftover" and keeps it going until another animation starts.

 

Edited by Quarrel Kukulcan
  • Like 3
  • Thanks 3
Link to comment
Share on other sites

The way it was explained to me ages ago (by Dari Caldwell, I think) is that, when you have a looping animation, llStopAnimation tells the simulator to send a message your CPU/GPU telling it to stop the animation, which it will do, after the animation completes the current loop.

To end the animation before the loop finishes, call llStopAnimation and then call llStartAnimation("stand").    As soon as that starts, the user's AO should detect a change in animation state, and take over.

I've long done that by default unless I'm sure about the animations I'm working with.

  • Thanks 1
Link to comment
Share on other sites

That usually happens with partially looped animations.

Let’s say you are making anim with pre-action, for example: standing in front of the chair - sit - stay sitting.

As sequences in SL are not working as they should be, to create something such a scenario you would need to make partially looped animation: first time it would play entire anim and loop to the point where you are already at the chair as playing loop from the start would have no logic. Whenever you try to stop such an animation you will have to wait till the end for it to stop.

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Thanks @Quarrel Kukulcan and @RohanaRaven Zerbino, that's exactly what I needed to understand. Combining your two responses, I think I get what's happening and why. I'm not sure why, in all these years, I've never before found this to present an insurmountable problem for anything I was trying to do.

As @Innula Zenovka explained (and as I mentioned trying above) it's very common for us scripters to just push a "stand" after stopping a looped anim and expecting it to make the looping stop. I now gather that the reason this works is that the "stand"—or its override—has at least equal priority to the still-looping anim, so the "stopped" anim stays among the avatar's animations in the viewer until the loop ends, but is hidden by the new one. I suppose individual joints still "dance" to the stopped-but-lurking looping anim unless overridden by the new one.

I now appreciate that these particular partially-looped priority 4 anims are just unsuited to how I was trying to use them—and I know something more what to look for in anims or do in creating them.

But speaking of knowing more:

14 hours ago, Quarrel Kukulcan said:

According to the wiki, there is also a weird corner case where if your avatar is playing exactly one animation, and it loops, that trying to stop it doesn't stop it. It only flags the animation as "leftover" and keeps it going until another animation starts.

and that's the case I mentioned finding in the LSL pages of the wiki. I don't know where to find similar detail about animation topics (although the "How to create animations" wiki page has some information I didn't know before).

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

8 hours ago, Qie Niangao said:

I don't know where to find similar detail about animation topics (although the "How to create animations" wiki page has some information I didn't know before).

I think I got it from http://wiki.secondlife.com/wiki/Animation_Upload_Loop_Controls after another member pointed me there. Sorry for not linking it earlier, but I had to hunt for it a second time today (the wiki is not well-organized) and I was slightly sick yesterday.

  • Thanks 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 880 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...