Skip to content

A unity addon for adding stretchy bouncy physics to bones and meshes.

License

Notifications You must be signed in to change notification settings

naelstrof/UnityJigglePhysics

Folders and files

NameName
Last commit message
Last commit date
Jan 27, 2022
Jul 24, 2021
Jan 13, 2025
Dec 13, 2024
Dec 13, 2024
Dec 13, 2024
Jul 24, 2021
Oct 23, 2024
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Jul 24, 2021
Jul 24, 2021
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Jul 24, 2021
Feb 1, 2022
Feb 1, 2022
Feb 1, 2022
Jul 24, 2021
Feb 1, 2022
Jul 24, 2021

Repository files navigation

Unity JigglePhysics

openupm

A relativistic squash-and-stretch jigglebone physics solution for characters in Unity.

Video demo on youtube.

Features

  • Supports per-bone squash and stretch, as well as per-vertex squash and stretch.

SquishyDemo

  • Realistically relativistic! Elevators, trains, and vehicles won't leave jigglebones permanently trailing behind.

RelativisticDemo

  • Works seamlessly on physics objects without jitter, with no configuration!

  • Supports animated skeletons, JigglePhysics uses it as a target reference pose.

  • Realtime rig scaling support, freely change character proportions on the fly.

ProportionDemo

  • ScriptableObject-based configuration, share settings across projects and prefabs.

ScriptableObjectDemo

Usage

A unity repository full of examples can be found here: https://github.com/naelstrof/UnityJigglePhysics. If anything below doesn't make sense, download the examples!

How to Jiggle a Rig

  1. Have a cool model attached to a bunch of transforms. SkinnedMeshRenderers look best!

A model of a purple lady

  1. Create a JiggleRigBuilder Monobehaviour on the object, and select the root bones you want to jiggle by adding them to the list of JiggleRigs.

Unity inspector animation of adding a jiggle rig and dragging a tail in.

  1. Create a JiggleSettings ScriptableObject in the project through the Create->JigglePhysics->Settings menu. Then make sure that each JiggleRig has a reference to a JiggleSetting.

Unity inspector animation of creating a jiggle setting and dragging it into the JiggleRigBuilder.

  1. Play! You can adjust the jiggle settings during play mode and see changes live-- And when you exit play mode, the settings should stick!

How to Jiggle a Skin (Advanced)

  1. Have a cool skinned model, doesn't need very many transforms, but does need to be a SkinnedMeshRenderer.

The cutest little blob of a model.

  1. (Optional) Make sure the model has some sort of mask. By default the shaders use the Red vertex color channel to mask out the motion. I like to use Blender and Vertex Color Master for this.

A blob with the most jiggly parts being redder than the non-jiggly parts.

  1. Create a JiggleSkin-supported shader with either Amplify Shader Editor, or Shader Graph for your specified shader pipeline.

With ASE, there should be a custom node automatically added to your list of available nodes: Jiggle Physics Softbody.

A simple example graph using ASE

With ShaderGraph, you must use a CustomFunction node, and use the hlsl file found at JigglePhysics/Shaders/JigglePhysicsSoftbodyShaderGraph.hsl.

A simple example graph using Shader Graph

  1. Add a JiggleSkin MonoBehavior to the object, and add the desired list of JiggleZones, with their specified JiggleSettings.

A Unity Editor animation of setting up the JiggleSkin MonoBehaviour

  1. Ensure the target skins have a JiggleSkin-supported shader applied, then Play!

A jiggly blob

Installation

You can install Jiggle Physics with OpenUPM by checking out the badge above. Otherwise...

Simply add https://github.com/naelstrof/UnityJigglePhysics.git#upm as a package using the package manager.

Or if that doesn't work, add it to the manifest.json like so.

{
  "dependencies": {
    "com.naelstrof.jigglephysics": "https://github.com/naelstrof/UnityJigglePhysics.git#upm",
  }
}