Timeline
Help needed please!

I've been working on a timeline animation with multiple layers and animations. I've saved it but now when I re-open it the plugin is broken (no animation present and buttons don't work) and I get the following error in the console:


!> Timeline.AtomPlugin.Load: System.ArgumentOutOfRangeException: startIndex + length > this.length
Parameter name: length
at System.String.Substring (Int32 startIndex, Int32 length) [0x00000] in <filename unknown>:0
at VamTimeline.AtomAnimationClip.set_nextAnimationName (System.String value) [0x00000] in <filename unknown>:0
at VamTimeline.AtomAnimationSerializer.DeserializeClip (SimpleJSON.JSONClass clipJSON, VamTimeline.AnimatablesRegistry targetsRegistry, VamTimeline.Logger logger) [0x00000] in <filename unknown>:0
at VamTimeline.AtomAnimationSerializer.DeserializeAnimation (VamTimeline.AtomAnimation animation, SimpleJSON.JSONClass animationJSON) [0x00000] in <filename unknown>:0
at VamTimeline.AtomPlugin.Load (SimpleJSON.JSONNode animationJSON, SimpleJSON.JSONNode animationEditContextJSON) [0x00000] in <filename unknown>:0


I've looked at the JSON file and the plugin seems to be there along with all the keyframe data. Any idea how I might fix it?

any suggestions really welcome!

m
 
@mikael this is a bug, probably because of a specific animation sequence that doesn't get correctly validated. If you want to send the json scene to me, it'll be easier for me to reproduce and fix the underlying issue. If you just want to fix it and move on, search in the JSON for "NextAnimationName", one of those will have something like 'Segment:' with nothing after it, or something like that. Remove that line and it should load fine.
 
@mikael this is a bug, probably because of a specific animation sequence that doesn't get correctly validated. If you want to send the json scene to me, it'll be easier for me to reproduce and fix the underlying issue. If you just want to fix it and move on, search in the JSON for "NextAnimationName", one of those will have something like 'Segment:' with nothing after it, or something like that. Remove that line and it should load fine.

I went through the JSON file and although I couldn't see that specific field issue I did notice some disparities and edited all the animations to include the same fields. The scene works again now! So thank you.

It seems that the problem was related to renaming an animation so that it was no longer in a group ("animation/anim1 > anim1)" and then saving and re-opening would cause the plugin to fail. I fixed this by just creating a new animation outside the group and copying the keyframes. Is this the bug you were referring to?

Anyway, thanks again!
 
@mikan the error is when the field NextAnimationName is loaded, and specifically when it starts with Segment: or when it ends with /*. Glad it works, though if you do have the same problem I'd love to see the JSON to confirm the problem :)
 
@brasileirinho normally I'm doing everything I can to make Timeline backward compatible; that means you should be able to delete older versions. But if you notice things that won't behave as before, you can keep older versions to make sure they still work :) It's a risk. I personally always delete older versions of Timeline (as well as older versions of all plugins).
 
@brasileirinho normally I'm doing everything I can to make Timeline backward compatible; that means you should be able to delete older versions. But if you notice things that won't behave as before, you can keep older versions to make sure they still work :) It's a risk. I personally always delete older versions of Timeline (as well as older versions of all plugins).
Thanks! I will make a backup just in case ;)
 
Hi!
thx for the awesome plugin im really like using it! i found something from i don't know im doing something wrong or its a bug / missing feature.
if i make a parent for a joint or change the behavior of it say from "on" to "lock" and switching animation the joints toggle back to "on" state.
i make a video from it if it needed!
sry for noobing but started VaM like 1week or so :S

edit: just noticed that the parent links what i made earlier i cant turn off :/ so how i see my animation stuck in some state where this states are locked and i cant change them
 
Last edited:
@nzm79 parenting is tricky :) If you change the control mode to Parent, Timeline will permanentely remember the animation relative to the parent. That means if you change it later, you'll break your animation.

Also, keep in mind that if you use a Pose in Timeline, it will overwrite your changes every time you switch back to this animation. Remember to overwrite your pose when you make changes to it!

You can use built-in parenting in Timeline, which works better and allows you to switch from one parent to another. In the Targets tab, choose a parent there and keep the node "On".
 
thx for the answer! as i said im still try to figure things out and lot of things not 100% clear but im getting to it. today i will experiment a bit with this pose thingy what not really clear how it works.
another thing that maybe also a stupid thing to ask but maybe im getting lightened up so i not remain stupid :p
is there a way to move animations between layers or segments or i need to do some anim export import magic trick?
also, is this a proper place to ask this type of questions or is there any other forum place where i should ask?
 
@nzm79 I check both here and my Discord (see the resource page, the link is there), whatever works for you! You cannot move animations between layers, though you can create a new segment from the current animation in the Animations + tab. Moving animations across layers wouldn't make sense though; a layer is made of animated targets spanning multiple animations, and targets cannot be on multiple layers, so you wouldn't be able to move the animation.
 
Is there any way to reverse play a set animation for example using it with collision triggers?
Once i remove hands it should reverse play a expression so i do not have to animate through and back.
If i do not do this currently the animation freezes the moment i remove vr hands.

A idea would be either a controller for that, like a checkbox "reverse play this animation" once pressing animation end button in the collision trigger
menu or a checkbox function in timeline and save the reverse play animation under new name.
So i could just select it as the trigger end animation then in the collision trigger menu.

The old vam animation pattern system uses negative times to create a reverse animation and you can save that and use it then but the old system is so
much work compared to timeline.

Are there any plans to animate in real time? Like realtime steps?

Imagined example would be:
Moving arms in vr and each time i leave it pressing a trigger the step will be added to timeline.
if i press the controller trigger having positioned arm position one, this point is added to timeline and once i continue it should record the next step until i again press trigger and so on.

I do imagine either setting a fixed length in timeline as it is usual for example 30 seconds and have that time to create real time animation steps then or
if that would even possible technical let timeline create the length in me moving arms legs and trigger and move and trigger again so the timeline could expand with each step auto with no fixed length. End length would be where i press another controller button or a button > Animation Steps Done ;)

Currently i have to set a arm position, click the timeline in application to set the next goal time position and then can continue moving arms. Then i have to access the menu again and so on.
The old animation pattern system is showing the steps in real time in the scene. So even having such a function with timeline would make everything more comfort to create animations quick and fluid. Having a real time timeline seeing the TL steps could also include a steps function "copy" or "remove step" as it is in the Timeline Dashboard so it would be really easy to reverse a position mistake and do it again but here inside the scene itself.

So i guess there are several workflow possibilities to integrate timeline animation steps access into the live scene.
 
Last edited:
@Lione I'll try and see if I can answer all of this.

1. Playing in reverse: You can set the speed to -1, it'll play in reverse, OR you can make a copy of your animation, and reverse it in More, Advanced. Making a copy for playing is reverse might be easier because you can simply use the "Play" trigger for that animation in e.g. a collision without anything more, as well as tweak the reverse animation if needed.

2. Real time recording: I don't understand... right now if you move a node, it'll save it (except in Comply mode); you can also record in real time using More, Record. But I'm not sure I understand what you mean, so maybe if you explained exactly how you would use what you're describing? Like, what you'd be clicking, what would happen, etc.?
 
Thx a lot :)

it is not working as i wished.

I do a animation lenght 2 seconds.
Here i cannot even set the end keyframe to second 2 .
I can only set it to 1:900 or lower.

So result is that my last keyframe has the head turned because my keyframe is set before at 1:900.
The last keyframe in the animation sets the head position to default position not moved.
So between 1:900 and 2:00 the head spins back.


2022-10-16 16_04_07-VaM.png



It looks like this

Start

2022-10-16 16_27_35-VaM.png


1:900

2022-10-16 16_28_26-VaM.png



Near 2:00

2022-10-16 16_29_15-VaM.png


which is wrong.


Issue two i do have:

Copying the animation to reverse it.

I click + Animation select copy keyframes and add it.

2022-10-16 16_24_16-VaM.png



I select More > Advanced Keyframe Tools and Reverse

So all looks like this now

2022-10-16 16_31_08-VaM.png



My usual end point keyframe i would need to receive a smooth reverse starts 100 ms after that. Sure this is because its a mirror of ANIM1

2022-10-16 16_32_35-VaM.png



My idea then has been to copy my keyframe and paste it to start which works.

2022-10-16 16_34_13-VaM.png



But the entire animation step is deleted then.
I first though this is caused by me deleting the old keyframe but it does not matter.
Even if it stays the animation is wiped same moment i paste my keyframe to second 0 position of anim 2

2022-10-16 16_37_54-VaM.png



I am sure the solution is to solve how to set my Keyframe to the animation1 end point 2:00 and then reverse that animation2.

But how do i do this?

And why technical is it deleting the reversed animation if i copy paste keyframe B to keyframe A in anim2 ?


Realtime recording:

You are right you already integrated a realtime recording feature.
And it is so great. I was just playing with it.

Can the live recording being paused and continued with a keyboard command so the counter starts again 5 4 3 2 1 ?
I noticed escape stops the recording :)
 
Last edited:
Thx a lot :)

it is not working as i wished.

I do a animation lenght 2 seconds.
Here i cannot even set the end keyframe to second 2 .
I can only set it to 1:900 or lower.

So result is that my last keyframe has the head turned because my keyframe is set before at 1:900.
The last keyframe in the animation sets the head position to default position not moved.
So between 1:900 and 2:00 the head spins back.


View attachment 166008


It looks like this

Start

View attachment 166013

1:900

View attachment 166014


Near 2:00

View attachment 166016

which is wrong.


Issue two i do have:

Copying the animation to reverse it.

I click + Animation select copy keyframes and add it.

View attachment 166012


I select More > Advanced Keyframe Tools and Reverse

So all looks like this now

View attachment 166017


My usual end point keyframe i would need to receive a smooth reverse starts 100 ms after that. Sure this is because its a mirror of ANIM1

View attachment 166018


My idea then has been to copy my keyframe and paste it to start which works.

View attachment 166020


But the entire animation step is deleted then.
I first though this is caused by me deleting the old keyframe but it does not matter.
Even if it stays the animation is wiped same moment i paste my keyframe to second 0 position of anim 2

View attachment 166021


I am sure the solution is to solve how to set my Keyframe to the animation1 end point 2:00 and then reverse that animation2.

But how do i do this?

And why technical is it deleting the reversed animation if i copy paste keyframe B to keyframe A in anim2 ?


Realtime recording:

You are right you already integrated a realtime recording feature.
And it is so great. I was just playing with it.

Can the live recording being paused and continued with a keyboard command so the counter starts again 5 4 3 2 1 ?
I noticed escape stops the recording :)
You probably have the animation as "Looping" or "Loop". If you uncheck "Loop", you can set the end keyframe.
 
@Lione yes, @pinosante beat me to it :D Go to Edit, then uncheck Loop. Then instead of a looping animation (which means the first and last frame are always the same), you'll get a non-looping animation (with a beginning and an end). Also, bonus, if you do that, the last frame is going to use a special mode that automatically copies whatever the last frame you created was. If you already added keyframes, you can select Del (delete) to reconfigure the last frame in that "copy last" mode.

Your second issue is also because the animation is looping, otherwise it would do as you expect (if I got that right).

There's no way to record from the middle of an animation or to pause a recording right now.
 
Thx for the tip with removing loop and the additional workflow hints.
It worked :)

Are all the animations i created stored into the scene file if i pack it?
I see them in the list of discrete action but i wonder if i have to do something to pack them afterwards?
 
Everything is in the scene, even poses. The only thing that's not in the scene are references to other vars and morphs themselves, but the Timeline animation and trigger themselves are stored with the plugin's data.
 
When creating multiple animations they don't always show up in a Triggers drop down - ie. Person/Timeline/Anim 1 or Anim 2. Sometimes 2nd, 3rd animations show up. Sometimes not? What am I missing? It has to be something simple.
 
I am also having an issue where my animation stays on the last frame when looping is turned off. Is there a way to reset the animation to the first frame after it plays? It's like the timeline pauses at the end so another animation can't be triggered.
 
@X6CB1080 If you have some info on how to reproduce, I'd love that and I'll try to fix it. For your second question, it would be problematic for non-looping animations to jump back at the beginning; you could add a trigger to make it do that, but I'm curious to hear what you're trying to do.
 
@X6CB1080 If you have some info on how to reproduce, I'd love that and I'll try to fix it. For your second question, it would be problematic for non-looping animations to jump back at the beginning; you could add a trigger to make it do that, but I'm curious to hear what you're trying to do.

Thank you for the reply. I did add a trigger to reset the animation towards the end of the timeline. I figured that out when trying to find am alternative solution. If the timeline doesn't reset, I am not able to trigger another animation. The same animation can be replayed but I can't trigger another. Using multiple animations looks like the only way to have variable animations when animating the same targets? In order to trigger multiple animations for say the head I need the timeline to rest to zero after each animation plays in order to trigger another.

As to my first question. When I add an animation it doesn't usually show up in a trigger drop down menu unless I save the scene and reload it. Animation 1 is always there but Animation 2+ don't show up until scene refresh. I don't know if this is a bug or something I am doing wrong.
 
@X6CB1080 I might need to see your setup to better understand. Usually you can either:

- Use sequencing to move from one animation to another, or;
- Use a trigger to play an animation

If the animations is already playing, it won't re-trigger the same animation. If you want that, you can sequence to another animation (a looping "idle" one for example) so you can re-play the previous one. You shouldn't have to create triggers.

The missing animation sounds like a bug though.
 
I don't suppose there is a way to export the Wiki manual as one PDF file? I like to print out and save manuals off-line so I can read and make notes.
 
Back
Top Bottom