This plugin is consists of three modules;
  1. ShakeIt: Simulates fat jiggeling on the legs, glutes, arms, belly (and breasts) based on acceleration. The current tension of the muscle is also taken into account.
  2. FlexIt: Simulates muscle flexing based on rotational acceleration and the pose your model is in.
  3. WorkOut: Adjusts the skin gloss (and gloss texture offset) based on the work that is done by your model.
It works for any kind of movement and is fully automated. It doesn't require any aditional setup. You can adjust the various parameters to your liking, though.
It can be loaded on a person, using the file "ShakeIt.cslist".
If you want it on every person us this:

Note to WorkOut: It should be used with @WeebUVR 's sweat and gloss maps! The gloss texture offset adjustment is designed specifically for that texture set.

Just hypnotising... (plugins: this,TittyMagic and FocusOnMe for the lighting)
WorkOut (v31):
































































































































v5:

















v6:













































v8: softbody physics off












































Explanation:
Before you go into the UI and mess with it, check if the defaults work well for you. I continuously refine them to make the plugin as plug-and-play like as possible, at least for a bodyshape close to the one shown in the videos.
  1. UI:
    • IO-Panel used to save and load presets.
      1686937666390.png

    • Here you can select the body region you want to edit.
      1686937712843.png

    • These are region specific settings. If you toggle something, it only applies to the region selected above (i.e. Glutes)
      1686937815139.png
    • Region Enabled: Toggles the jiggeling.
    • Combined: All regions can be split into 3 sub regions (Upper, Mid, Lower). By default, these 3 sub regions are combined and jiggle synchronized with the same amplitude etc. Toggle this "off" to split up the selected region to its sub regions, so you can apply different settings to each of them (see below). This increases the amount of morphs that have to be adjusted per region (and side) from 4 to 12, however.
    • Tension Enabled: This is very important, if you want to customize things! See below! The plugin calculates how stretched or tensed a region is and adjusts the parameters dynamically. For example a calf is considered tensed if the knee is straight, and relaxed, if the knee is bent around 90 degrees and upwards. The foot has no effect as of now. The thighs and glutes are relaxed if the thighs are in line with the torso and gain tension when tilted forward (muscle is stretched) or backwards (muscle is generally tensed).
      By default, a region jiggles more and softer if it is in a relaxed state.

    • The lower tab bar is only visible if you toggled "Combined" off. Here you can select the sub region you want to edit.
      1686939221649.png
    • This is the main panel to adjust things.
      1686939391294.png

      These settings do always apply to the selected region. If "Combined" is on, you are editing the combined state. If you toggled "Combined" off, you are currently editing the selected sub region. If you edit the combined state, the changes previously made to the subregions are not lost and vice versa. They are restored if you toggle "Combined" again. Think of independent states you are editing. You can select which state is currently active by toggling "Combined".
    • These two options are used in conjunction with the tension feature.
      1686944811881.png

      There is another state, the so called "tensed state". If a region is completely tensed, it will use the values set in the tensed state. If it is relaxed, it will use the default values. In between, the plugin interpolates linearly between those states. You can edit the tensed state through the toggle on the left. Example: If the tensed frequency is 18 and the relaxed is 16 (default), the current frequency will be somewhere in between, depending on the current tension of the region. If "Tension enabled" is off for that region, it will always use the default values.
      Important: By default, you are editing the relaxed state(left toggle is off). Depending on the pose your person is, you won't see any effect by changing the sliders! I.e. because your calf is currently tensed (knee straigth). To see the full effect, you should either
      • toggle "Show tension". This shows the current tension of the region and the interpolated strenght, frequency and damping values. If the tension is close to 0, you are near the relaxed state and your values should have a visible effect. If not, your region is rather tensed and you would be better off configuring the tensed state.
      • toggle "Tension enabled" (temporarily) off, so the region always uses the default state and you can inspect the full results of your edits., But keep in mind, that if you reenable Tension again, the values will only have full effect when the region is fully relaxed. Otherwise it will use a mixture of these and the tensed values.
    • These two toggles are not persistant. They change back to off once you switch between (sub) regions or switch to the combined state. For the "Configure tensed state" I'm not sure about it. I could make it persistant, so that it remembers the state it was in per (sub) region. Tell me what you think about it in the discussion.
  2. Parameters:
    • Directions: These are relative to the local space of the rigidbody
      • x: left/right
      • y: up/down
      • z: forward/backwards
      • w: rotation around the bone axis
    • strenght: This is the main parameter you should adjust if you want more jiggeling. It is the rate at which acceleration translates to jiggeling.
    • frequency: Self explanatory, isn't it? It modifies how fast the jiggeling happens.
    • damping: How fast the amplitude of the jiggeling decays.
    • minAccel and maxAccel: These values clamp the accelaration of the rigidbody.
      • minAccel: Accelerations below this value will be ignored. This filters out constant jiggeling during contact with other colliders or due to unnaturally bent limbs, but reduces sensitivity. If you are creating a setting for your scene, you can reduce this until you get unwanted results, then up it a bit.
      • maxAccel: Accelerations above this value will be clamped to maxAccel. This avoids to drastic jiggeling, as accelerations can get unnaturally high, depending on your scene setup and animation. If lots of controllers are "on" and your animation is rather stiff, you can reduce this. It needs to be higher than minAccel.
    • maxMorph: Clamps the morph values. This is the least relevant parameter, as the morph values are indirectly clamped by other factors like the maxAccel and strength. This only has an effect if the acceleration is high during many consecutive physics updates. These would normally add up to a huge amplitude, if the morph wasn't clamped by this. Don't use it if you generally want more jiggle. Only use it if you want heavy jiggeling in extreme situations with really fast motion.
    • Deeper insight: I'll explain what goes on internally, to give you a better understanding of the parameters and how to use them:
      Every physics update, the acceleration (rate of change in speed) is calculated as a vector (x,y,z) in the local space of the regidbody. For each of the components the following algorithm is performed:
      Check, if the acceleration is between minAccel and maxAccel. If true, the accelearation is multiplied by the strength value in that direction. Then we check if the region is already jiggeling.
      If false, we start a new sine wave with the accel as amplitude, clamped by maxMorph. The amplitude gets the inverse sign of the acceleration component to satisfy Newtons law (thigh moves to the left => fat stays behind). The output of the sine wave drives the morph value in that direction.
      If the region is already jiggeling, the measured absolute value of the acceleration is added to the current amplitude of the existing sine wave. The new amplitude is again clamped by maxMorph.
      In every cycle the amplitude decays exponentially, depending on the damping value. So, if there isn't any acceleration to keep it alive, it will come to an end.
      To get a feedback what is actually going on, you can always navigate to the morphs tab and search for "SI_".
      The strength dictates the amplitude of the morph value for a given animation. If it reaches it's maximum (1 by default), but you want heavier jiggeling, increase maxMorph. If it's not (which is likely the case), increase the strength first. maxMorph won't have an effect unless the morph slider maxes out.
  3. Presets:
    You can load and save presets which are stored in Saves/PluginData/CheesyFX/ShakeIt. On load/reload the plugin tries to load the latest preset starting with your characters name (atom name). E.g. if you have the presets Person.01, Person.02, Person.06 and load the plugin on a character named "Person", it will automatically load "Person.06". I'd suggest sticking with that naming sheme.
    If you don't have a matching preset, the plugin searches for "UserDefaults" in that same folder. You have to create this file first. This way you can define a custom preset that should be loaded if nothing else is matching.
    The settings are also saved with the scene, if they differ from the default. If there is data found on scene load, these are loaded instead of the user presets.
    So from highest to lowest priority the preset hierarchy is:
    1. Scene data
    2. Preset matching the atom name (highest number)
    3. "UserDefaults"
    4. FactoryDefaults
To get the best results try to not use "stiff" animations. This can help you create or adjust them if needed:

There where some requests to make things simpler. But I fear that is not my priority right now. The basic algorithm was written down in 30 minutes or so, but the real challange was to make every single aspect configurable by the user, including an UI with custom elements to make it snappy, performant and only requiring one page. So I will not go back and make 3 sliders like low, medium and high to drive a multitude of parameters. This is not only because I don't want to scrap my work, but also because there are so many different body shapes, that 3 sliders could never satisfy all your needs.
Also, the result heavily depends on the scene you are playing, i.e. animation speed, physics rate, and again, body shape.
So ideally, I see two possibilities to make things easier for new users:
  1. I'd like the scene creators to reference this plugin. Make settings that are taylored around your scene. These are saved within the json and get automatically loaded by the user. If the user likes your settings, he can create a preset from it.
  2. Create some general presets, publish them on the hub and link to my page. If you notice me via pm, I'll happily add the links on my page. I really hope to get a reasonable set of presets to start with. That would be great!
    I could also include your presets in the .var, but then you would't get the credits for it. Just tell me how you like it.
Have fun and don't hesitate to ask if something isn't clear to you :)

If you have come this far:
My work is free and will always be. In my ideal world every resource should be free, like in the good old days of Skyrim. We are one big family after all. But I understand that some creators try to make a living out of it and invest a lot of money for equipment (mocap).
Nonetheless, if you are a content creator and want to support me, I would be more than happy if you would grant me access to your paid content. I'm especially intersted in clothings, mocaps of any sort and traditonal scenes (preferably anal). But don't feel pressured, your ratings and reactions also mean a lot to me! :D

Credits:
MacGruber for his Utils.
ParticlePinnacle: I initially used his morphs and some remnants might still be there. But now the majority of morphs is custom made in Blender.
  • 1686937631525.png
    1686937631525.png
    13.5 KB · Views: 0
  • 1686940573084.png
    1686940573084.png
    11.7 KB · Views: 0
  • 2023-07-07 01-43-54.mp4
    49.9 MB
  • 2023-07-07 18-31-06.mp4
    73.6 MB
Author
CheesyFX
Downloads
568,751
Views
568,751
Packages
1
Total Size
4.36 MB
Version
40
First release
Last update
Rating
4.97 star(s) 102 ratings

More resources from CheesyFX

Latest updates

  1. v40 path fixed

    Path fixed
  2. v39 fix

    Fix if the person has multiple scalps.
  3. v38 Cleanup morphs from older versions

    On load, the plugin will zero out all morphs from older versions you may have stored with your...

Latest reviews

Absolute genius plugin, the realism on this for the muscle flexing and tendons adds so much to the model movement it really is wonderful. Thanks for your hard work on this.
Upvote 0
You have a really well configured model. Any chance you'd share that scene?
Upvote 0
Truly a masterpiece, definitely a game-changer, nicely done as always!
Upvote 0
I strongly agree with your values, write sincerely, and hope to do more and better from your team!
CheesyFX
CheesyFX
"do more and better from your team"? I'm alone, and I always try to do better. What do you mean exactly?
Upvote 0
I love this plugin. But so much updates and fixes just keeps me waiting for a good use... 5 star anyways because it is just awesome
CheesyFX
CheesyFX
Thanks sxs4! Well, ShakeIt is more or less feature complete for quite some time and except for the latest additions (morph clean up) there weren't any fixes either. So I do not entirely understand your complaints.
Upvote 0
fantastic stuff and a must-have!
CheesyFX
CheesyFX
Thank you! :)
Upvote 0
bruh I need the name of the song in the latest video.

Also excellent work really brings models to life.
CheesyFX
CheesyFX
Thanks! Which video do you mean? From the updatesor in th main post?
Upvote 0
Holy fn shit. Nothing else needs to be said!
Upvote 0
Truly revolutionary work.. Bravo!!!!!
Upvote 0
Thanks for all your hard work on your useful and creative resources.
Upvote 0
Back
Top Bottom