• Hi Guest!

    This is a notice regarding recent upgrades to the Hub. Over the last month, we have added several new features to improve your experience.
    You can check out the details in our official announcement!
AnimationPoser

Plugins AnimationPoser

Hi, I created a 180° turn animation for person atoms. How should this be anchored correctly to reuse it indepently from position of the person in space?

Just anchor to the person root control, which is the default btw.

Unless one of the controllers IS the root control.

In this case, the other controllers remain anchored to the root, but the root is anchored to the world. This is also the default.

Now if you want to translate/rotate the animation as a role, you can set the first state as a root state. Now when you rotate/translate the root state and click capture, the entire animation will be rotated/translated.
 
Just anchor to the person root control, which is the default btw.

Unless one of the controllers IS the root control.

In this case, the other controllers remain anchored to the root, but the root is anchored to the world. This is also the default.

Now if you want to translate/rotate the animation as a role, you can set the first state as a root state. Now when you rotate/translate the root state and click capture, the entire animation will be rotated/translated.
Not sure if I got it correctly, but will try this out. Thx!
 
Not sure if I got it correctly, but will try this out. Thx!

If the root control is not a controller in a layer, then you just need to move the root control, and the animation will move along in real time.

If the root control IS a controller in a layer, then it can't be moved, since the layer is controlling it. In this case, you click the checkbox "root state" for a state in the layer, and rotate/translate the root controller to where you want to, and then click "capture state".
 
Oh, I never tested having the same controller in multiple layers. You should probably not do that.

The thing is, I didn´t. Sorry for causing confusion.

The first picture was taken from here: https://hub.virtamate.com/resources/a-night-with-ava-animationposer-demo.20787/

The buttons in this scene are working, this is why I had the initial idea that I have to set up a "masterlayer" (for the lack of a better term).

I am using the above scene as a reference of sorts to learn / familiarrize myself with your plugin.

The second picture was taken from my own scene.


Sorry again, english isn´t my first language.

Edit: Wrong Hyperlink
 
Last edited:
Lastly, I can try to reproduce the event. I usually make a different save after every alteration so I reverted back to an old save yesterday. I still have the save where the error occured. What files do you need exactly ?

If whenever you load the animation and save again the error repeats, then the .animposer file is probably enough to debug.

Otherwise, I guess you kind of need to figure out a step by step of what to do in an empty scene (or from a working animation file) to reproduce the issue.
 
If the root control is not a controller in a layer, then you just need to move the root control, and the animation will move along in real time.

If the root control IS a controller in a layer, then it can't be moved, since the layer is controlling it. In this case, you click the checkbox "root state" for a state in the layer, and rotate/translate the root controller to where you want to, and then click "capture state".
In this animation the root control is not inside a layer atm. What do you think will be the best setup to make this 180° turn a reusable thing. Creating a second layer with only the root control and turning it at the end of the animation?
 
If whenever you load the animation and save again the error repeats, then the .animposer file is probably enough to debug.

Otherwise, I guess you kind of need to figure out a step by step of what to do in an empty scene (or from a working animation file) to reproduce the issue.

Sorry for pestering you again, but I can´t reproduce the issue.

It seems like it was some (un)happy coincidence, maybe VaM was about to crash because of RAM/VRAM usage and this did mess up something while saving.

Finally the button does what its supposed to do: Starting the animation :)

Now back to the good part ..
 
The PlayPause function doesnt seem working properly, perhaps due to path finding feature.

Say, there is state 1 2 3, each with a trigger to pause. PlayPause is working on state 1 and 3, but when I target state 2, it always ignore the PlayPause trigger, passing state 2 and stop at state 1 or 3.

Adding trigger at every phase doesnt help (OnEnterBegin OnEnterEnd OnExitBegin OnExitEnd).
 
In this animation the root control is not inside a layer atm. What do you think will be the best setup to make this 180° turn a reusable thing. Creating a second layer with only the root control and turning it at the end of the animation?

Like I said, if the root control is not inside a layer, then you just need to move the root control like you do to move any object in virt-a-mate.
 
Like I said, if the root control is not inside a layer, then you just need to move the root control like you do to move any object in virt-a-mate.
Yes, but I would just like to use the turn from any actual position of the person. E.g. after turning 180° I would like turn 180° again to stay in original position.
 
Yes, but I would just like to use the turn from any actual position of the person. E.g. after turning 180° I would like turn 180° again to stay in original position.

Ok, so first... The "actual position of the person", as far as the virt-a-mate environment has any knowledge of, is the position/rotation of the root controller.

If you created an animation where the person turns around, by changing every controller except the root, then no virt-a-mate plugin can know that the "actual position" of the person is facing the other direction. This is more like machine learning stuff. As far as the game engine goes, the position/rotation of the person is determined by the root controller, so, when the person turned around like that, for virt-a-mate it didn't change the person rotation: it changed pose.

So you have an animation that merely changes pose. It changes from a pose which we might call "facing forward" to a pose which we might call "facing backward". Each pose is a state: the first and the last states of your layer, respectively.

Now, this doesn't mean AnimationPoser doesn't get you covered if you want the character to turn around 180 degrees back to the original position.

The first way of doing that is VERY SIMPLE. Just add transitions going backward from each state to the previous! Now, when the character is facing backwards, you can switch to the "facing forward" state, and it will rotate back, playing the animation backwads.

Now, with this procedure, if the character goes from "facing forward" to "facing backward", say, clockwise, then it will go back from "facing backward" to "facing forward" counter-clockwise. This should be enough in most cases!

Now, if you need the character to go from "facing forward" to "facing backward" clockwise, and then go from "facing backward" to "facing forward" still clockwise, making a full circle, then you can create a new animation by the following scheme:

1- Call the beginning and final states of your animation "facing forward" and "facing backward", respectively.
2- Save the layer as "front-to-back.animposer".
3- Set the original position as the root state.
4- Rotate the root controller 180 degrees.
5- Go to the "Control & Physics 1" tab in virt-a-mate and select "Detach root control".
6- Rotate the root controller 180 degrees back to the original position.
7- Click "Capture state".
8- Rename the "facing forward" state to "facing backward", and vice-versa.
9- Save that new layer as "back-to-front.animposer", just to be safe.

Ok, now you have a new animation, which goes from the "facing back" position to the "facing forward" position.

Now, if you want to have BOTH animations in a way that you can easily toggle, here is what you can do:

1- If you are still with the "back-to-front" layer open, then load the "front-to-back" layer. Now you have both layers.
2- Merge the layers in the layers tab.
3- Now the states "facing backward" and "facing front" are duplicated. Delete one of each.
4- Add the missing transitions to make a full circle.

Now, when you are at the "facing front" state and switch to "facing backward", it will follow the animation to turn around 180 degrees clockwise. Now if you switch to "facing front" again, it will turn around 180 degrees STILL clockwise.

Now, I imagine that your original animation has some intermediate states between "facing forward" and "facing backward". Depending just on how many intermediate states you have, you can make the character stop at essentially any angle, so you can make it face any direction.

There is much more to this, but I don't want to overwhelm you right now. I'll do tutorials showing stuff like that. I want to know if that works for you. You can also share the animation with me so that I can give examples of what you can build out of it.

Also... "Walking" and "turning around" are the two most difficult things to do with the plugin right now (or any plugin really). That's because there is this sense of not only displacing the animation, but actually continuing it. In principle, it should be easy to extend a walking cycle so that the characters walks further, or to extend a "turning around" animation from 180 degrees to full 360 or even 720. Right now the merging layers procedure does the trick, but I'm thinking about a more powerful solution.
 
Last edited:
Sorry for pestering you again, but I can´t reproduce the issue.

It seems like it was some (un)happy coincidence, maybe VaM was about to crash because of RAM/VRAM usage and this did mess up something while saving.

Finally the button does what its supposed to do: Starting the animation :)

Now back to the good part ..

Really nice to hear that!!
 
The PlayPause function doesnt seem working properly, perhaps due to path finding feature.

Say, there is state 1 2 3, each with a trigger to pause. PlayPause is working on state 1 and 3, but when I target state 2, it always ignore the PlayPause trigger, passing state 2 and stop at state 1 or 3.

Adding trigger at every phase doesnt help (OnEnterBegin OnEnterEnd OnExitBegin OnExitEnd).

Hmm.. The pause button only stops the engine that randomly selects a next state from the current one, based on transition probabilities. It does not stop triggers. If you trigger the character to go to state F, it will go to state F, even if the animation is paused. I might change that if users find that it is not a good thing. Actually, it does makes sense that messages should be ignored if the plugin is paused.

Notice however that right now you can also play with Avoids. Placing an Avoid will prevent the character from passing through a given state. So you might use that to block it from traveling certain paths, or any path at all. I rushed a little bit with avoids but I think the "PlaceAvoid" and "LiftAvoid" triggers are there.
 
@haremlife

Thx for the detailed explanation. Some of the stuff I already know. I also already tried alot with detaching the root in order to create those poses. Unfortunately at the end it didn't turned out as expected.
And yes I know, moving and turning is complicated. I'm wondering how VAMs onboard animations do this. You can chain them just as you like. Walking, turning, walking turning and so on. I just hoped I can achieve this easily with animatiomn poser. :) I will share the animation later on the hub.
Thx again and cheers,
r
 
@haremlife

Thx for the detailed explanation. Some of the stuff I already know. I also already tried alot with detaching the root in order to create those poses. Unfortunately at the end it didn't turned out as expected.
And yes I know, moving and turning is complicated. I'm wondering how VAMs onboard animations do this. You can chain them just as you like. Walking, turning, walking turning and so on. I just hoped I can achieve this easily with animatiomn poser. :) I will share the animation later on the hub.
Thx again and cheers,
r

How it didn’t work? If you have an animation that you like which makes the character turn around 180 degrees, then there is no reason why you can’t accomplish making it go back through the methods I mentioned, and no reason for it not to look good since it is exactly the same animation.
 
I'm wondering how VAMs onboard animations do this. You can chain them just as you like.

It’s easy actually. It’s just concatenating animations with proper transforms. AnimationPoser already does that, but I’m probably implementing a shortcut to the merge layers procedure, so that you can do that with one click or so. The open questions are entirely about UI/UX only.
 
Last edited:
Also... "Walking" and "turning around" are the two most difficult things to do with the plugin right now (or any plugin really).

Which is what I am working on for weeks. Right now I can have a list of random locations on map, the character walks and turn around automatically, but her pose is not natural due to changing pace.

Which comes to my question, is there are method to tell anim move in uniform speed? Say, if state 1 and state 2 are 24 unit apart and the anim is 10 sec long, how can i make sure the atom moves 2.4/sec? Right now, even without ease in east out, the atom seems accelerating at the beginning and decelerating at the end. This makes the character looks like dragging forward at maximum speed.
 
Which is what I am working on for weeks. Right now I can have a list of random locations on map, the character walks and turn around automatically, but her pose is not natural due to changing pace.

Which comes to my question, is there are method to tell anim move in uniform speed? Say, if state 1 and state 2 are 24 unit apart and the anim is 10 sec long, how can i make sure the atom moves 2.4/sec? Right now, even without ease in east out, the atom seems accelerating at the beginning and decelerating at the end. This makes the character looks like dragging forward at maximum speed.

I have implemented timelines for the next release, so you will be able to add keyframes and fully personalize the curve, not to mention it will have bezier curve interpolation.
 
I have implemented timelines for the next release, so you will be able to add keyframes and fully personalize the curve, not to mention it will have bezier curve interpolation.
Thanks, I am looking forward to new release.

Is there are more convenient way to sync layers using roles? Right now if there are 10 states going to the same 11th state, you have to add role messages on each transition (1-11,2-11...10-11), I suppose you can add the same function on message tab?
 
Thanks, I am looking forward to new release.

Is there are more convenient way to sync layers using roles? Right now if there are 10 states going to the same 11th state, you have to add role messages on each transition (1-11,2-11...10-11), I suppose you can add the same function on message tab?

You can add a state between those 10 states and the 11th, with 0 state duration and a transition to the 11th that takes 0.1 seconds and sends the sync layer messages :giggle:
 
Timelines and the entire system that comes with them has been successfully implemented. The next release is almost ready, I just need to scan the plugin for bugs and make some small tweaks.

This is the last step in development. The plugin is complete, with the entire envisioned feature set.
 
I've started to use your plugin and so far it is one of the best tools I've found to animate the character without too much trouble.

There is one thing, I'm trying to do and I hope one you would be helpful.

Let me say I animate my character with an idle animation of it standing. The controller node is at ground in between it feet. The animation has the following controller selected.

Neck

Shoulders
Thighs
Hand
feet

Like my name suggest, I like to play with the character size. I'm trying to figure out how to animate the scale of the character without impacting the current animation dynamically. So far, if I change the character scale, I need to do it on one of the animation states as roots and capture the new state with the new scale.

Otherwise, the character becomes all cramp because their node keep their position from the animation.
Here is a quick draw to try to image the situation.

1659016554210.png

Following this process, I would need to create multiple idle animation at different scales and make another animation to synchronize the scale change in between.

However, I would like to be able to change the scale of the character will the animation is playing. Is there a way to do it with the current state of your plugin?

I hope I was able to clearly explain my particular issue with the plugin.
 
I've started to use your plugin and so far it is one of the best tools I've found to animate the character without too much trouble.

There is one thing, I'm trying to do and I hope one you would be helpful.

Let me say I animate my character with an idle animation of it standing. The controller node is at ground in between it feet. The animation has the following controller selected.

Neck

Shoulders
Thighs
Hand
feet

Like my name suggest, I like to play with the character size. I'm trying to figure out how to animate the scale of the character without impacting the current animation dynamically. So far, if I change the character scale, I need to do it on one of the animation states as roots and capture the new state with the new scale.

Otherwise, the character becomes all cramp because their node keep their position from the animation.
Here is a quick draw to try to image the situation.

View attachment 143021
Following this process, I would need to create multiple idle animation at different scales and make another animation to synchronize the scale change in between.

However, I would like to be able to change the scale of the character will the animation is playing. Is there a way to do it with the current state of your plugin?

I hope I was able to clearly explain my particular issue with the plugin.

Ideally, I think the animation should scale together with the character. So if one of the plugin developer veterans helps me getting access to the person scale value, this should be pretty doable. Like some 3 lines of code.
 
I wish I could help you with that. My programming knowledge stop at Powershells.


Otherwise good job with the plugin. I have a lot of fun creating different animation with it. I'm curious to see what we will be able to do in the future with it.
 
Back
Top Bottom