https://github.com/naelstrof/blender-jiggle-physics
A fork of the Wiggle 2 addon with a verlet algorithm, focused on being usable in real-time within the viewport.
https://github.com/naelstrof/blender-jiggle-physics
Last synced: 7 months ago
JSON representation
A fork of the Wiggle 2 addon with a verlet algorithm, focused on being usable in real-time within the viewport.
- Host: GitHub
- URL: https://github.com/naelstrof/blender-jiggle-physics
- Owner: naelstrof
- License: gpl-3.0
- Created: 2025-05-28T21:29:41.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-12T02:10:54.000Z (about 1 year ago)
- Last Synced: 2025-08-28T03:57:43.935Z (11 months ago)
- Language: Python
- Homepage:
- Size: 2.47 MB
- Stars: 43
- Watchers: 2
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Jiggle Physics
Jiggle Physics is a fork of the Wiggle 2 addon, with a variety of improvements.
## Installation
Ensure you're using Blender 4.2 or higher. Then download the latest zip from [Releases](https://github.com/naelstrof/blender-jiggle-physics/releases/latest), install using your user preferences!
## Features
### Design at runtime
- Reasonably performant within the viewport, allowing you to tweak jiggles while your animation plays!
[Screencast_20250528_190839.webm](https://github.com/user-attachments/assets/156016e3-7f77-48b9-98e7-130dfcefb854)
### Robust verlet physics solve
- Simple 0-1 parameters. Jiggle anything from soupy ropes to immovable rods.
- Verlet integration makes the system incredibly resilient to "exploding".
- Supports bone squash and stretch.
- Relativistic, reacts appropriately to elevators and vehicles.
Uses the same solver as [Unity Jiggle Physics](https://github.com/naelstrof/UnityJigglePhysics)!
### Collision support
- Supports good collision with scaled empties, and limited support for mesh collision. Unfortunately doesn't support bouncing or friction.
[Screencast_20250531_141235.webm](https://github.com/user-attachments/assets/982a9b62-2b65-44ae-9f07-6b0b5650067d)
### Overlays
Easily accessible overlays allow you to see the system's detected rest pose (in green), and the simulation (in red).

You can use this to visualize collision radius of bones:

## Usage
- Find Jiggle Physics under the Animation tab by pressing the N key in the 3D viewport.

- Enable the scene's jiggle by clicking the closed eyeball.
- Enable a pose bone's jiggle by selecting a bone in pose mode and checking the "Jiggle Bone" checkbox.

- Add a position and rotation keyframe with the `i` key on the bones to set the "rest" pose of the jiggle.
## Troubleshooting
Keep an eye out for warning buttons in the panel, they will detect most issues and describe how to solve them automatically!

### It looks perfect during playback, but stops working during render!
This is by design, you must "bake" the jiggles before rendering them.
This is because Blender can render frames out of order by design. To prevent unintended jiggles, jiggle physics always disables itself during render. This also makes the addon "safe" to add to render farms.
### My bones are drooping away, and something is clearly wrong.

Without a position and rotation keyframe, Jiggle Physics doesn't know what the "rest" pose should be! Double check your dope sheet to ensure that the jiggle bones have position and rotation keyframes. If they don't, reset their position and rotation with *alt+g* and *alt+r*, then add a keyframe with *i*.
### My settings don't seem to stick after changing them!

The jiggle parameters can be keyframed into animations and actions. There's a handy button to delete all jiggle parameter keys for all selected bones called *"Clear Parameter Keyframes"* which will attempt to delete them for you. If your keyframes are in an action, make sure that you're tweaking the action first!
### The pose doesn't quite match the simulation.
Jiggle Physics needs to predict the relationship between bones, and it uses standard parenting to try to understand.
Some more complex rigs might use constraints, bendy bones, or special parenting rules (like ignoring parent positioning) and they aren't supported well.
Try only jiggling deform bones!
### I'm not getting any stretchy physics on my bones!
"Connected" bones cannot be translated. This prevents jiggle physics from stretching them. If your armature is linked in as an asset then you might need to edit the source file.
### How do I set a bone to have a 90 degree rotation limit?
That's the neat part, you don't! If you are having trouble with your bones moving too much with your desired *elasticity*, you can increase *elasticity* to limit the motion and use the *elasticity soften* parameter to soften motion near the target pose
### How do I collide with a flat surface?
Unfortunately meshes only work okay with bones that have a large radius. Flat planes are infinitely thin. Instead you should try to build your colliders out of scaled empties (preferrably *Empty->Sphere*s). One way to get a flat floor is to make a planetary-sized collider below the feet.
## Special Thanks
- shteeve3d for creating Wiggle 2
- Raliv for the awesome verlet solver
- Ewwgine for helping me with Blender and the Giraffe demonstration model.
## License
See [LICENSE](LICENSE)