Timeline
@falbst I'd really like to understand the broken keyframe issue you have shown but I don't understand the steps, nor the result. https://hub.virtamate.com/threads/timeline.94/post-122622

Can you help me and:

1. Either record or lead me step by step on what you do? "Recording with Embody" should create tons of keyframes and in the screenshot there's only one, and "multiple curve types" is also unclear what it means in practice.
2. Send a "broken" scene with exactly which keyframe is broken? That might be enough for me to figure it out.
@Acid Bubbles, Gidday, thanks for your response. i will try and get out a scene to you for testing but I have found a workaround and instead of using the flat curve for animation when using embody I use the Flat->linear curve and it works perfectly.

btw, Awesome update thank you.


Also, would it be possible to save float params?
 
This plugin should be a standard in VAM. Thank you very, very much!!
I've found 4 problems - 1-3 are easy to reproduce, 4 not.
1) Loading file-presets (e. g. poses, clothings ... you name it) with a trigger via "Load Preset with Path" does not work. You can choose a file-preset but don't click okay to go back to the trigger list or test it. Workaround is "Load preset with name".
2) The VAMTimeline.ControllerPlugin is great. Combined with your keybindings plugin you are getting errors if you change between atoms: If you delete, copy or cut a key in timeline it will try to do this for the formerly chosen atom. This can give the error "nothing to delete/copy/cut" or delete/copy/cut something in the timeline of the other atom.
3) Using targets --> Presets --> "Add Fingers" and removing the fingers leads to a situation, where poses with fingers do not work anymore. It seems as if removing a target does not remove this target completely.
4) Parenting often leads to errors in timeline but is not easy to reproduce. E. G.: I parent the LeftHandController from atom 1 to the Head of atom 2. It is irrelevant if hand and head are targets in the timelines or not. I save the pose (inclusive bones, morphs, root and apply on transition). If I switch to another animation and come back the hand is often... somewhere. It will be somewhere every time I come back - even if I reposition the hand and/or update the pose. My workaround is a physics link, but this does not look so good.

Two wishes for the future:
1) ControllerPlugin allows the creation of new animations for all atoms with the timeline-plugin.
2) ControllerPlugin allows editing of all animations from atoms with the timeline-plugin.
 
Last edited:
Would there be the possibility to add an "undo" function - even if it's just for keyframes and some basic functions within the UI? Many times I've accidentally deleted the keyframes and haven't saved :-(
 
@jaro Thanks! And yeah there are a couple of rough edges, like 1 and 2.... for 3, you also need to change back the fingers settings in the "Hands" tab on the Person atom. And for 4, avoid parenting. There's an option in Timeline (expand the controller on the right) to enable Timeline-controlled parenting which avoids a lot of issues with native parenting. Try it!

@mikael I knooow I tried implementing it at least 3 times but it's not obvious at this point in the architecture of Timeline (it wasn't intially designed to be so complex).
 
Would it be possible to:
On a person atom when clicking ''apply pose on transition'' > ''blend-in duration'' automatically goes to ''0'' as it should be.
Now when there is a camera (empty or window-camera) you want to have it in sync with the person atoms
but you can't ''apply pose on transition'' and have to adjust blend-in time manually. It gets annoying when you forget it until you figure out whats wrong.

Just a small QOL feature if possible
 
Splitting animations at scrubber position doesn't seem to maintain trigger tracks correctly. The left part is usually fine but the newly created animation does not contain all triggers and/or not at the correct timestamps. It's not new to this version, though.
 
Hi, I am new to the game, is there a guide or example how to create sex animation? I came from TK17 and thought this one would be a cakewalk :ROFLMAO:
 
@Acid Bubbles
Hi Acid, can you explain how to setup the prevent Exit animation selection in group feature?
I see the checkbox when sequencing to a group, but how do you set an animation within the group as an "Exit Animation"?
 
@ispinox I thought I was already doing that! Added to the list.

@8n2ybclyk982 Yeah I already had this on my list. Thanks!

@Pao44445 I'd love to tell you that it's simple, but VaM is already hard, and while Timeline is pretty simple for an animation software, making animations is also not easy! But it's extremely rewarding though so I hope you figure it out! I made videos on the Timeline wiki, and other people also made tutorials in the Guide section of Hub. Good luck!

@bill_prime if I remember right, when you enter a group like dancing/*, you might have dancing/1 to dancing/9 and dancing/exit for example. You can mark dancing/exit as prevent exit animation and that will avoid entering dancing/* directly in the exit animation, ensuring at least one loop.
 
Segments are broken.
Sorry I cannot use Github so I'm uploading here. It's a scene example with no dependencies that demonstrates that "Play Next Animation" and "Play Previous Animation", launched with triggers (like a button), don't work after you change a segment.
Moreover, the action "Segment" (internally a StringChooserParam) has no effect either.
I hope this can be fixed soon; I have a complex scene that I cannot release because of this.
 

Attachments

  • timeline-next-anim-issue.json
    756.8 KB · Views: 0
Last edited:
Is this relegated to morphs or does it also work on poses whereby you can change character expressions?
 
For me, this is THE greatest plugin of all time. So huge thanks to Acid Bubbles.

I have a suggestion (or question) on functionality. Let's say I have 10 different animation Segments in one scene. I usually add 10 UI buttons to the scene (with triggers to play those animations). Now, there are often times I only want a certain atom (ex.light) to be on during 1 specific segment and off during all others. Currently, I have to add a trigger to each of the 10 segments to control the status of the light. For each additional atom, i have to do the same process 10 times again. I am wondering if it's possible to bulid in some sort of conditional trigger. For example. ONLY IF segment XX is playing, THEN turn on Light No. X. Otherwise keep Light No. X off. This could reduce the workload by quite a lot in some situations.

Any thoughts on this are welcomed!! Thanks!
 
Hello,
I thought I understood what weight did, but suddenly I don't.
I have a breathing animation I wanted to scale the depth of with weight. I thought weight would divide the values of each key. But what actually happens is it depends on when during the animation you change the weight:
GIF 30-10-2023 18-05-08.gif

(the slider changes weight for the specific animation from 0.030 to 1.000)
So if I turn the weight way down while the jaw is at ~60, it stays around 60.
If I turn it down when it's at 20, it stays around 20.

I just need to know if this is me misunderstanding the purpose of weight, or if it's a bug.
 
@VAMSOY I would recommend you check out either LogicBricks (MacGruber, visual programming), or Scripter (mine, scripting). To make conditions like this, both will allow you to do what you need, more learning curve but much simpler setup once you understand how to use it :)
 
@SelakAR Play Next / Previous might be broken and legacy. There's a Play Next in Layer though. Segment _should_ work, as far as I know. I'm sorry I won'T be able to check for a while though, I'm overloaded!
First of all, sorry I've prepended "Play", the correct actions are "Next Animation" and "Previous Animation". But I think you've understood anyway.
How could these useful functions be broken/legacy? You talk about "Layer" alternatives; I see "Next Animation (Main Layer)" for example, but that doesn't fix the issue I'm having at all.

Sorry you don't have enough time right now, but when you do, please have a look at my example scene that I provided, and tell me how I could do what I want to do by using the correct actions, that is, allow the player do do next/prev in different segments.
I'm 100% sure you simply can't, and that is a serious bug in your plugin. These are maybe slightly more advanced functions because people generally simply just do "Play specific animation X" and that's it, but what I'm trying to do is a more complex scene, and right now your plugin does have the necessary functions, but they do not work.

And no, "Segment" doesn't do absolutely anything, I don't even know why it's there. "Play Segment X" is what works, but somehow it doesn't internally update this change and so "Next Animation" and "Previous Animation" do not work after using it.

Again, all is way easier to understand by simply running my example scene (no dependencies).
 
Hello,
one suggestion. When I extend the range for a morph and the morph is used in timeline for animating a person atom -> I select the person atom -> Load new look -> the before mentioned used morph is now again at the default range. Could you please fix this so the range stays the same and does not default, when loading a new look?
 
Hi nice people, regarding segments I'm probably being stupid, so if anyone wants to help stupid, it would be greatly appreciated...

Just started using Timeline 6 - late to the party because I knew what I was doing with earlier non-segmented versions, which were embedded in various projects - and then I read about smaller file sizes and the ability to control multiple atoms - both of which are brilliant, thank you Acid Bubbles for more of your genius work!

But... My previous workflow used the main layer as a control layer, each anim in it being "LightsFadePlay(whatever)" and contained the scene triggers for atom status, animations. lights, logic status etc. Subsequent layers were then motion, status reset, cleanup*, expressions, speech, etc. so just trigger tracks and/or different targets. Within each layer and from ui or e.g. logic bricks triggered in other layers, I could trigger animations which would play conditionally and/or concurrently but independently and only when I wanted them to.

Curiously, the old approach works if updating Timeline in an existing scene, but not for a new scene.

This approach no longer seems to work as segments play either/or - which I get, but all layers in one segment seem to play simultaneously, like they did when splitting targets. I can add a shared segment where anims in the main layer play independently but can't trigger any anims not in the main shared layer, which they won't be if they have different targets, and playing layers in a different non-shared segment stops the current segment from playing.

I'd like to able to unlink and control layers independently, I've searched in vain for the answer, so if someone wants to show me the basic thing I've failed to understand and help me regain some control in my life, that'd be great, thank you.


*Digital tissues and a little lip-gloss.
 
@SelakAR FYI I did not forget you. I'm overwhelmed with stuff (as usual) but you're on my list.

@Mysterio Timeline will normally restore the saved morph range with your scene, and restore that range when loading the Timeline animation so it can animate correctly. That behavior was added to fix problems, so if I were to remove it I'd re-create those problems :)

@FluffyBunny this is something I'm aware of, another case of "a feature becomes a bug depending how you see it" :) What I suggest is that you either A) create an empty animation at the beginning of each layer with weight zero, so while layers do play they would be effectively no-op, or B) add a separate Timeline instance for global control.

The idea of segments is to have completely independent animations, but that can blend without worrying about layers grouping. So this is by design. Feel free to ask if that did not make sense or if it doesn't solve your problem, I'm sure there's a way!
 
@SelakAR FYI I did not forget you. I'm overwhelmed with stuff (as usual) but you're on my list.

@Mysterio Timeline will normally restore the saved morph range with your scene, and restore that range when loading the Timeline animation so it can animate correctly. That behavior was added to fix problems, so if I were to remove it I'd re-create those problems :)

@FluffyBunny this is something I'm aware of, another case of "a feature becomes a bug depending how you see it" :) What I suggest is that you either A) create an empty animation at the beginning of each layer with weight zero, so while layers do play they would be effectively no-op, or B) add a separate Timeline instance for global control.

The idea of segments is to have completely independent animations, but that can blend without worrying about layers grouping. So this is by design. Feel free to ask if that did not make sense or if it doesn't solve your problem, I'm sure there's a way!
Thank you! And thank you for such a quick response. That makes perfect sense and I will tinker tomorrow. And of course, there's nothing preventing me from continuing to use 252, it's a powerful tool and it's not like it stopped working. Tbh, the most time-consuming thing in VaM isn't flow diagrams, or re-texturing, or multiple instances of Timeline in a scene, or even cleaning mocaps - it's getting fingers to play nice and look halfway natural in motion and without clipping. :)
 
@Mysterio Timeline will normally restore the saved morph range with your scene, and restore that range when loading the Timeline animation so it can animate correctly. That behavior was added to fix problems, so if I were to remove it I'd re-create those problems :)

Yes you are right, when I reload my plugin preset it restores the morph range but it's annoying that the range defaults when I change the persons look. I currently have to reload the plugin preset everytime i change the look.
 
Last edited:
Back
Top Bottom