After a quick chat with @everlaster I completely rethought the session plugin. Now you get an additional file "ShakeIt_SessionPlugin.cs", which loads a regular atom instance on every new person (if it has none).
But there's more:
  • The session plugin also let's you auto load
  • For both plugins you can decide on which gender you want it loaded (or none) and if it should be enabled after load
  • And, as a bonus, you can select a regular plugin preset for each gender that should also be merge loaded onto every existing or new person.
    Technically, you could also include ShakeIt in this preset, but if you use the inbuilt method it automatically loads the atom plugin that corresponds to the version of the session plugin. So it will always be up to date without having to adjust the plugin preset. It will also search for the newest version of HeelAdjust2 installed.
  • Benefits of the new approach with added atom instances:
    • Presets get loaded like usual
    • Data stored with the scene don't get overriden
    • You can adjust the settings for each person, or disable it altogether
    • FlexIt compatibility with HeelAdjust2 (heel collision)
  • Atom instances now auto reload if the gender ganges
  • New defaults for males: "UserDefaults" get loaded on every person, but if it's a male and "UserPresetsMale" exists, it will load this instead.
Please use the latest version of HellAdjust2 (v7+). It has additional features and I'm not sure if the session plugin will work with older versions.
FlexIt did not load correctly as an atom instance. Thanks to @wangleshijian for flagging.
Now you can use it as a session plugin (same file).
Things to consider when used as a session plugin:
  • It uses either "UserDefaults.json", if present, or the factoryDefaults on every person.
  • You can add and remove persons freely or switch genders without reloading.
  • You don't get an UI. Presets have to be created from within an atom instance.
  • You cannot manually add atom instances while a session instance is present. They'll load up disabled and can't be enabled. But the plugin label tells you why this happened.
  • If you add the session instance later on (not by a plugin preset on VAM startup), all atom instances currently present will be disabled.
  • Same goes, if you have a session instance running and load up a scene containing atom instances. They will be disabled. You can, however, still open the UI of the disabled atom instances to inspect their settings.
  • In short: Session and atom instances are mutually exclusive. They can not coexist!
I expect some bugs, so please report them!

Edit: Ah yeah, it won't recognize the heel collisions provided by HeelAdjust2 and relax accordingly. I'll take care of that later on.
Now you can use it on persons parented to things or in subscenes.
Use HeelAdjust2, grab your girl by the heels and see the muscles relaxing!
HOTFIX: Same error now also fixed for males.

Man, I wonder why out of the 9000 downloads of v23 I only got 2-3 (rather diffuse) error reports. It was totally broken!
Tell me if something is wrong, please! I'm lazy and I do not always test the var before releasing...
HOTFIX: Sorry, the var version of v23 was broken. There was no jiggeling at all if tension was enabled (default).
Pretty cool update I guess. I didn't do a lot of testing in actual scenes though. So it's a bit experimental.
  • The legs are now aware of the environment in regards of static flexing. I.e. if they are supported by a colliding object from below, they won't flex to hold that pose. Think of how a straightened leg on the bed is relaxed - but it would be fully flexed if the bed was missing because the model had to hold it by it's own muscles.
  • The tension system of ShakeIt now uses a combination of the original algorithm and the muscle flexion provided by FlexIt. It is more dynamic now. If FlexIt is globally disbaled, it falls back to the original.
  • Adjusted defaults (slight increase) to compensate the changes of v22.
To do:
  • Doesn't work with heel colliders right now. Tested with @Stopper's Shoe Helper. Don't add it, it messes something up.
  • Add other regions, mainly the torso.
  • Maybe extend the feature and adjust the flexing in regards of how much weight the limb is actually carrying.

I think I have almost completely eliminated the biggest flaw this plugin had since right from the start. At one point I was even close to scrap it altogether because of this.

I guess you know what I mean - the perpetual jiggeling in certain poses or while intense penetrations are happening.

But now:
In my testings I could even fuck up the pose so bad that the whole arm is visualy shaking; without any jiggeling. I also did test massive penetrations with "Sh_Massive" maxed out and a bit of "Sh_Girth_XL" as well (just for science, of course); with no impact on the thighs at all!
As a side benefit, the shaking is more accurate during animations. While it generally is a bit less, it now does reflect the actual impacts. Beforehand, the fighting colliders often led to a constant background jiggeling overlaying the impacts.

It has to be said though, that with bent hands the arms can still jiggle in some weird situations. But as before, there is the minAccel slider for you to increase. The arms are now enabled by default.

How did I do this?
It's so easy that I really could have thought about that before: When the colliders are fighting, they are visually static but in fact they move back and forth every physics update. So we just have to check if the velocities (last and current) have alternating signs. If so, return 0 as the acceleration value.
On a regular animation this will also skip the single frame where the velocity changes from + to - or vice versa, but that's negligible.
Unfortunately, there are rare cases where the velocities do not alternate. Don't ask me why. Use minAccel if that ever happens.

I'm so happy right now :)
For me this is a total game changer, because now I can slap it into any scene without having to fear bad behaviours! :D
Sorry guys, I missed yesterdays update, and I feel almost ashamed for it...

BUT:
This puppy has grown a lot over the last two days. This is version 21 now, which means she is fully mature and ready for some seeerious action :D

Here are the news:
  • New flex region: Ankle. Drives the calf muscles based on foot rotation. The orientation relative to gravity has no effect on this one (unlike all the other regions).
  • Preset system: FlexIt now features the same preset system as ShakeIt. Values are stored within the scene etc.
  • Physics rates: The behaviour should be consistent across all physics rates (as long as you don't play in slowmotion)
  • Frame renderer support: This is very good news for all the MMD fans out there! Now you'll get the same behaviour as in real time, even if your renderer slows the game down to 5fps. For this to work you only have to set the new chooser in the FlexIt UI to the frame rate you specified in your renderer (target video fps). The chooser affects both modules.
    Thanks to @trety for beta testing! I want to see some nice vids now! :D
  • Enhanced defaults (in my opinion)
  • Various other fixes and improvements probably no one cares about. Even I don't remember them, lol.
There are still things I want to improve, but I think the core is pretty much complete now. Happy flexing and shaking! ;)

Ah, one more thing: Only a few more ratings and I may be sitting right behind TittyMagic in the top resources list! What a dream team that would be, huh? Man, I never could have imagined that when starting this... Thank you all for your feedback!

And another one: The presets for the 2 modules are separated for now. But I'm not sure about it. A combined one would be more convenient, but the separate ones allow you to mix and match. Tell me what your opinion is. Or don't you care about the presets at all, because the defaults are awesome and/or the UI is too intimidating?

EDIT: Update on what's next:

Before I get back to my original project I want to add some things to this one:
  1. Find an efficient way to distinguish if a pose (or even movement) is achieved through the models own muscles or if it is implied by external forces. If e.g. a straightened leg is placed on the bed, the muscles should be fully relaxed. Right now they are flexed, because the plugin doesn't know about the bed and thinks the leg is hold in that taxing position by the model itself.
  2. I have an improved version of WorkOut that I want to include. I think this would pair very well with the muscle system.
If you have ideas what could be improved or implemented, just let me know! But please, don't tell me that the UI is too complicated and that I have to add one slider to rule them all. I've expressed my thoughts on that many times in the discussion. One thing I could imagine in that regard is a system to blend between presets. But for that we need a solid base of presets created and shared by you! You know my model by now. I create and test stuff exclusively on this one. If you have e.g. a chubby or slender model and found good settings for it, share it or send it to me! Please! I really want this to get rolling!
Back
Top Bottom