A relativistic squash-and-stretch jigglebone physics solution for characters in Unity.
- Supports per-bone squash and stretch, as well as per-vertex squash and stretch.
- Realistically relativistic! Elevators, trains, and vehicles won't leave jigglebones permanently trailing behind.
-
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.
- ScriptableObject-based configuration, share settings across projects and prefabs.
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!
- Have a cool model attached to a bunch of transforms. SkinnedMeshRenderers look best!
- Create a JiggleRigBuilder Monobehaviour on the object, and select the root bones you want to jiggle by adding them to the list of JiggleRigs.
- 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.
- Play! You can adjust the jiggle settings during play mode and see changes live-- And when you exit play mode, the settings should stick!
- Have a cool skinned model, doesn't need very many transforms, but does need to be a SkinnedMeshRenderer.
- (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.
- 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
.
With ShaderGraph, you must use a CustomFunction node, and use the hlsl file found at JigglePhysics/Shaders/JigglePhysicsSoftbodyShaderGraph.hsl
.
- Add a JiggleSkin MonoBehavior to the object, and add the desired list of JiggleZones, with their specified JiggleSettings.
- Ensure the target skins have a JiggleSkin-supported shader applied, then Play!
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",
}
}