InertiaBones¶
InertiaBones is a Unity Editor tool for VRChat avatars that allows you to create (mainly) rotational PhysBone jiggle on any bones and any avatars of your choosing.
It features:
- Consistent and stable PhysBone controller chain generation
- Safe SkinnedMeshRenderer weight rewriting
- Session (non-destructive) iteration mode
- Persistent mesh baking
- Influence loss protection
- Automatic baked mesh cleanup
The tool is designed to serve as a framework for current and future methods included in the tool, so that you can easily add PhysBone dynamics wherever you want.
Info
With a tool like this, and as this is the first release, there are likely edge-cases I haven't found yet. So remember to follow recommended workflows to minimize issues and if you find any bugs or similar, head to the Contact section to send me a bug-report!
Important Notes¶
While the underlying techniques used by InertiaBones are technically achievable manually, performing them correctly inside Unity is time-consuming, error-prone, and difficult to iterate safely — especially when modifying mesh weights directly.
InertiaBones streamlines this entire workflow.
It allows you to generate complex controller setups in seconds, iterate and tune them in a non-destructive environment, and only finalize your configuration once you are satisfied. When ready, you can bake the result into clean mesh assets so your avatar remains prefab-safe and export-ready.
The tool is built with multiple guardrails to ensure predictable behavior and safe experimentation, allowing you to explore advanced setups without risking mesh corruption or structural instability.
The tool:
- Never overwrites mesh assets in place
- Always rebuilds from pristine backup
- Never mutates baked assets
- Protects against removing still-influencing controllers
- Ensures bindpose integrity
Core Workflow Model¶
For each source bone, InertiaBones creates:
PBCTRL_SourceBone
└── SourceBone_Sim
└── SourceBone_Jiggle
Mesh weights are redirected:
Source Bone → Jiggle Bone
All persistent output is generated from a hidden pristine backup stored under the avatar.