• Hello Guest!

    We have recently updated our Site Policies regarding the use of Non Commercial content within Paid Content posts. Please read the new policy here.

    An offical announcement about this new policy can be read on our Discord.

    ~The VaMHub Moderation Team
  • Hello Guest!

    We posted an announcment regarding upcoming changes to Paid Content submissions.

    Please see this thread for more information.

IdlePoser

Plugins IdlePoser 9 (free)

MacGruber

Invaluable member
Developer
Featured Contributor
Messages
1,530
Reactions
2,969
Points
143
MacGruber submitted a new resource:

IdlePoser Prototype - State-based idle animation solution with anchoring for relative animations.

Life is a collection of plugins intended to essentially awake a character, let him/her come to life. Central part so far was the audio-synchronized breathing, which can be used to drive complex animations. This month I started working on an idle animation solution, called IdlePoser.

Today I'm releasing an early standalone prototype of this, more like a proof of concept. I recommend to not yet use it for larger scenes...

Read more about this resource...
 
MacGruber updated IdlePoser with a new update entry:

Version 3

In the last few weeks I continued working on my idle animation solution, called IdlePoser. After the prototype released a few weeks ago, it's time to make a proper release. There have been countless bug fixes and usability improvements. Morph capture and debug rendering have been implemented. Obviously I also spend some time on a demo scene and making a video. However, it's still a standalone plugin, it is still not properly integrated into my Life plugin suite.

Read the rest of this update entry...
 
MacGruber updated Life - IdlePoser with a new update entry:

Version 4

This new update brings a number of usability improvements and some new features:
  • Improved curve debug render, now with colors to highlight the different state groups! Transitions can also be rendered now.
  • Improved Bézier evaluation using Bernstein polynomials for better performance.
  • Various UI improvements, most notably a new menu tab bar that replaces the clumsy dropdown menu.
  • Implemented a checkbox in the play menu to pause animation. This allows...

Read the rest of this update entry...
 
MacGruber updated Life - IdlePoser with a new update entry:

Version 5 (free) (VaM 1.20+ required)

Maintenance update for VaM 1.20
  • Fixing morph captures which were broken with VaM 1.20. Since the new VaM version removed the "Animatable" checkbox for morphs, I had to re-implement the morph selection entirely. Now using the new fancy filter popups!
  • Since filter popups are rather slow when used with lots of morphs combined with the Dynamic UI approach used with IdlePoser, I had to figure out a way to implement caching, which took a while.
  • Supporting VaM 1.19 would...

Read the rest of this update entry...
 
Really impressed by this, although wondering if any recommendations on getting more natural movement/speed in the transitions - something maybe similar to ease-in/out type settings similar to the timeline plugin or natural/randomized small variations in path/speed so movements aren't repeated exactly the same?
 
@thx1138 Sorry for the late answer, I was finishing up the LogicBricks release in the last few days. Quick answer:
  • With the current version its all about getting the timing right. Playing the animation again and again while tweaking the transition length and adjusting control points.
  • As mentioned in the tutorial somewhere, tweaking the characters physics settings helps as well.
  • I'm not entirely sure how to improve the interpolation between states. It's a balance between "just define the poses" and "you can tweak everything". There is no point in recreating Timeline, IdlePoser is supposed to be a simpler solution that is good enough for a lot of things, easier to use and most importantly less effort for the creator. I have yet to check out what AcidBubbles did with Bézier curves, not sure how he combined that with the EaseIn/Out of Timeline.
  • Regarding "randomized small variations"....that sounds like the planned Micro-idle layer, see Overview page. "Planned" means I really want it...have no clue when I will find the time, yet :ROFLMAO:
 
Hi, amazing plugin!

I haven't seen the new transitions in v7, but I've been fiddling with v6 and different easing functions, and I want to point out that a "back" easing has pretty natural looking results in the start and end of the transitions, in case you haven't tried this already.

It's basically this :

t = t < 0.5 ? (Mathf.Pow(2*t, 2) * ((c + 1) * 2 * t - c)) / 2.0f : (Mathf.Pow(2-2*t, 2) * ((c + 1) * (t * 2 - 2) + c) + 2) / 2.0f;

where 'c' controls the slope and how exaggerated the back motion is, with a useful range of -1.5 to about 4~5. At c=-1.5, the whole thing is just a smoothstep.

With one c per state, and by interpolating the c parameter between current state's c and next state's c as the transition happens, there's smooth transitions with different controllable in and out behaviors. It's just two cubic curves and one extra interpolation for the parameter, it shouldn't be a performance drop, unless the ternary is a problem.

I don't think the acceleration is smooth between the two parts, though, even if it doesn't look janky.

Anyway, give it a look if you haven't done something like this already, or like an elastic type easing.

I've done some diy hack on basic micromovements too (just for control points, not morphs), pm me if you think it could save you some time.
 
@urukyay IdlePoser 7 uses these following, which should be more intuitive for users as the parameters are actually time in seconds. First and second derivative of the combined function are continuous, which means smooth velocity and acceleration. Functions are based on the integral of SmoothStep with some scaling to attach the curve parts. You can leave out the linear part in the middle by choosing a+b larger than d, I have some code in there that auto-scales a and b so you always get reasonable results based on the ratio of a and b.

Parameters:
  • d: Full Transition Length (seconds)
  • a: Outgoing easing duration (seconds)
  • b: Incoming easing duration (seconds)
  • n: Normalizing (calculated from the other params)
1615662890907.png
 
I've done some diy hack on basic micromovements too (just for control points, not morphs), pm me if you think it could save you some time.
The idea in the back of my head so far to essentially add some random movements on top of the anchoring. Tried a bit how that would look in the Connect demo scene by using a simple AnimationPattern with an empty atom as an anchor. You obviously need PowerHandles for scaling VaM's atom UI, otherwise you can't place AnimationSteps close enough together. Anyway doing that by code automatically shouldn't be too hard. Maybe Unity's Random.onUnitSphere with some blending is already enough. I could provide a scale slider for the displacement vector so you can control for every state/capture combination how strong the effect would be. Set it to zero to turn it off. Morphs could work the same way, just in only one dimension. Anchors menu still has space on the right side for those sliders, but yeah, a good UI is the main issue here :)

Thanks for the code offer, but accepting hacky things is not really saving time in the long run as I would have to maintain that forever. Current focus is a scene I'm building, not adding features. (Although next release will add Keybindings support after Acid added some features for me. Also adding a feature to duplicate states. Will be out soon'ish.)
 
That's perfectly understandable, I just thought I should ask.
That's it, insideUnitSphere for location jitter, and a random quaternion slerped with the identity quaternion for rotational jitter to have random magnitude for both, controlled by two max magnitudes and a median duration. It doesn't look very convincing for slow movements sadly, but I don't have any ideas about a better micromovement algorithm. Kinda floaty and deliberate instead of jittery and involuntary. The anchor tab is perfect, but there's the disadvantage of requiring setting 3 separate parameters for each control entry of each state. It is a bit cumbersome, but maybe necessary, I can see how jitter wouldn't be desirable for some controls in some states. And extra UI to copy the parameters to other controls or states isn't a very good solution either.
 
MacGruber updated IdlePoser with a new update entry:

Version 9 (free)

Version 9 is a maintenance release with some tweaks and bug-fixes. It's directly released as free since it is needed by the demo scene shipped with the free Life.13 release.

Changelog
  • Fixed issue with morph reference into a VAR packages with ".latest" or ".minX" version. MorphCaptures are now stored slightly more efficiently in the scene, reducing file size and improving load times for large scenes.
  • Fixed...

Read the rest of this update entry...
 
Hey MacGruber,
first of all thank you for this cool plugin.
May I ask you a question?
I'm abusing the Idleposer-Plugin as an expression randomizer to trigger a sets of expression for specific sitations.
Therefore I added for example 4 States for Kiss-Expressions to Group A and Group B.
Another 4 States shell be for simple idle expressions also diviided onto 2 Groups C and D. Alle states can transit to each other. Now I trigger the disred set of expression by masking wether A+B or C+D. This works very smooth thanks to your extrapolated transitions. I do it this way as it is not possible to trigger switching to a state which has no transition to the actives state.
In this way I could deal with a total of about 7 Expression sets. I think we have the Groups A to N haven't we.
Eventually I need more. So before going on in my project in this way, I wanted to ask you if you see a possibility to increase the number of my desired states. Eventually a totally misunderstodd how to use the plugin for this.
 
I'm abusing the Idleposer-Plugin as an expression randomizer to trigger a sets of expression for specific sitations.
That isn't abuse, its indented for that, among many other things. Because it automatically optimizes out morphs that do not need to change during a transition, it should have better performance than other solutions. Someone on Reddit recently complained about the performance of the expression randomizer plugin. IdlePoser should fare better here, but I have not gotten around to actually try myself anything related to expressions. If each expression uses only 2-3 morphs with everything else set to zero, it shouldn't be too bad as only a maximum of 6 morphs would need to be animated.

I do it this way as it is not possible to trigger switching to a state which has no transition to the actives state.
You can directly transition anywhere using the SwitchState trigger action. It creates an ad hoc transition by capturing the current conditions and then going to the indicated state. If there is a currently selected state, it's transition times, triggers and so on are used. So its identical as if there actually were a direct transition between those states. (The same is done internally in the UI when you use the drop-down to go to another state)

I think we have the Groups A to N haven't we.
There are 12 groups, A to L. Using N indicates the special "None" group.

Eventually I need more.
I would recommend to enable "Allow for in-group Transition" for each of your states. All states and control points along a transition path need to have this enabled, for the path to be allowed for this. (*) When using this, you only need one group for each expression category, no need to flip-flop between two. Twelve groups should be plenty that way?

(*) The reasoning here is that you want control over which control point is used for what. I often needed a different control point within a group than the one used for transitioning to another group.
 
You can directly transition anywhere using the SwitchState trigger action. It creates an ad hoc transition by capturing the current conditions and then going to the indicated state. If there is a currently selected state, it's transition times, triggers and so on are used. So its identical as if there actually were a direct transition between those states. (The same is done internally in the UI when you use the drop-down to go to another state)
Thx for reply.
Yeah thats what I expected. I first setted it up with 4 Kissingexpression states in Group A and 4 IdleExpressionstates in Group B. And for some roeason it was impossible to switch state between the groups by trigger. Only in one state at which the expression morphs were ate zero it was possible.
Maybe it was another problem. i will check it out afterwards again and let you know.

12 will eventueally not enougth but I if it really works with switching the states I can also setup 2 different.. (lets say master states) in one group by arranging the transitions: A1-A2-A3-A4 A5-A6-A7-A8 e.g.
 
Ok now it works to switch to every state I want. Don't know what was the problem. Eventually it was because they haven't been assigned to a group. The debug info is a very welcome feature too.

The more I understand the plugin the more I love it.

I have 2 other things.
In your documentation you write:
" On the right you find "Morph Captures" which correspond to the character morphs. In the image you see a couple of finger morphs activated. To make morph selection easy and convenient I have added a button to add all morphs that are marked as "Animatable" in VaMs morph UI screen. This allows you to use all the fancy filtering and other nice features of that screen. "

Unfortunatly I can't find the "Animatable"-Checkbox in VAMs "FemaleMorph Menu list. I now just added all build in posemorphs by hand.

And the other thing are the transition options. How are Transitio duration, ease-in and ease-out coupled with each other. e.g. I wanted to create a short eyelid blinking state. How would you setup those options for this. Let's assume a blinking should not last longer than 0.5 s. (waiting time is set to zero.

Thx in advance!
 
Unfortunatly I can't find the "Animatable"-Checkbox in VAMs "FemaleMorph Menu list. I now just added all build in posemorphs by hand.
The documentation is for IdlePoser 4. By now we are at IdlePoser 9 and the way VaM handles morphs has changed. The "Animatable" doesn't exist anymore. But now you can search by name and add the morphs that way, which should work a lot better than the old way.

How are Transitio duration, ease-in and ease-out coupled with each other
Transition duration is the sum of all the transition durations of the states taking part in the transition. EaseOut duration is taken from the state you are coming from, EaseIn duration from the one you go to. ControlPoints do not have EaseIn/Out. If EaseOut + EaseIn are shorter than the total duration, there will simply be a linear part in the middle. If EaseOut + EaseIn are longer than the total duration, EaseOut + EaseIn are scaled down until it fits in, so essentially EaseOut / EaseIn maintain their ratio to each other, but the actual time is the Transition Duration.

Yes, I know I have to update the documentation eventually.
 
Back
Top Bottom