Skip to content

Avatar Toolkit

The Avatar Toolkit is Social Scape's first-party, non-destructive avatar authoring toolset, built into the SDK. Add one component, describe what you want ("toggle this hat", "merge this outfit onto my body", "these three outfits are mutually exclusive"), and the toolkit compiles it into your avatar at upload — real expression parameters, menu controls, and animator layers, wired together for you.

Everything an avatar author reaches for — outfit systems, expression menus, gesture overrides — is here, and none of it edits your source model.

The mental model

Your project is never modified

Everything you add here runs on a throwaway copy of your avatar at upload time. Your scene, your prefab, your materials and meshes are never touched. An avatar with no toolkit features is completely unaffected — nothing changes for existing content.

Three things follow from that:

  • You describe, the toolkit builds. You don't hand-author animator layers, clips, masks, or parameters. You fill in a feature (a menu path, some objects, an outfit) and the toolkit generates the matched parameter + menu control + animator layer.
  • It lands in the normal menu. Everything compiles into the standard expression menu and parameters and is driven by the normal radial/action menu — so a toolkit-built avatar behaves exactly like a hand-built one.
  • It's the same layering you already know. Generated toggles are scoped overrides (they change only the objects they animate, never your body) — see Avatar Animation ▸ Masks. A default-on outfit piece can be toggled off correctly.

Quick start

  1. Select your avatar (or an outfit prefab on it) and Add Component ▸ Social Scape ▸ Avatar ▸ SS Avatar Features.
  2. Click + Add Feature and pick what you want. Each feature has a short help box and tooltips on every field — you never have to leave the inspector to understand it.
  3. Fill it in, then upload as normal. That's it.

You can add as many features as you like, and put SS Avatar Features components on multiple objects (e.g. one per outfit) — they're all compiled together.

Actions — the shared building block

Several features (Advanced Toggle, Modes, Radial Dial, Radial Int Dial, Gesture reactions, Apply During Upload, When Talking) describe what happens with a list of Actions. Mix and match as many as you want:

Action What it does
Object Show or hide a GameObject (a hat, a prop, an outfit piece).
Blendshape Set a blendshape to a value 0–100 (leave the mesh blank to use your body mesh).
Scale Scale a transform — grow a prop, resize a body part, or the whole avatar.
Material Swap one material slot on a renderer (an alternate skin/texture).
Drive Parameter Set another parameter while active (chain toggles, set an Int/Float).
Block Blinking Stop auto-blink while active, so a closed-eye expression isn't fought.

When a state turns off, object toggles flip back and blendshape/scale/material return to exactly the resting value they had — automatically.


Toggles & modes

Advanced Toggle

The workhorse: a menu item that applies a set of Actions — show/hide objects, set blendshapes, swap materials, scale, drive parameters — as an on/off toggle or a smooth slider.

  • Menu Path like Clothing/Hats/Top Hat — the folders are created for you.
  • Default On, Saved (persist between sessions), Synced (uncheck for a free local-only toggle).
  • Slider turns it into a 0–100 % radial that blends the actions (best for blendshape/scale).

Object Toggle vs Advanced Toggle

Object Toggle is the quick one — just show/hide objects. Advanced Toggle adds blendshapes, materials, scale, drive-params and the slider. For a set where only one option should be on at a time, use Modes.

Modes (exclusive group)

A group of options under one menu folder where selecting one turns the others off — a radio group (outfit A / B / C, one hat at a time). Each option has a name, icon, default flag, and its own set of actions. An empty "none / off" option still clears the others.

Radial Dial (Float)

The classic smooth 0–100% dial (hue shift, blendshape amount, brightness, prop size) as its own feature. Two ways to use it:

  • With Actions: the dial blends them smoothly from rest to fully applied (best with blendshape / scale actions — a material swap can't blend and is ignored).
  • Without actions: set a Parameter Name and the toolkit mints just the synced Float + the menu dial — your own animator layers (a hue-shift blend tree, an imported controller) respond to the parameter.

Default Value, Saved, Synced work like the other features. (The Advanced Toggle's Slider option is this same dial bound to that toggle's actions — use the standalone feature when the dial isn't conceptually a toggle, or when it should only drive a parameter.)

Radial Int Dial

A single menu dial that picks a whole number, where each value shows its own look — a Social Scape original, with no equivalent on other platforms. Add a Step for each value (value 0 is the first Step, 1 the second, …); turn the dial in-game and it snaps between them, applying that step's Actions. Perfect for a palette / skin picker, a discrete morph, or a "which prop" chooser — one radial instead of a wall of buttons or a menu folder of toggles.

  • Give each Step a name and its actions. The toolkit mints a synced Int, a Radial Int menu control (0 … number-of-steps−1), and one scoped animator layer with a state per value — no hand-wiring.
  • Default value, Saved, Synced work like the other features.
  • Gate Parameter (optional) — a Bool that switches the whole dial off. See below.

Putting a plain on/off toggle beside a dial

A dial answers which one. Often you also want whether any — "which top" on the dial, "wearing a top at all" on a toggle.

Do not give both features actions on the same objects. Two features animating one object fight, the dial wins, and the toggle silently stops working (the build report tells you when this happens). Instead:

  1. Add a Toggle for the on/off, and leave its action list empty. It exists to be a menu button and a Bool.
  2. On the dial, set Gate Parameter to that toggle's parameter.

While the gate is off the dial applies nothing and everything it drives returns to how you built it; while it's on the dial applies the selected value again — the same one as before, because the gate never touches the dial's value.

You usually don't need a 'none' step

Because the gate is what expresses nothing worn, the dial doesn't need a step for it, and never has to work out which of your steps means "off". If you'd rather do it all from the dial, add a Step with no actions and skip the toggle entirely.

Want the toggle's button to flip by itself when you dial to a bare step? Put a Drive Parameter action on that Step, targeting the toggle's Bool.

Modes vs Radial Int Dial

Modes gives each option its own menu toggle, and already allows one or none selected — so for a handful of named outfits with an "off", Modes does the whole job on its own. Radial Int Dial collapses the set into one dial (better when there are many values, or the values are a natural range like a colour index). For the cleanest result, have each Step drive the same things to different values (e.g. the same material slot to different materials).


Outfits & props

Merge a bought or imported outfit (which ships with its own skeleton) onto your avatar so it animates and moves with your body, instead of sitting there as a static second body.

  1. Drop the outfit onto your avatar as a child.
  2. Add an Armature Link feature and point Outfit at it.
  3. If the outfit renames its bones (e.g. Hips.001), set the Bone Name Suffix (.001).

Preview before you upload

The inspector has a Preview match button showing how many bones resolved, plus the scale ratio — so you can sanity-check the fit first. Matching is anchored on your Humanoid rig, so your avatar must be set to Humanoid.

v1 keeps the outfit's bones

The outfit's bones are kept (parented under yours) — correct and safe, but your bone count roughly doubles. A future optimization pass will retarget-and-dedupe to reclaim the budget.

After an outfit is merged, copy your body's blendshape values onto the outfit's matching shapes so a shaped body doesn't poke through the clothes. Point it at the outfit; the body mesh defaults to your descriptor's body mesh.

Full Controller Merge

Drop a purchased animator controller + its menu + its parameters in as one unit, instead of hand-wiring the layer and reconciling names. Best for premium prefabs that ship a full FX/menu/params package.

World Constraint (droppable)

Anchor a prop in world space so it stays put as you move — a "dropped" object. Pair it with an Advanced Toggle that enables/disables the object to "pick it up".


  • Move Menu Item — relocate a control to another folder path without editing the source menu.
  • Set Menu Icon — override the icon on a control at a path.

Face & gestures

  • Hand Gestures — map hand signs (fist, open hand, point, victory, rock'n'roll, gun, thumbs-up) per hand to a reaction (a face, an effect), with optional blink-blocking.
  • Blink Control — keep the built-in blink, or Disable it when you drive eyes yourself.
  • Breathing — a subtle always-on breathing loop (scale a chest/spine bone, or a breathe blendshape).

Breathing in Blendshape mode

Blendshape weights run 0–100, so raise Depth to about 30–60 — the default 0.03 (right for Scale mode) is invisible. The build warns you if it's near zero.

  • When Talking — play a reaction (a glowing mic, a mouth prop) while you speak.

First person & upload

  • Show / Hide In First Person — keep a head-parented prop visible to you (glasses you look through), or hide a clipping prop (a hat brim, big ears) from your own camera. Mirrors and shadows are unaffected either way.
  • Apply During Upload — bake a guaranteed starting state (objects on/off, a blendshape set, a material) into the upload, regardless of how the scene looks while you edit.
  • Delete During Upload — strip editor-only helpers or unused variants from the final upload (your scene is untouched).
  • Remove Built-in Hand Gestures — disable the avatar's built-in gesture layer when you supply your own.
  • Restricted (local gate) — hide personal menu items behind a local unlock toggle.

Restricted is a privacy convenience, not security

The unlock is local only — off by default, never sent to other players, and reset every load. Great for keeping personal items out of casual view; it is not cryptographic protection.


Testing before you upload

Toolkit features are authoring data — they only become real parameters, menu controls, and animator layers when compiled, which normally happens at upload. To test them without uploading, add the Avatar Animation Preview component and press Play. A bar appears above the Avatar Test Studio's tabs whenever your avatar carries toolkit features:

Avatar Toolkit: N feature(s) NOT in this preview yet — compile them to test.

Click Compile features and the studio runs the real build against your live scene avatar — the same pipeline upload uses — so your generated toggles, Modes, Radial Dial, and Radial Int Dial all appear in the Menu tab and drive the avatar exactly as they will in-world. Edited a feature since compiling? Click Recompile. Revert puts the preview back on your hand-authored setup without leaving Play Mode, if you want to compare.

This runs the real build — including your destructive features

Compiling applies Delete During Upload, Armature Link, and the automatic fixes too, exactly like an upload would. Exiting Play Mode discards every change Unity made to the scene, so nothing here is ever permanent — but while you're testing, what you see is genuinely what will ship.

Your generated content merges into your own controller, not beside it

If you already have your own controller assigned to the Expressions layer, the toolkit's generated content is added into a copy of that same controller rather than a second layer stacked next to it — so nothing you've hand-built ever gets shadowed by what the toolkit generates.

Automatic fixes & the debugger

When you use the toolkit, a few invisible fixes run automatically at upload — enlarging mesh bounds so a split avatar doesn't cull a limb, giving renderers a shared lighting anchor, and chaining an over-full menu page into "More ▶" sub-pages. It also runs quiet diagnostics (cross-eye, Write-Defaults, controller health) and reports anything worth a look. Everything it changes is shown in the build log — never a silent edit.

Descriptor DebuggerSocial Scape ▸ Avatar ▸ Toolkit Debugger opens a read-only panel that shows, for the selected avatar: your expression-parameter budget, menu page counts, humanoid-rig health, blink/viseme setup, Write-Defaults consistency, and the toolkit features present.

Good to know

  • Hand Gesture reactions work on both platforms and replicate, so other players see them on their screens. In VR they come from your controllers or hands; on desktop, hold Shift + F1–F8 — left Shift for your left hand, right Shift for your right (F1 Idle, F2 Fist, F3 Open, F4 Point, F5 Victory, F6 Rock, F7 Finger-gun, F8 Thumbs up).
  • When Talking keys off your live microphone level, in every viseme mode — so it fires even on an avatar with no visemes at all.
  • Blendshape Link keeps following your body live by default: a body shape you drive from a menu slider carries onto the clothing in the same frame. Turn Live off for a one-time copy at upload.
  • Restricted is a privacy gate that hides items from casual view, not a numeric-PIN sequence. A real PIN entry is still to come — don't rely on it for anything that must stay genuinely secret.

See also