Timeline
Yo AB. Big thanks for allowing multiple atom Timelines on the controller UI! Its awesome never having to dip into the root controller to play with 2nd and 3rd timelines. Speeds up the process no end!

While I'm here, I wanted to ask you about parenting. Its great allowing parenting in the targets settings - Rubberleash style. But I'm finding that the *other* method of parenting can sometimes cause me problems. I'm talking about when a node set to 'on' also has a parent atom defined in 'Link To Atom' - causing all animations of that node to be relative to the parent. Sometimes, I'm finding I'm wanting to dynamically switch a node from 'on' to 'parent link' ( and vice versa ) using a master trigger track. But this produces very unpredictable results due to the relative animation link between the two. Would it be at all possible to disable this feature in the plugin settings? I think with the rubberleash style parenting you put in recently, that's a much better method anyway, so no great loss to me if I could disable the other parenting method. Am I making any sense?
 
The problem with that setting (Parent Link) is that it suddenly changes the point of reference, so blending becomes impossible. This is why I made the built-in parenting system. There are no "clean" way to get the best of both worlds at the moment...
 
The problem with that setting (Parent Link) is that it suddenly changes the point of reference, so blending becomes impossible. This is why I made the built-in parenting system. There are no "clean" way to get the best of both worlds at the moment...

I understand. My question was mainly: Seeing as you have the newer ( better ) in-built parenting system - why not disable the Parent Link method? Or at least, have a plugin setting that disables it? I love the new parenting system. It's bloody fantastic to be honest! - but the 'parent link' method is quirky and limits the ability to dynamically switch a node from 'on' to 'parent link' ( using timeline or some other plugin ) without making a mess.
 
Hi again AB. Aside from the above - I have spotted another thing which I'm not sure is correct or a bug. See the attached scene.
In the scene, I have a person and a sphere. Both have a timeline attached, each with a default anim and with a shared anim called 'linked anim'. When play 'linked anim' on the person, the animation plays on both the sphere and the person, as expected. However, when I click stop and then stop again to reset the anim, the person animation resets back to frame zero, but the sphere will only reset to zero if 'linked anim' is the currently selected anim in the UI.

I tested this further using manual scrubbing. If the spheres currently selected anim in the UI is 'linked anim', and I scrub 'linked anim' on the person, both animations will scrub together, as expected. However, if I change the sphere current anim to 'default sphere', and then try to scrub the persons 'linked anim' again, it doesn't scrub the spheres 'linked anim' animation. Is this correct behaviour?
 

Attachments

  • timeline_linked_anim_test.json
    153.8 KB · Views: 0
Acid Bubbles updated Timeline with a new update entry:

Timeline v4.0.17

- New option to disable the paths when selecting controllers - thanks @via5
- Fix stop and reset not sampling the animation frame
- Actually stop the playback when no animations are playing
- Fix scrubber behavior when playing from a storable
- Fix scrubber behavior when scrubbing during playback

Read the rest of this update entry...
 
Cheers for yet another update AB! I wanted to just give you a little nudge regards my last post above relating to the scrubber sometimes not working with 2 anims with the same name. Your thoughts would be appreciated. Thanks. :)
 
@fishcakes I still have a few other requests for help I have to investigate first. It's a lot of work maintaining such a complex plugin :) It's in the list though. As for your previous question about parent link, I cannot easily disable that (and I don't think someone should mess with the "native" vam features).
 
@fishcakes I still have a few other requests for help I have to investigate first. It's a lot of work maintaining such a complex plugin :) It's in the list though. As for your previous question about parent link, I cannot easily disable that (and I don't think someone should mess with the "native" vam features).

No problem at all. Thanks for getting back to me.
 
Ok @fishcakes so it took a while but I checked this. Animations with the same names will scrub together, but if they don't, they won't. The idea is that only shared animations will sync at all. Same for Play, it will play on all atoms for the played animation name, regardless of selection. The only case that is not necessarily intuitive is if you stop twice and the other atom's not having the same one currently shown won't reset the time on it. The reason is a little bit obscure and I could change that if it's an issue.

Do you have a different opinion on how it should behave? Can you share why?
 
Ok @fishcakes so it took a while but I checked this. Animations with the same names will scrub together, but if they don't, they won't. The idea is that only shared animations will sync at all. Same for Play, it will play on all atoms for the played animation name, regardless of selection. The only case that is not necessarily intuitive is if you stop twice and the other atom's not having the same one currently shown won't reset the time on it. The reason is a little bit obscure and I could change that if it's an issue.

Do you have a different opinion on how it should behave? Can you share why?

Thanks for checking this out AB. I'm not quite sure its working as you described. When looking at the test scene I attached to my post, both the person and the sphere have an animation called 'linked anim'. But scrubbing this anim on the person will only scrub the same anim on the sphere if its selected in the spheres timeline UI. If you select the spheres timeline, and change the current selected anim to the default anim ( not 'linked anim' ) - then switch back to the person timeline and scrub 'linked anim', it wont scrub the anim on the sphere. At least - thats what im seeing on my end. Is it working as expected for you?
 
Ok so I had time to check this again, and I'm confused (taking for granted that I'm missing something for now).

So, the state is: Person has linked anim selected, and Sphere as default sphere selected. I'm looking at the Person atom's Timeline. When I scrub, it doesn't affect the sphere. Is that correct?

Then this is the desired behavior. If you play the linked anim, it will play on both, but until you switch the current animation on the sphere, it won't scrub together.

Here's the logic:

When you scrub an animation, it syncs up with any other atom currently showing this animation. This is a "design time" feature to make animation easier. When you play an animation however, it sends a signal to other instances to start playing that same animation if it's available. that's a "runtime" feature. I'm guessing you are expecting scrubbing to "change" the current design time animation on the sphere, however I'm not sure this is such a good idea. That would be like saying that if other atoms have a matching name, they are not allowed to have a different selection, since it would "deselect" your animation as soon as you touch another atom that has a potentially linked animation.

First of all, did I get that right? And now, if you believe the behavior should be changed, how would you see this work? Should Timeline disallow switching to a non-linked animation? Should it switch back automatically? I'm not sure there's a "right" answer, so I'm curious to hear your thoughts.
 
Ok so I had time to check this again, and I'm confused (taking for granted that I'm missing something for now).

So, the state is: Person has linked anim selected, and Sphere as default sphere selected. I'm looking at the Person atom's Timeline. When I scrub, it doesn't affect the sphere. Is that correct?

Then this is the desired behavior. If you play the linked anim, it will play on both, but until you switch the current animation on the sphere, it won't scrub together.

Here's the logic:

When you scrub an animation, it syncs up with any other atom currently showing this animation. This is a "design time" feature to make animation easier. When you play an animation however, it sends a signal to other instances to start playing that same animation if it's available. that's a "runtime" feature. I'm guessing you are expecting scrubbing to "change" the current design time animation on the sphere, however I'm not sure this is such a good idea. That would be like saying that if other atoms have a matching name, they are not allowed to have a different selection, since it would "deselect" your animation as soon as you touch another atom that has a potentially linked animation.

First of all, did I get that right? And now, if you believe the behavior should be changed, how would you see this work? Should Timeline disallow switching to a non-linked animation? Should it switch back automatically? I'm not sure there's a "right" answer, so I'm curious to hear your thoughts.

Hey AB. Thanks for looking at this. I do understand the issues, and yes, you did get it right. From my perspective, as an animator, I still feel like linking up all linked anims has some serious benefits. If touching the scrubber will automatically 'select' any anims with the same name, it means I can scrub to a certain position and then create keyframes on both anims by moving nodes that exist in both layers.

I use the linked anim feature a LOT. In some cases, I have linked anims within the same persons timeline instance. For example, I might have a head layer containing the head node, and a hands layer containing the hand nodes. If I create anims in both layers with the same name, then there play together which is great. However, in this instance, the scrubber does seem to work which is a bit strange when considering what you wrote above. As in... same timeline/person with 2 anims with the same name in two layers. Scrubbing any one of them will scrub the other, even though technically only one of them is selected. So, this is a bit contradictory to the problem. Why do both anims in a simple timeline instance scrub together even though one isn't selected - but the same doesn't work when we are scrubbing over two timeline instances with linked anims?

In a perfect world, I would want the scrubber to work like pressing play. i.e. Will scrub all anims across the whole scene with the same name. When two anims are linked, its super helpful to be able to see where each anim is at. A good example, and one that bought up the question for me in the first place: 2 people and sitting up in bed hugging. Now, I want them both to lay down while remaining in an embrace. I would create a 'lay down' anim in both timelines. Now- the process of creating the keyframes on both timelines to go from sitting up to lay down with all the various arm, leg and head movements required, is extremely difficult if the two 'lay down' anims are not linked when scrubbing. Its essential to be able to see both. Myself, I always start by creating all the start and end keyframes. Then I start filling out the transitional keyframes. Scrubbing person1's anim to halfway, without the other person also scrubbing to halfway, makes setting up these keyframes next to impossible.

Bloody hell... I've written a wall of text again. Really sorry! Hope it all makes sense. I figured it would be a good idea to explain 'why' I think this is important as opposed to how to fix it. Im not really sure about a solution, but I'll give it some more thought. Love to hear what you think. Cheers.
 
Last edited:
Well normally they should scrub together in normal usage. If you switch to an anim that has linked animations in other atoms, they will scrub together. The only case where it will _not_ scrub together is if you select a non-linked animation in atom B and then scrub in atom A, it won't re-switch atom B's animation.

In other words, I completely agree with your usage, and it's mine too. I'm thinking maybe something in your workflow might have you do the "path" I described before, switching to a non-linked animation in one atom and then selecting the other back... In any case I'm taking a note but I'm not sure how easy it will be. Right now there are "time set" events in multiple cases, if I have them also switch (which dispatches a new "time set" event) I might end up in an infinite loop until you get to a matching time + anim, making it impossible to switch to another animation. I could probably make a feature to "select current animation everywhere" but it wouldn't be much easier than selecting "next" and then "previous" animation in cases where you end up with mismatched animations.
 
Hmm... I understand AB. Its clearly complicated! I don't really have any practical suggestions, but i'm gonna give it some more thought.
 
Well to be honest it shouldn't be complicated, but doing this in my spare time within VAM which doesn't always makes things easy (plugins interop is hard) makes it so :/ Let me know if you have something in mind, I can always make an option (e.g. force all atoms to share all animations) but it'll need some thought,
 
In June 2020 someone asked about access to "undress" to strip a model. Does it work now - i did not find access with v4.1.0
If not, what is a good way to animate someone talking their cloth of or get them taken off by another person?

Workaround for me is a trigger that loads
Receiver Atom: Person
Receiver: ClothingPresets
Target: LoadUserDefaults - and they are just empty ... so the cloth just disappear

-
Another workaround (found in animation of scene "G-Time SexY Clubbing Vol. 1" by C&G Studio):
"Skirt Drop" Woman: Person -> Receiver "Skirt" -> allowDetach
and
"Pants Off": Man Person -> Receiver "Pants" -> Alpha Adjust
 
Last edited:
@8Ball it can usually be done with a mix of ClothGrabSphere (parent to the hand and turn it on/off as needed in the animation), and the detachThreshold can be animated using the clothing's param. For "allowDetach" and other non-float params, you'll have to create triggers in Timeline for that (trigger rows)

See this scene for a very good example: https://hub.virtamate.com/resources/hannah-flashes.1236/
 
Acid Bubbles updated Timeline with a new update entry:

Timeline v4.1.1

- Clip speed blending (much smoother when blending between clips with different speeds)
- Fix split selection to another layer
- Do not stop running animations until no other animations are queued (fixes animation sequences sometimes stopping unexpectedly)
- Analog keybindings for animation scrubbing (Keybindings plugin)

Read the rest of this update entry...
 
Acid Bubbles updated Timeline with a new update entry:

Timeline v4.1.2

- Fix master animations not propagating since the last release
- Fix speed blending being done from all animations instead of just the blended layer
- Make "preserve loop" make the animation switch at half the blend duration for smoother transitions
- When starting an animation from a master timeline, ignore preserve loop settings to ensure both run at the same time

Read the rest of this update entry...
 
I'm looking for help on a basic question; maybe someone can point me in the right direction. Can you make your animation relative to the root location of the character? In other words, if you have a head movement and are only animating that mode, how do you export it so that it will not pull a differently-posed character to the location it was when it was created?
 
@mos2112 you can change the parent using "physics parent" for _permanent_ parenting (you can't change it without breaking your animation) or in Timeline you can go in Targets, chose your controller options on the right (expand the controller for settings) and there you can set a parent :)
 
@mos2112 you can change the parent using "physics parent" for _permanent_ parenting (you can't change it without breaking your animation) or in Timeline you can go in Targets, chose your controller options on the right (expand the controller for settings) and there you can set a parent :)
Thanks!
 
Back
Top Bottom