AnimationPoser

Plugins AnimationPoser

Oh, I thought you might be a coder like a lot of people here. C# might be pretty scary for someone used with only a purpose-specific scripting language like MEL.

Well like I always say to people here... Lots of people come and tell me I should release the tutorials and so on... But they don't see I'm very limited in terms of what I can do, given that I don't even make money from virt-a-mate... They should ask the plugin developers they support on patreon: "why don't you help with animationposer, which is something that can be so transformative to the virt-a-mate ecossystem?". Initially I never imagined I could do anything at all without the help of virt-a-mate sponsored plugin developers. I think people should incentivize them to help with animationposer.

That being said, let's see how things go. I feel swamped right now under the currently reported bugs at github (and here), so it seems like a lot of work to have things working smoothly until the next version. But the feature you asked is probably not difficult.

I can feel you bro. The most important thing is dont get burnt out, try not focus on one particularly difficult task and switch to something easier/funnier. Sometimes you have totally new thoughts after a night of sleep. If you feel exhausted, forget about AnimationPoser for a week lol

Which bug in github is that "particularly difficult" bug you are talking about? I might not be able to code, but might be able to share some opinion on it?
 
I can feel you bro. The most important thing is dont get burnt out, try not focus on one particularly difficult task and switch to something easier/funnier. Sometimes you have totally new thoughts after a night of sleep. If you feel exhausted, forget about AnimationPoser for a week lol

Which bug in github is that "particularly difficult" bug you are talking about? I might not be able to code, but might be able to share some opinion on it?

I just solved it. The issue is that virt-a-mate parents all the controllers to the root controller. So, when the root controller moves, the other controllers are updated accordingly. However, in AnimationPoser it is also often the case that the controllers are anchored to the root controller. So the controllers should be updated in relation to the current position of the root controller. However, this leads to the following situation:

-Virt-a-Mate ticks the clock
-AnimationPoser updates the root controller position
-AnimationPoser updates the other controllers
-Virt-a-Mate notices the root controller position changed, and applies the same change to the other controllers, so that they move 2 times what they should
-Virt-a-Mate ticks the clock

This issue doesn't show up when playing the animations because the changes are slight for each clock tick and in the next clock tick the controllers are updated again, so that the error of the tick before is overridden and the controllers are always only one differential (meaning a "tiny") movement ahead of what they should be.

However, in the timelines tab, after the second clock tick nothing is updated anymore, and besides the update in the root controller position is not differential, but can be huge when switching keyframes, so the error in the other controllers positions was quite apparent and made editing the root controller keyframes virtually impossible. Actually, you could get around the issue by attaching and detaching the root controller before doing anything with the plugin, but that was really, really cumbersome of course.

So what I had to do (unfortunately from a coding perspective, but worked pretty well) is save the proper position of the controllers and reapply them after the next clock tick, only when in the timelines tab.

That was a huge issue that took 2 weeks to solve (I rested a lot in between of course). I couldn't actually debug it, so I had instead to formulate a theory (the one I explained above) and to create a solution from the theory, and only when the solution worked I confirmed that the theory was right.

Anyway... That's the kind of stuff I have to do before creating the tutorials.
 
Now walking is finally fully working. Big news!

By this I mean that it is possible to turn a walking cycle into a physically realistic animation where the feet never "slip", by appropriately adding keyframes to the root control position. The process is extremely fast and surprisingly intuitive. I'm very happy with the results! This is better than even Blender tools.
 
I just solved it. The issue is that virt-a-mate parents all the controllers to the root controller. So, when the root controller moves, the other controllers are updated accordingly. However, in AnimationPoser it is also often the case that the controllers are anchored to the root controller. So the controllers should be updated in relation to the current position of the root controller. However, this leads to the following situation:

-Virt-a-Mate ticks the clock
-AnimationPoser updates the root controller position
-AnimationPoser updates the other controllers
-Virt-a-Mate notices the root controller position changed, and applies the same change to the other controllers, so that they move 2 times what they should
-Virt-a-Mate ticks the clock

This issue doesn't show up when playing the animations because the changes are slight for each clock tick and in the next clock tick the controllers are updated again, so that the error of the tick before is overridden and the controllers are always only one differential (meaning a "tiny") movement ahead of what they should be.

However, in the timelines tab, after the second clock tick nothing is updated anymore, and besides the update in the root controller position is not differential, but can be huge when switching keyframes, so the error in the other controllers positions was quite apparent and made editing the root controller keyframes virtually impossible. Actually, you could get around the issue by attaching and detaching the root controller before doing anything with the plugin, but that was really, really cumbersome of course.

So what I had to do (unfortunately from a coding perspective, but worked pretty well) is save the proper position of the controllers and reapply them after the next clock tick, only when in the timelines tab.

That was a huge issue that took 2 weeks to solve (I rested a lot in between of course). I couldn't actually debug it, so I had instead to formulate a theory (the one I explained above) and to create a solution from the theory, and only when the solution worked I confirmed that the theory was right.

Anyway... That's the kind of stuff I have to do before creating the tutorials.

Now I understand why my character has those flickering at the end of each walking cycle. Glad that you solve this!

I saw similar bug before, when I try to parent the character with locator, which the locator was aligned with character's root using plugin (so its a character-locator-character loop here). While in theory this loop isn't gonna move the character, that slightly incremental of each clock tick ends up flinging the character away.

Now walking is finally fully working. Big news!

By this I mean that it is possible to turn a walking cycle into a physically realistic animation where the feet never "slip", by appropriately adding keyframes to the root control position. The process is extremely fast and surprisingly intuitive. I'm very happy with the results! This is better than even Blender tools.

I am quite curious on how you keyframe it, are you suppose to use root control to offset how the feet slips?

Right now I am anchoring the feet differently for stationary (an atom that updates footstep position) and moving phase (to the root), but I am interested in your approach.
 
Last edited:
Now I understand why my character has those flickering at the end of each walking cycle. Glad that you solve this!

I saw similar bug before, when I try to parent the character with locator, which the locator was aligned with character's root using plugin (so its a character-locator-character loop here). While in theory this loop isn't gonna move the character, that slightly incremental of each clock tick ends up flinging the character away.



I am quite curious on how you keyframe it, are you suppose to use root control to offset how the feet slips?

Right now I am anchoring the feet differently for stationary (an atom that updates footstep position) and moving phase (to the root), but I am interested in your approach.

I'm working on the new github release. With it, you will be able to just move the controller until the feet is at the same position as in the previous keyframe, and then capture a root controller keyframe. Do that around 5 times for the loop, and now the character actually walks (and without feet slipping) instead of just staying at the same place like is usual with a walk cycle.
 
A quick question - can [CameraRig] be anchored? I am able to parent an atom by editing the scene file with [CameraRig]:CenterEye, tested and it works, but any changes on the scene file would reverse the editing, which is quite cumbersome.
 
A quick question - can [CameraRig] be anchored? I am able to parent an atom by editing the scene file with [CameraRig]:CenterEye, tested and it works, but any changes on the scene file would reverse the editing, which is quite cumbersome.

Can you try it? I never tried the plugin with non-person objects.
 
Can you try it? I never tried the plugin with non-person objects.
I have tried, anchor atom [CameraRig] is selectable, but anchor control isnt. If you try to edit .animpose file AnchorAControl with "CenterEye", the file fails to load.
 
I have tried, anchor atom [CameraRig] is selectable, but anchor control isnt. If you try to edit .animpose file AnchorAControl with "CenterEye", the file fails to load.

That`s a problem in virt-a-mate unfortunately. However, I still have abolutely no idea what the CameraRig is used for. If you want to render to video, then check out some render plugins in the hub, because if I`m not mistaken they allow you to use any object as the camera.
 
That`s a problem in virt-a-mate unfortunately. However, I still have abolutely no idea what the CameraRig is used for. If you want to render to video, then check out some render plugins in the hub, because if I`m not mistaken they allow you to use any object as the camera.

I am using [CameraRig] to parent game UIs, e.g. the in-game time, player status or whatever. Extra camera means extra performance impact, and the quality isnt worth it at all.

The closest way I can think of is using POV plugin and then parent the game UI to headControl.
 
It's possible you've addressed this before in the thread, but one thing I find absolutely critical in making *fluid* animations, is the concept of curves.

In IdlePoser, this was accomplished by a Control State, where adjacent states flowed through it, but never quite reaching that [exaggerated] position. These states were essentially the control point in a Bezier curve. This concept allows you to "flow" through states. Most of my realistic animations involved a starting state, an ending state, and either one or two Control States in between.

Without this concept, you end up with jerky, puppet-like movement as you chain linear progressions from state to state, only solved by being overly-granular in your states (basically putting states as keyframes very close together). Any chance you could reverse engineer whatever MacGruber did to enable that power in IdlePoser and add something like it here?

Until then, while your plugin is quite powerful (I've certainly wanted a multi-layer IdlePoser for instance) from a technical point of view, it would fail to deliver any of the true immersion that fluid animation brings.If this feature is added, I can start working with it right away to test the power :)
 
It's possible you've addressed this before in the thread, but one thing I find absolutely critical in making *fluid* animations, is the concept of curves.

In IdlePoser, this was accomplished by a Control State, where adjacent states flowed through it, but never quite reaching that [exaggerated] position. These states were essentially the control point in a Bezier curve. This concept allows you to "flow" through states. Most of my realistic animations involved a starting state, an ending state, and either one or two Control States in between.

Without this concept, you end up with jerky, puppet-like movement as you chain linear progressions from state to state, only solved by being overly-granular in your states (basically putting states as keyframes very close together). Any chance you could reverse engineer whatever MacGruber did to enable that power in IdlePoser and add something like it here?

Until then, while your plugin is quite powerful (I've certainly wanted a multi-layer IdlePoser for instance) from a technical point of view, it would fail to deliver any of the true immersion that fluid animation brings.If this feature is added, I can start working with it right away to test the power :)

There are entire timelines in AnimationPoser now. You can have an arbitrary (not only two) number of keyframes between two states and the control points are automatically calculated. Animations can be imported from VamTimeline, or keyframes added and edited in AnimationPoser. The interpolation method corresponds to VamTimeline's "Global Smoothing" method. In other words, Bezier interpolation with automatically calculated control points to give continuous second derivatives.
 
There are entire timelines in AnimationPoser now. You can have an arbitrary (not only two) number of keyframes between two states and the control points are automatically calculated.

Thanks @haremlife - is any of this currently available to test? Not quite sure how to go about adding these keyframes... currently it all just looks/behaves like normal states AFAIK.
 
Thanks @haremlife - is any of this currently available to test? Not quite sure how to go about adding these keyframes... currently it all just looks/behaves like normal states AFAIK.

And playing with 3.9 (includes a Timelines) tab, gotta say, the interface is super confusing and I was unable to create any such interpolated "keyframe" between states in my time fiddling with it.
 
And playing with 3.9 (includes a Timelines) tab, gotta say, the interface is super confusing and I was unable to create any such interpolated "keyframe" between states in my time fiddling with it.

VamTimeline is meant to be used as a keyframe editor, through export and import.

That being said, you can add and edit keyframes in the Timelines tab. First, you need to select a transition, as you would in the transitions tab: https://github.com/haremlife/AnimationPoser/wiki/Transitions-Tab

When you select a transition, there will be a time slider, that goes from 0 to 1. When you move this slider, you will see the transition between the source and target states taking place. You can then select a controller or a morph and add/edit keyframes for it. The transition duration is set in the transitions tab as usual.
 
And playing with 3.9 (includes a Timelines) tab, gotta say, the interface is super confusing and I was unable to create any such interpolated "keyframe" between states in my time fiddling with it.

I mean, there is an "add keyframe" button, and clicking it creates a keyframe. It shows up as long as you select a valid transition and a time that doesn't have a keyframe yet. You gotta be more specific about what went wrong if the explanation above didn't suffice.
 
Hi, this is a great plugin and thanks for all your work! I have an issue trying to trigger the animation through statemachine in logicbricks. I am getting the error message that the animation is not found. For example, the animation is called Animation#1 and in logicbricks I will use "Load animation", with the text "Animation#1" (no quotes of course) but I am getting the error message that Animation#1 is not found. Any idea what the problem is? Thanks!
 
Hi, this is a great plugin and thanks for all your work! I have an issue trying to trigger the animation through statemachine in logicbricks. I am getting the error message that the animation is not found. For example, the animation is called Animation#1 and in logicbricks I will use "Load animation", with the text "Animation#1" (no quotes of course) but I am getting the error message that Animation#1 is not found. Any idea what the problem is? Thanks!

You don't need the statemachine or logicbricks, since the plugin already has an unlimited number of state machines inside.

The "Load Animation" trigger is probably deprecated (it has not been supported for a while, and if I'm not mistaken it has been removed for the next version) so you should probably move to the SendMessage trigger.

There has been some discussion about the SendMessage trigger in the thread. I think cdgczta8's tutorial also covers that.

In summary, you create a message in the messages tab telling to which state you want the character to transition when it receives a message with a given message string. Then you use the SendMessage trigger to send that message string. If you want it to transition to a given animation, just pick a state in the target animation. Also, when receiving a message, the character will go to the target state through a path returned by the path finding algorithm.
 
Thanks, I have never used the message system before, but it was indeed explained in the third tutorial. Thanks also to cdgczta8 for that.
 
Hi, first of all this plugin is the tits. I've ditched all other tools for animations because I really don't feel like fiddling around with transitions and state is much more natural and easier to work with. However, I am having some issues with morphs and state. If I set a morph such as "Mouth Open Wide" all the way up, capture state then literally duplicate it. When I transition between the two the morph resets each time in between transitions. How would I make the morph remain the same throughout?
 
Hi, first of all this plugin is the tits. I've ditched all other tools for animations because I really don't feel like fiddling around with transitions and state is much more natural and easier to work with. However, I am having some issues with morphs and state. If I set a morph such as "Mouth Open Wide" all the way up, capture state then literally duplicate it. When I transition between the two the morph resets each time in between transitions. How would I make the morph remain the same throughout?
View attachment 152303

If I'm not mistaken I have fixed that on newer code. Unfortunately I am not sure if it has been included in the latest github release, but it is included in the current github repository.

If you haven't, try the latest github release.

If it is not fixed in the latest, you can try downloading the actual github folder and moving it to inside the var file. The problem is that the current github folder contains a recent refactoring of the entire UI, and this refactoring might have introduced new bugs (especially buttons not working), but I haven't seen any so far. You might even help if you report on some of those issues, then I can launch the next release sooner.
 
If I'm not mistaken I have fixed that on newer code. Unfortunately I am not sure if it has been included in the latest github release, but it is included in the current github repository.

If you haven't, try the latest github release.

If it is not fixed in the latest, you can try downloading the actual github folder and moving it to inside the var file. The problem is that the current github folder contains a recent refactoring of the entire UI, and this refactoring might have introduced new bugs (especially buttons not working), but I haven't seen any so far. You might even help if you report on some of those issues, then I can launch the next release sooner.
I'll give it a shot and report anything.
 
If I'm not mistaken I have fixed that on newer code. Unfortunately I am not sure if it has been included in the latest github release, but it is included in the current github repository.

If you haven't, try the latest github release.

If it is not fixed in the latest, you can try downloading the actual github folder and moving it to inside the var file. The problem is that the current github folder contains a recent refactoring of the entire UI, and this refactoring might have introduced new bugs (especially buttons not working), but I haven't seen any so far. You might even help if you report on some of those issues, then I can launch the next release sooner.

Just downloaded the latest github release and still getting the same issue.
 
Just downloaded the latest github release and still getting the same issue.

If the current github code (not the latest release) still don't fix this then I'll open a new issue. It seems to me that slightly changing the morph value and recapturing should serve as a workaround for the issue for now though. Or maybe there might be an intermediate keyframe in the timeline that you can delete.
 
Back
Top Bottom