First of all: there was a huge bug left in version 3.1, which made animations which were saved in a person and loaded in another break. This was fixed.
Cross-animation was a huge conceptual challenge. How to implement it? When a state in a layer in an animation transitions into another state in another layer in another animation that doesn't share the same controllers, what happens? What about the other layers, what are going to be the arrival states?
Worse than all, how to create an UI for this?
Those problems have been solved, and cross animation transitions are here to stay.
What good would be to have dozens of different animations, if you could not transition from one animation into another?
Triggers allowed to transition between animations. But they are horrible to setup. And, worse: triggers are not reusable. If I have a huge setup of dozens of animations and complex rules for transition between those animations, how would I save all of this and load into another person character? I couldn't do that with triggers. Also, triggers meant rough transitions.
Now you don't need triggers. In the transitions tab, you can select another animation, select a layer, a state, and add a transition. When this transition happens, it will switch the animation to the other one, in a smooth manner, and every transition setting is respected. This way you can bridge multiple animations through "exit" and "arrival" states.
Now, what happens to the other layers, when you arrive at the animation? You can add sync states for each layer that you think is important.
In other words, let's say I have State A in Layer 1 in Animation 1, and I transition into State B in Layer 1 in Animation 2. Animation 2 also has Layer 2 and Layer 3, with multiple states.
You can select Layer 2 and choose a Sync State. When transitioning from State A to State B, the animation will not only transition to State B in Layer 1, but also transition to the selected Sync State in Layer 2. You can do the same thing for Layer 3.
This way you have MAXIMAL control of whatever huge web of multiple animations you want. Besides creating, saving and loading the layers, and bringing them together to create animations, you can chain multiple animations with complete control of how those animations transition into each other.
And, better of all, you can save this entire web of animations (the complete plugin state) and load everything with a click.
Version 3.2 is a gigantic step forward, and I hope people can already make amazing stuff with it. The next minor versions will add minor fixes and developments.
Then I will add a much needed tutorial. This plugin is not like IdlePoser anymore, it is a huge new thing, and it needs a tutorial to showcase all it's amazing features. It has a "do more with less" philosophy, but the "less" has already become a lot, so I will definitely add some instructions pretty soon.
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Edit: There is still a superficial (but annoying) issue sometimes when adding a new animation (it doesn't transition to the new animation and gets stuck in the current one). If that happens to you, switch to any other tab other than "Play", and then switch to the newly created animation. This will be fixed soon.
Version 3.1 is sort of an emergency update. A lot of people have been facing issues with version 2. If you were unable to use the plugin before, please give it a try now.
Version 3 in general is a huge step forward. It will implement my original vision for the plugin. Version 1 was a sort of compromise: I wanted to repurpose IdlePoser for animation, but changing it as little as possible. After the repercussions, I have decided to truly separate AnimationPoser from IdlePoser and turn AnimationPoser into it's own thing. It will be completely geared towards animation and it will be much easier to use for that purpose.
Version 3.1 rewrites the core and transforms the state graph into a complete Markov Chain. You don't need to understand what a Markov Chain is. What I can say is: it has everything you will ever need to model a sex scene. And it also has way less mysterious bugs.
IdlePoser had transition probabilities, transition durations, etc, set up by state. This plugin allows each transition to have its own values. If you don't want to set up each transition, you can rely on default values set up by state. For example, you can set the default transition probability in the state, and then every transition arriving at that state will have that transition probability when created. But, after that, you are allowed to change the probability of each transition individually, for maximum control.
By setting up states and transitions between states, you can create anything you want. For example, if you want a deterministic keyframe animation like in VamTimeline, you can create a sequence of states (one for each keyframe) and create a transition connecting each "keyframe" to the next. The transition duration is the time between the keyframe and the next.
Control points and intermediate states have been removed. Intermediate states will have a comeback in the next updates. Control points will not be needed anymore. Let's keep it simple.
Things I want to tacke in the next updates:
-Version 3.2 will have a way to add transitions between animations. Triggers can be used do it right now, but I think adding cross-animation transitions in the transitions tab will be way more powerful.
-Default values for a lot of the parameters (such as state wait durations, state defaults, etc) could be adjustable in the settings
-Some UI bugs will be fixed
-I will check if anchors are working well
-I'll add a button for loading individual animations
-The algorithm for switching state going through a chain of states connecting the current state and the target state has been commented and will be rewritten soon
-Intermediate states will come back as a simple checkbox that will prevent the layer from arriving at that state from a origin state and coming back to that same origin state. For example, if there are states A, B and C, and bidirectional transitions between A and B and B and C, but B is an intermediate state, then the layer can do A -> B -> C or C -> B -> A, but never A -> B -> A or C -> B -> C.
-Right now, the plugin is working fine with linear interpolation. I plan on making the core sort ahead a sequence of states from the markov chain and interpolate the next N states with a suitable interpolation curve.
It is probably already possible for someone interested to write a script to import VamTimeline animations into AnimationPoser.
Besides that, I plan on finally uploading a tutorial pretty soon for the plugin.
@cdgczta8 Has made an amazing contribution updating AnimationPoser to include the latest changes from IdlePoser, between versions 7 and 9!
As I'm stressing as much as I can, I want to see the community reunited in order to make AnimationPoser capable of everything that could be imagined in terms of humanoid animation.
I myself am limited as a plugin developer. I don't have a Patreon page and professionaly have other projects that would not make it feasible for me to take vam plugin development as a serious enterprise in the near future.
However the contribution of @cdgczta8 is a very exciting surprise and I'd like to see more plugin developers working together on this.
There is nothing as exciting and that could bring more value to the virt-a-mate community before the launch of 2.0.
As a plugin developer, you can contribute at github https://github.com/haremlife/AnimationPoser
And, as a user, you can contribute showcasing the scenes and animations you have created with AnimationPoser! You can also share layers or entire animations in the hub.
I have a personal wishlist for future developments, which comprises:
-Easier transitions between animations. Triggers that reference "self" (trigger in AnimationPoser instance in Person 1 referencing Person 1) should still reference "self" after loaded in another atom.
-Load layers without overwriting, or, in other words, combine the states of multiple layers into one
-Being able to import VamTimeline animations (or other supported formats) into AnimationPoser.
-Control added morphs from inside the plugin (like in VamTimeline)
-States could have a list of controllers associated with that state, much like VamTimeline keyframes do
-Solve the "state arrival" issue. As IdlePoser was designed, the transition between states is such that the controllers deaccelerate when arriving at a state, then accelerate again to leave that state. Think about it as an airplane arriving at the airport, stopping by, and then launching in order to travel to the next stop. This makes it so AnimationPoser is yet not the best tool to make animations like walking cycles, since the person is constantly stopping at the states, instead of going directly through it, like in the keyframes of VamTimeline. What looks more like keyframes are the "control points" of IdlePoser: the controllers don't stop by at these control point states, only go directly through it. However, the number of control points is limited to 4 in IdlePoser (and AnimationPoser). A solution could be that, every time you arrive at a state, the next N (say, N=4) states are sorted (which is entirely possible in advance) and then properly interpolated. When arriving at the next state, the list is updated and the last interpolation curve is averaged with the new one. A user-adjustable parameter could control how much the animation should "stick" to that state (in other words, how much that state should behave as a regular state instead of a control state). With that change, the code relating to control states could be removed, as it would not be necessary anymore. With this, VamTimeline animations would probably be able to be seamlessly imported into AnimationPoser.
-Animate muscles, not only controllers