Skip to content

Social Bones

Social Bones add secondary motion to an avatar (or a world prop): hair sways, a tail swings, ears bounce, a skirt flows, a jiggle bone jiggles — physics layered on top of your animation. They also collide (so hair rests on shoulders, not through them), can be grabbed and posed, and can drive animator parameters. Simulation runs per-viewer off the poses everyone already receives, so nothing extra goes on the wire.

Social Bones or Magica Cloth 2?

Social Bones drive bone chains — hair, tails, ears, jiggle, accessories — and are built in, cheaper, grabbable and poseable. For real cloth behaviour on a skirt, cape or dress (mesh-level simulation, self-collision), Magica Cloth 2 is officially supported alongside them. Use both on one avatar if you like, but never drive the same bone chain with both — they fight over the same transforms and the result is jitter.

Fastest start: apply a preset

Presets retuned 2026-08

Every preset was re-tuned against the current physics and measured — each one's note in the inspector states its actual behaviour (overshoot count, settle time, droop angle). If you tuned a chain before this, two dials changed meaning: Spring/Momentum now genuinely mean bounce (they used to act inverted), and high Immobile is no longer needed to stop trailing while you move — that is fixed in the solver itself.

You don't have to dial in numbers by hand. Add a Social Bone (Social Scape/Social Bone) to the root of a chain, then use the Preset dropdown at the top of the inspector and pick the closest asset type. It fills in a tuned set of forces, limits, and stretch — a starting point you then fine-tune. The chosen preset's name shows on the dropdown so you always know what a bone is based on.

Presets are grouped by what you're rigging:

Group Examples
Hair Short Hair / Bangs · Long Hair / Braids / Twintails · Ponytail · Ahoge / Antenna
Ears Fluffy / Kemono · Floppy (Bunny/Dog) · Perky
Tails Fluffy (Fox/Cat) · Heavy (Dino/Shark)
Clothing Light / Ribbons · Heavy / Skirts · Cape / Cloak
Accessories Ribbon / Bow · Earrings · Chains / Pendants
Wings Feather tips
Body Soft / Firm Breasts · Buttocks · Belly · Thighs / Hips · Face Cheeks · Tongue
Props Grab-only / Poseable (no jiggle)

A preset never touches your chain root, colliders, or grab settings — only the physics values — so applying one is safe to try and easy to undo. For a single lone bone (see below) a preset also adds the endpoint it needs to move.

Set it up by hand

  1. Add a Social Bone to the root bone of a chain — the top of a hair strand, the base of a tail. Every bone below it is simulated.
  2. Tune the forces (below), or start from a preset. The whole configuration draws in the Scene view — toggle Show Gizmos to declutter.

You can add many per avatar (one per hair strand, one per ear, one per jiggle bone, etc.).

Single lone bones (breast, belly, a lone accessory)

A chain needs at least two points to swing. A bone with child bones already has them — the children swing. But a single bone with no children (a breast, belly, or lone accessory bone) has nothing below it, so it needs a virtual tip: an Endpoint Position.

  • The inspector detects this and shows a warning with a one-click Add Endpoint button.
  • Applying a preset to a lone bone adds the endpoint automatically.

Once it has an endpoint, the lone bone itself swings — see Root Motion next.

Root Motion — does the root bone itself move?

By default the chain's root is a fixed anchor: it stays put (held by the avatar) and only the bones below it swing. That's right for hair, tails, and skirts. But a lone jiggle bone is the thing you want to move. Root Motion controls this:

Mode Behaviour
Auto (default) A single lone bone (root + endpoint) swings itself — so a breast/belly/lone-accessory bone jiggles. A multi-bone chain keeps its root anchored (hair/tail/skirt base stays put). Covers almost everything.
Free The root always swings, even in a chain — e.g. a tail that should wag from its very base.
Fixed The root is always a rigid anchor, even a lone bone — for a grab-only / poseable bone that shouldn't sway on its own.

Forces

Field What it does
Integration Type Simplified (Pull + Spring — stable, damped) or Advanced (Pull + Momentum + Stiffness — more reactive, conserves motion).
Pull Return-to-rest strength. 0 = floppy, 1 = rigid. This is a real material stiffness: where a chain settles under gravity is decided by Pull vs Gravity, and it looks the same at every frame rate.
Spring (Simplified) bounce / overshoot — low values settle dead, high values wobble before settling. Fighting bouncy hair? Lower Spring or raise Pull.
Momentum (Advanced) how much motion carries frame to frame — higher is livelier. Same direction as Spring.
Stiffness Resist displacement from rest.
Gravity / Gravity Falloff Constant world-down pull (+ down, up); falloff cancels gravity near rest so a bone doesn't droop when still.
Immobile Dampen the motion your own body movement induces — 0 = bones swing freely as you move, 1 = they ride rigidly with you. Immobile Type: All Motion (translation + rotation) or World (translation only).

Bones ride with you — swing comes from changes in motion

Damping is measured relative to your body, so a chain settles into a fixed pose while you walk, run or ride a vehicle at constant speed — no trailing — and swings when you accelerate: starting, stopping, turning, jumping, landing. Immobile now only softens that acceleration response (0.05–0.3 is plenty); the old advice to crank it to fight "walk jitter" predates this and is obsolete.

The first frame of a hard start is handled for you

A character controller reaches full speed in a single frame, so a bone left to catch up on its own gets displaced by that whole step at once — it reads as the chest and hair warping sideways the instant you move, rather than swinging. The solver drags bones through a share of any sharp acceleration, the way attached tissue actually behaves. There is nothing to author: it responds only to changes in speed, so it is inert at constant velocity and inert at rest, and it does not touch swing amplitude or settle time — those are still Pull, Spring and Momentum.

Most fields also take a curve (Pull / Spring / Stiffness / Gravity / Radius / Max Angle / Max Stretch) that scales the value along the chain root→tip — e.g. taper a tail so the base is stiff and the tip is floppy.

Immobile only shows up when you move

Immobile dampens motion your own movement creates, so its effect is invisible on a still avatar and only appears once you walk around. If a chain barely swings while you move, lower Immobile; if it whips around too much, raise it.

Limits

Set Limit Type to clamp how far each bone can bend from its rest direction:

  • Angle — a symmetric cone (Max Angle).
  • Hinge — a single-axis swing (like a door).
  • Polar — independent pitch (Max Angle) and yaw (Max Angle Z) — a rounded rectangle of motion.

Limit Rotation orients the constraint frame (which way the cone/hinge points). When a bone is selected, the limit is drawn as a filled, coloured zone in the Scene view (a cone, a wedge, or a spherical segment for Polar) so you can see exactly how far it can move.

Collision

Give a bone a Radius and it collides. It hits Social Bone Colliders you place on the avatar (Social Scape/Social Bone Collider) — Sphere, Capsule, Plane, Box or Triangle shapes on a bone (e.g. spheres on the head + shoulders so hair rests on them). A collider marked Global is used by every chain without being listed (max 4 global; Plane can't be global). Allow Collision on the bone chooses whether it also picks up globals.

A collider works the same wherever you put it — on a free-standing object, or directly on (or under) an avatar's own armature bones — and it collides with your own bones just as reliably as a bone chain rooted elsewhere on the same avatar.

Each shape scales the way that shape should: a sphere by its transform's scale, a capsule's length along its own axis and its radius across it, a box per-axis. A capsule on a bone stretched along its length gets longer rather than fatter, and a non-uniformly scaled bone keeps its collider's shape. Scale a collider's bone to nothing (a common way to hide a body part) and its collider switches off with it.

Radius is a measurement, not a taste setting — use Fit To Mesh

Radius tells the solver how thick the strand around each bone is. The solver moves bone points and your hair mesh rides on them, so if the radius is smaller than the geometry, a bone can sit perfectly on a collider's surface while the visible hair is halfway through it — collision looks broken even though it is doing exactly what it was told.

Press Fit To Mesh (under Collision) and the SDK measures how far the geometry skinned to each bone actually reaches, sets Radius from it, and builds a curve so a strand that thins toward its tip collides like one. Do this first, then tune only if you want a deliberately looser or tighter feel.

A bone's Radius is a world-space size

The Radius you set on a Social Bone is the size it collides at, in metres, at your avatar's authored scale — exactly the sphere drawn in the Scene view. Scaling an individual bone (styling hair by scaling strands, stretching a tail) changes how that bone looks, not how big its collision is. Only resizing the whole avatar scales it, and then everything scales together.

This is why you can trust the gizmo: if a collider isn't visibly touching those spheres, it isn't colliding.

Capsules: axis, alignment, and taper

A capsule has a few extra controls that let it follow a limb properly instead of you having to fight its orientation:

  • Axis — which local axis the capsule runs along (Y by default, which is what every existing capsule uses).
  • AlignmentCenter extends half the length each way from the anchor point; Start treats the anchor as the capsule's start and runs the whole length in one direction. Start is usually what you want when anchoring to a joint and pointing down the bone.
  • Reverse Direction — flips which way it runs.
  • Tapered (cone) — give the capsule a different Start Radius and End Radius so it narrows, like a forearm toward the wrist or a tail toward the tip. A tapered capsule is a genuine cone, not a fat capsule pretending.

Symmetry: author one collider, get both sides

Set Mirror on a collider and it produces a second, mirrored volume on the other side of your rig — so an arm, leg, or hand collider only has to be placed once.

  • Auto Humanoid is the one to use on a normal humanoid avatar. It finds the paired bone through your Animator (LeftUpperArm ↔ RightUpperArm, and so on) and works out the mirror axis itself. Place a collider on the left arm and the right arm is covered.
  • Auto Target does the same automatic axis detection but mirrors onto a Symmetry Target you name — for non-humanoid rigs, wings, extra limbs.
  • X / Y / Z / XYZ mirror across that axis explicitly, onto the Symmetry Target if you set one or the collider's own parent if you don't.

The inspector tells you what it resolved to ("Mirroring across X onto RightUpperArm"), and the mirror is drawn in the Scene view in a dimmer shade of the same colour so you can see both at once. If it can't find a mirror it says so rather than silently doing nothing.

Mirroring is an authoring convenience, not free volumes: the mirrored copy costs a collision slot exactly like a hand-placed second collider would, and counts against the same budget.

Live-tune while testing

Every collider field — shape, size, position, rotation, taper, symmetry — updates immediately, even while you're already in Play Mode watching hair react. Nudge a radius or a size and the change takes effect the next frame, no need to stop and restart testing. The Scene-view gizmo draws the resolved shape, so what you see is exactly what bones are colliding with.

What collision feels like

What to expect while tuning:

  • Contact holds. A chain resting on a collider stays out of it and settles, rather than slowly sinking in.
  • Moving colliders sweep. Drag a collider through a chain and it carries the bones along with it; a spinning collider turns them with it. Stop moving and the bones stay resting on it.
  • Bones slide rather than stick. A bone in contact loses speed along the surface, so hair slides down a shoulder and settles instead of gluing itself where it landed or skating off frictionlessly.
  • Shapes read as themselves. A bone against the flat side of a box is pushed straight out of that side; against a corner it rounds off. A box and a sphere of the same size behave visibly differently.
  • Colliders are local. A collider only affects bones whose drawn radius it actually reaches — nothing else can reach a bone at any distance. If a collider isn't influencing a chain, check its size and position in the Scene view; it isn't a subtle range setting somewhere.
  • Enabling and disabling take effect immediately. Switching a collider (or its GameObject) off stops it colliding that frame, and switching it back on resumes — no re-entering Play Mode.
  • Pinched bones sit still. A bone caught between two colliders pushing opposite ways settles quietly instead of buzzing between them.
  • It holds at any frame rate. Contact is enforced on every frame that is drawn, not only on the frames the physics happens to step. Fast motion, a high-refresh headset, or a frame-rate dip don't open a gap — a hand swiped quickly through hair pushes it aside and carries it rather than passing through.

If hair still visibly clips, check Radius before anything else

Almost every "collision doesn't work" report comes down to Radius being smaller than the hair geometry, not to the collider. The solver keeps the bone points out of the shape; the mesh around them is only as far out as Radius says it is. Press Fit To Mesh and re-test before tuning anything else.

Stretch & squish

Max Stretch / Max Squish let a bone lengthen under tension or compress toward its parent (jelly, springs, cartoon effects). Stretch Motion makes fast motion drive the stretch.

Grab & pose

Players can grab a bone (desktop right-click, VR grip — the same grab as everything else) and it follows the hand. Release to let it spring back, or pose it (it holds where left).

Field What it does
Allow Grabbing Everyone / no one / only others (not the owner).
Allow Posing Whether a grabbed bone holds its pose on release.
Grab Movement How rigidly a grabbed bone snaps to the hand vs follows physically.
Snap To Hand The grabbed bone's origin snaps onto the hand.

Grabbing and posing replicate, so everyone sees a tugged tail move. Players also have Comfort toggles (grab my own / grab others' / let others grab mine).

Animator outputs (optional)

Set a Parameter prefix and the bone drives these animator parameters, so you can react to grab/stretch in your FX layer (they replicate over the existing parameter sync):

<prefix>_IsGrabbed · <prefix>_IsPosed (bools) · <prefix>_Angle · <prefix>_Stretch · <prefix>_Squish (0→1 floats).

Options

  • Endpoint Position — a virtual tip appended to a leaf so the last bone can swing. Required for a single lone bone; use the inspector's Add Endpoint button (or a preset) rather than guessing the value.
  • Root Motion — Auto / Free / Fixed (see above).
  • Is Animated — tick if the chain's bones are also moved by animation, so physics resamples the animated rest each frame.
  • Reset When Disabled — snap the bones back to rest when the component is disabled (instead of freezing mid-swing).
  • Ignore Transforms — bones (and their subtrees) to exclude from the chain.
  • Multi-Child Type — when the root branches: Ignore (each branch independent), First, or Average.

The inspector helps you

  • Hover any field — every setting has a tooltip stating what it does, its units, and what it interacts with.
  • Conflict warnings — the inspector calls out settings that are individually valid but do nothing or fight together: limit angles with Limit Type None, Gravity Falloff with no Gravity, a Radius with collision off and no colliders, Momentum tuned in Simplified mode, and more. If you see one, it is telling you which dial is inert and what to change.
  • Animated (re-sample the rest pose each frame) now works correctly for chains whose rest pose the Animator drives — tick it when your hair/tail bones are animation-keyed. It needs the rig's Animator on Normal update mode (the inspector warns if not).

Reading the Scene-view gizmos

  • Bones draw as Blender-style octahedral "pylons" so you can see the chain and each segment's direction.
  • Collision draws as a sphere/capsule at each bone's radius.
  • Limits draw as a filled, coloured zone on the selected bone (cone / wedge / spherical segment), tinted by the bone's Limit Colour — so the reach of an Angle/Hinge/Polar limit is obvious at a glance.
  • Show Gizmos, Bone Opacity / Limit Opacity, and Bone Colour / Limit Colour let you declutter and colour-code.
  • Per-Bone Visibility — a foldout checklist (under Gizmos, once Show Gizmos is on) listing every bone in the chain with its own show/hide. Uncheck one to hide just its gizmo — its octahedron segment, radius sphere, limit zone, and stretch/squish markers — when it's sitting in the way of something else you're trying to see, without touching simulation, collision, or anything else about that bone. Show All clears the whole list at once.

Worked examples

Each of these maps to a preset — apply the preset, then tweak. The values show the why.

  • Short hair / bangs — light and calm: one soft overshoot, settles in under a second. Add a small Angle limit (~10°) on bangs so they don't clip the face. → Hair ▸ Short Hair.
  • Long hair / twintails — heavier: Advanced, real Gravity (~0.3) gives ~15° of honest droop, one slow swing. Taper stiffness root→tip with a curve. → Hair ▸ Long Hair.
  • Floppy ears — Gravity plus a wide Angle limit gives a natural flop; Root Motion Auto lets a single ear bone move. → Ears ▸ Floppy.
  • Fox/cat tail — Advanced with high Spring/Momentum for a lively wag; a little Stretch adds life. Want it to wag from the very base? Set Root Motion Free. → Tails ▸ Fluffy.
  • Skirt — Immobile Type World, plus thigh colliders (essential) and Angle or Polar limits so panels don't invert. → Clothing ▸ Heavy / Skirts.
  • Single jiggle bone (breast / belly) — add the Social Bone to the bone, then Add Endpoint (or apply a Body preset, which does it). Root Motion Auto makes the bone itself swing. Give it some Gravity (or just move around) or it has nothing to react to. → Body ▸ Soft Breasts / Belly.

Testing it

Social Bones simulate automatically in the editor — open your avatar in the SDK, add your bones, and press Play. They spring, collide, and settle live, with no preview component or extra setup to add. Grab a bone (right-click on desktop, grip in VR) to test jiggle and posing before you upload.

Because most motion comes from your avatar moving, a bone on a still avatar only droops under gravity. To see how it looks in-world — swinging from walking, gestures, and emotes — add the Avatar Animation Preview and the SDK test player so the avatar actually moves; the bones simulate on top either way. (In-world the platform also eases the simulation on distant other players for performance — your own avatar always runs at full quality.)

Rules & limits (avatars)

  • Budgets: 32 bone chains, 32 bone colliders, 256 total simulated transforms, 512 collision checks per frame. Over budget → the extras are trimmed on upload. Keep chains short and radii modest.
  • A multi-bone chain's root may rotate but should not translate, and must never be a humanoid body bone — it's the anchor. A single lone bone (Root Motion Auto/Free) swings itself; its own transform parent is the anchor.
  • Prefer something simpler? Dynamic Bone is supported and works out of the box — a fine drop-in if you don't need the extras. Social Bones are the advanced, first-party system: collision, angular limits, grab & pose, stretch, presets, and animator outputs.

Colliders are the difference between good and great hair

A few spheres on the head and shoulders stop hair clipping through the body. Mark them Global so every strand uses them without wiring each one.


Component class names (for scripts and search): SSBone, SSBoneCollider.