𦴠NovaBone Dynamics

Bone-chain physics simulation add-on β turn hair, tails, skirts, accessories and jiggle bones into automatic physics animation with a few clicks.
Author: Chamiseul
πΊπΈ English | π°π· νκ΅μ΄
β¨ Features
- β Pick a chain's start & end β simulation just works
- β Scale-independent: identical motion on 1.0 Blender rigs and 0.01 Unreal-import rigs
- β Tune collision visually with live shaper overlays
- β Shape-accurate collision: Capsule / Cylinder / Box are probed as real volumes (not just visuals) with multi-contact resolution and sweep CCD anti-tunnelling
- β Stable contacts: anti-fold (no bone ever snaps inside-out) and anti-kink (draped chains relax smoothly instead of zig-zagging)
- β Chain mode + Spring (jiggle) mode
- β Works as a collider for Blender cloth & hair sims
- β Bake to keyframes for game-engine export
β² The NovaBone N-panel β every setting lives in this one place
π₯ Installation
- Select the files inside the
novabonefolder and compress them to a zipβ οΈ Do NOT compress the folder itself β
blender_manifest.tomlmust be at the zip root. - Blender β
Edit > Preferences > Get Extensions - Top-right
βΌβ Install from Disk β pick the zip - Enable NovaBone
- In the 3D viewport press
Nβ a NovaBone tab appears
Supported: Blender 4.2+ (tested on 5.0 / 5.2 LTS)
π Quick Start (5 minutes)
β² Select bones β create chains β play. That's it.
- Select the armature, enter Pose Mode
- Select the bones you want to simulate (for a connected tail: click the ROOT bone last, Shift+click the rest)
- N-panel β Setup Tools β
Chains from Selection - The bones sag slightly β success! Press Spacebar to play
- Move a body bone β the chain follows with physics π
π‘ Shake & Play kicks the bones AND starts playback automatically. If they jiggle, the engine is alive.
π§ Panel Layout
| Section | Purpose |
|---|---|
| NovaBone Enabled | Master switch |
| NovaSol Solver | Quality & test tools |
| Forces | Gravity & wind |
| Unit Normalization | Rig-scale compensation |
| Setup Tools | Chain creation |
| Armature | Per-object settings |
| Chains | Per-chain physics |
| Bake & Reset | Bake & reset |
1οΈβ£ NovaBone Enabled
The big button at the top. Physics only runs while ON. Auto-enabled when you create a chain. OFF = pure animation playback.
2οΈβ£ NovaSol Solver
| Setting | Description | Recommended |
|---|---|---|
| Substeps | Physics slices per frame. Higher = smoother, stiffer AND fewer collision artefacts | 8 (10β16 for contact-heavy or fast scenes) |
| Iterations | Constraint relaxation passes | 3 |
| Time Scale | Physics speed (2 = 2Γ, 0.5 = slow-mo) | 1.0 |
| Button | Purpose |
|---|---|
| Simulate 1 Step | Advance exactly one frame's physics |
| Shake & Play | Kick all bones AND start playback. Click again to stop |
| Diagnostics | Reports engine status & hidden errors. Click this first when anything misbehaves |
β οΈ Physics advances when the frame changes. Not moving while paused is normal.
π― Collision precision engine (v1.0.0)
NovaSol's collision is no longer a single sphere per bone. Every substep:
- Volume probing β the chain's chosen Shape (Capsule / Cylinder / Box) is sampled as a bounded set of sphere probes laid through its REAL volume: spine points for capsules, lateral rings for cylinders, corner offsets for boxes. Mid-bone leaks through walls and "Box pushes round" are gone.
- Multi-contact β up to 3 DISTINCT contacts (normals > 60Β° apart): the deepest at full strength, the others at 60%, so a bone resting across a corner seats on BOTH walls instead of rattling on one.
- Sweep CCD β a bone that moved more than half its collision radius in one substep gets its PATH tested and is snapped back to the last free station. Fast whips no longer tunnel through thin plates.
- Anti-fold β every contact correction is budgeted (max 75% of the bone's length per round) and direction-clamped (max 45Β° per round), so a bone can never snap folded inside-out; it slides around the surface over a few frames instead.
- Anti-kink β after contacts resolve, each interior bone relaxes 15% toward its neighbours' average direction (Chain mode only), which smooths the zig-zag a draped chain would otherwise keep.
- Residual re-check β any bone whose round was clamped or truncated gets one extra query + a small outward push so the round always ends OUTSIDE the surface. Clean frames pay none of this cost.
π‘ All of this is automatic β no new sliders. If the panel's
Solve xx msclimbs, lower Substeps first; probe density already covers what extra substeps used to.
3οΈβ£ Forces
Gravity
| Mode | Description |
|---|---|
| Custom (Normalized) | Default. Direct vector input (default 0,0,-9.81). Scale-independent feel |
| Scene Gravity | Use the scene's gravity setting |
| Zero | No gravity |
Procedural Wind
β² Wind ON + playback = constantly swaying hair
| Setting | Description |
|---|---|
| Strength | Wind power (6β10 is clearly visible) |
| Direction | Wind direction |
| Turbulence | Gust randomness |
| Noise Scale | Pattern size β low = big waves, high = fine flutter |
π‘ Enable wind if you want constant motion from playback alone.
4οΈβ£ Unit Normalization β
Solves the classic problem: "Blender rigs have 1.0 bones, Unreal imports are 0.01 β the same values never match." All physics runs in a space normalized by the reference bone length (L), so identical values produce identical motion at any rig scale.
| Setting | Description |
|---|---|
| Auto Detect | Default. Uses the median chain-bone length. Leave it alone and you're done |
| Manual | Type the reference length yourself |
Scale presets: one click on Blender 1.0 or Unreal 0.01.
β² Median bone length below shows the auto-detected reference
5οΈβ£ Setup Tools
Bone Prefix β recommended for game rigs
β² All dyn_ bones become chains in one click
- Enter a prefix in Prefix (default
dyn_) - Click Chains from Prefix
- Every prefixed bone is chained automatically
| Mode | Behavior |
|---|---|
| Group Chains | Connected dyn_ bones form one chain (recommended) |
| Individual Bones | Each dyn_ bone becomes its own 1-bone chain |
Chains from Selection
- Select bones in Pose Mode β click the ROOT bone last
- Click the button
| Mode | Behavior |
|---|---|
| Auto | Chain when a path exists, individual chain otherwise (recommended) |
| Chain to Active | Only bones parented under the active bone |
| Individual Bones | Every selected bone becomes its own chain |
β Single bone works: selecting exactly ONE bone and running this creates a 1-bone chain (Start = End = that bone) β no more "No chain created" warning. The active (root) bone is also never silently dropped in Auto mode anymore.

π‘ Many accessories at once: select all necklace/earring bones and run Auto β each becomes an individual chain, all with physics.
Detect Chains Automatically
Finds leaf bones (no children) and chains the consecutive runs upward β no rig knowledge needed.
| Button | Purpose |
|---|---|
| Add Empty Chain | Manual Start/End workflow |
| Prune Invalid Chains | Clean up chains referencing deleted bones |
| Copy Active Chain Settings | Copy the active chain's settings to all others |
| Resolve From Start/End | Fill a chain from just its Start/End bone names |
| Select Chain Bones | Select this chain's bones in the viewport |
6οΈβ£ Armature Section
| Setting | Description |
|---|---|
| Enable Armature | Physics ON/OFF for this armature |
| Mute Armature | Pause |
| Freeze (Post-Bake) | Stop physics after baking (preserves result) |
| Show Bone Shapes β | Collision shaper overlay |
| Self Collision | Chain bones push each other apart |
Show Bone Shapes β
β² Capsules span each bone head-to-tail and move with it. Raising Radius grows the diameter
Shapers are NOT new bones β they visualize each bone's collision volume.
- Choose Capsule / Cylinder / Box
- Radius = collision thickness (ratio to bone length β scale-free)
- Pixel-locked to the simulated bones during playback
- In Blender Simulation engine mode, shapers ARE the real collision objects
- In NovaSol mode the chosen shape now also drives the ACTUAL collision volume (see Collision precision engine above)
π‘ Tuning: Show Bone Shapes ON β adjust Radius β where the capsule slightly overlaps the body is where collision begins.
7οΈβ£ Chains
Expand each chain with its βΌ arrow.
Chain row header: [βΌ] [name] [π― Select] [β enable] [π mute] [X]
π― Per-chain Select button β with 10β20+ chains listed, press a row's select button to highlight exactly THAT chain's bones in the viewport AND make it the active chain (Preset / Copy Settings then act on what you clicked). No more guessing which chain owns which bones.
π΅ Motion
β² Top: Chain (smooth return) / Bottom: Spring (bouncy overshoot)
| Type | Description |
|---|---|
| Chain (Positional) | Default. Stable positional physics, no overshoot. Gets the anti-kink smoothing pass |
| Spring (Force) | Spring jiggle bone β bounces and oscillates. Ideal for bags, chest, belly |
| Setting | In Chain | In Spring |
|---|---|---|
| Stiffness | Goal-tracking strength | Spring constant k |
| Damping | Velocity loss | Velocity resistance c (lower = longer wobble) |
| Taper Along Chain | Softer toward the tip (ON recommended) | Same |
| Influence | 0 = animation, 1 = physics. For collision scenes keep this at 1.0 β the visible pose is blended with the raw animation at (1 β influence), so 0.34 shows 66% of the un-simulated (through-mesh) pose | Same |
| Stretch | Allowed bone stretch (0.2 = Β±10%). 0 recommended for collision scenes | Same |
| Gravity / Mass | Multiplier / weight | Same |
π Limits
| Setting | Description |
|---|---|
| Cone Limit | Max bend angle from the root direction |
| Per-Axis Limits | Separate X/Z limits (skirts etc.) |
π₯ Bone Collision Shape
| Setting | Description | Recommended (contact scenes) |
|---|---|---|
| Shape | Capsule (recommended) / Cylinder / Box β all three are now shape-accurate in NovaSol | Capsule |
| Radius | Collision thickness (scale-free ratio) | 0.18β0.25 |
| Enable Collision | This chain's collision ON/OFF | ON |
| Margin | Surface slack added around the radius | 0.02β0.05 |
| Friction | Tangential velocity killed on contact | 0.4β0.6 |
| Bounce | Reflection on contact | 0.05β0.15 (high bounce re-creates kinks) |
βοΈ Collision Engine
β² NovaSol collision: moving the arm pushes the hair away from the body
| Engine | Description |
|---|---|
| NovaSol (Viewport) | Built-in solver pushes bones out in real time with volume probing, multi-contact, sweep CCD, anti-fold and anti-kink (see Solver section). Collide With = a mesh object or a collection |
| Blender Simulation | Shapers become real Blender collision objects β cloth & hair sims hit them automatically. Still the maximum-fidelity path for Cloth/Hair interplay |
Blender Simulation Profile: Hair (thin shells, low friction) / Cloth (thick shells, high damping) / Custom
External Targets: colliders that are NOT the cloth these bones belong
to β other characters, floors, other garments. Use
Add GN Collider to Targets to add the official Collider modifier.
β οΈ Cloth integration order: β Show Bone Shapes ON β‘ add a Cloth modifier to the garment β’ check Cloth Collisions on the cloth β£ play
π Floating Head
Simulates the head point of detached bones (Use Connect off) too.
| Setting | Description |
|---|---|
| Simulate Head | Enable head simulation |
| Head Stiffness | Pull back toward the animated position |
| Head Max Offset | Max drift from rest (0 = unlimited) |
8οΈβ£ Bake & Reset
| Button | Description |
|---|---|
| Bake NovaBone to Keyframes | Simulate the playback range and bake to keyframes β required before game-engine export. Preroll stabilizes first |
| Unfreeze All Armatures | Unfreeze post-bake armatures |
| Reset Physics (Active) | Reset the active armature's physics |
| Reset All Physics | Reset the whole scene |
π¨ Presets
| Preset | Feel | Use for |
|---|---|---|
| Hair | Soft flowing | Hair |
| Jelly | Wobbly | Chunky trinkets |
| Cloth | Loose fabric | Scarves, ribbons |
| Tail | Rounded swing | Tails |
| Accessory | Firm swing | Earrings, necklaces |
| Antenna | Barely bends | Antennas, feathers |
| Jiggle | Heavy sag & wobble | Chest, belly |
| Spring β | Bouncy overshoot | Spring jiggle bones |
π Recipes
π± Hair
1. Select hair bones (root last) β `Chains from Selection` 2. Preset: **Hair** 3. Show Bone Shapes ON β adjust Radius 4. Collision: NovaSol + body mesh, **Influence 1.0**, Bounce 0.1, Margin 0.03 5. Play β the hair should slide off the armπ Multiple accessories
1. Select all accessory bones β `Chains from Selection` (Auto) 2. Tune one β **Copy Active Chain Settings** 3. Use each row's π― select button to find which bones belong to which chainπ Spring bag
1. Create the bag chain β Preset: **Spring** 2. Shake & Play β check the bounce 3. Raise Damping to settle fasterπ©³ Skirt
1. `Chains from Prefix` if you use one 2. Preset: **Cloth** 3. Cone Limit 60β70Β° 4. Self Collision ON (prevents panel overlap)π§΅ Cloth integration
1. Engine = **Blender Simulation**, Profile = **Cloth** 2. **Show Bone Shapes ON** 3. Cloth modifier on the garment β check **Cloth Collisions** 4. PlayβοΈ Draping a chain over a sphere/body (contact tuning)
1. Influence **1.0**, Stretch **0** 2. Bounce **0.05β0.15**, Friction **0.4β0.6**, Margin **0.03** 3. Radius 0.18β0.25, Substeps 12 4. Play β the chain should drape and slide, no folding, no kinksπ§ Troubleshooting
Physics doesn't move at all
1. NovaBone Enabled / Enable Armature are ON 2. Freeze is OFF 3. **Is playback running?** (paused = physics paused β by design) 4. Click Shake & Play β if it jiggles, the engine is fine 5. Diagnostics β check the System ConsoleNovaSol collision doesn't block
1. Enable Collision ON + body mesh assigned 2. **Sim Influence at 1.0** β at lower values the visible pose is blended back toward the raw animation, which may pass through the mesh 3. Radius 0.2β0.3, Margin 0.02β0.05 4. Check for red `Collider failed: name` at the panel bottom 5. Fast motion β Substeps 10β16 (sweep CCD also engages automatically)A few bones fold / collapse at the contact zone
1. Update to the v1.0.0 solver (anti-fold + anti-kink built in) 2. Bounce down to 0.1, Friction to 0.4β0.6 3. Substeps 10β16 β shallower per-step sinks mean the fold guards rarely engage and motion stays smooth 4. Reset Physics after changing settingsCloth doesn't collide
1. Show Bone Shapes ON 2. Check **Cloth Collisions** on the cloth modifier 3. Engine = Blender Simulation + Profile = ClothBones snap / drift away
1. **Remove constraints (IK etc.) from simulated bones** 2. Reset Physics 3. Avoid non-uniform object scaleFix Bones (orientation) crashes or does nothing
1. v1.0.0+ handles bones whose child sits exactly ON the bone's head (Unreal base_X/dyn_X pairs) β they are reported as "child sits on the bone's head (left alone)" instead of crashing 2. Use **Check** first β it lists how many bones are off and why any were skippedβ FAQ
Q. What are the NovaShape_* objects? Collision-volume visualizations. They're removed when Show Bone Shapes is turned off and always hidden from renders.
Q. How do I get this into a game engine?
Bake NovaBone to Keyframes, then export FBX. Game engines replay the
baked animation.
Q. Performance with the new collision? Volume probing is bounded (β€ ~16 sphere queries per bone per target, multi-contact and CCD only cost extra ON contact frames). Watch the per-chain solve time (ms) at the panel bottom; if it climbs, lower Substeps β probe density already covers what extra substeps used to.
Q. Single-bone accessories?
Yes β Chains from Selection with exactly one bone now creates a 1-bone
chain directly. Or use Individual mode, or enable Include Single Bones in
Detect Chains.
Q. Which chain owns which bones? Press the π― button on that chain's row β its bones light up in the viewport and it becomes the active chain.
π License
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
This project is licensed under GPL-3.0, the standard Blender license. See the LICENSE file for the full text.
Made by Chamiseul π¦΄