Weft
Cloth and hair for stylized Unity avatars, built so touch feels right.
A live cloth simulation running in your browser, in the spirit of the Unity solver.
Unity 6.3 (6000.3) or newer. No third-party dependencies, only first-party Unity (Burst, Collections, Mathematics).
Made to be touched
More live toys, each in the spirit of a solver feature. Grab a skirt, hair, or a soft cheek with one hand or both, and touch can answer back, a headpat raises a blush, a high-five sends up a little heart.
Touch that answers back
Pat the headStroke the crown of the head, no grab needed. The ears perk, a blush warms the cheeks, and a little heart floats up, the way a reaction hook answers a pat.
Consent you can feel
Try each zoneFour zones, four rules. Pull the Open cloth freely, click Keyed to unlock it, and feel OwnerOnly and Closed refuse a stranger’s grab.
Ears and tails, alive
Flick the tailA tail that wags and flicks on its own from a deterministic drive, then answers your touch. The grab feel is tuned for anime, squash and follow-through over realism.
Tension wrinkles
Squeeze the bandTension-driven wrinkle maps and anisotropic fold hinges put creases where the fabric gathers.
Hosiery
Scrunch the sockSocks and tights that hug the leg, scrunch at the cuff, crease where the knit gathers, and let the skin bulge softly just above a tight band.
Soft body
Poke itA real volumetric cheek or tail that squashes under a press and springs back, then keeps jiggling as the bone underneath moves. Grab a whole handful with one hand or both, not just poke, and a host rig can reach a limb toward your hand. Poke intensity is measured from the solve, a gentle press whispers and a fast jab thumps.
Droplets and wetness
Draw with waterA droplet clings, breaks loose, and runs down the fabric under gravity, darkening a wet trail that slowly dries. The sheen fades before the darkening does, and at a hem the drop fades out rather than dripping off. A stylized surface effect painted on the render, not a fluid sim.
Layered and draped
Steer the windAn over-skirt drapes over the main skirt and, as the wind gusts, slides across it instead of clipping through. The panel on top reads the skirt beneath as a surface to lie on and settles against it, a one-way contact that leaves the base skirt undisturbed, so an outfit hangs in its right order.
The feel is presets, not a physics-accuracy dial. SoftShoujo, CrispAction, and FloatyEthereal are named starting points you tune by eye.
What makes Weft different
The decisions that set Weft apart.
Consent is a first-class feature
Per-zone modes (Open, Keyed, OwnerOnly, Closed) and a Stranger-to-Owner trust ladder decide who may touch what. Consent is re-checked every frame a grab is held, so if access is revoked mid-hold, the grab releases immediately and neutrally, no fling, no snap. It is about safety in a shared world, and your game stays in charge of who is who.
Touch that answers back
Ship-ready reaction hooks turn a grab into a moment. A headpat can raise a blush, a high-five can burst a little heart, a ruffle can cue a giggle. A touch’s force reads on hair, cloth, and soft body alike, so a reaction can tell a gentle brush from a firm press. Wholesome by design, and yours to extend.
Bitwise-identical replay
Record and replay is bit-for-bit identical on the same build, platform, and solver settings as the recording, even a two-handed grab captured as one fused stream, and the replay proofs ship in the test suite. Ideal for tests, tooling, and lockstep netcode.
First-party Unity only
No third-party solver dependencies. Just Unity with Burst, Collections, and Mathematics. VRM is optional through a thin adapter, never a requirement.
Deterministic spring bones
A single-bone jiggle spring in the familiar spring-bone shape, with named soft, medium, and firm feels, for a bust or a swinging prop. Spring-bone systems usually leave their evaluation order undefined. Weft pins a deterministic one, so the same jiggle replays bit-for-bit on the same build and platform.
Blends with your animation
The per-frame tether is the animation blend, so the sim always plays against your live animated pose rather than fighting it. Hair can follow keyed Animator or Timeline motion instead of springing back to rest, and blendshapes and expressions feed the sim the pose the renderer actually shows.
Bring the avatar you already have
Weft reads your existing rig and proposes the whole setup.
MMD and PMX
PMX auto-setup reads a converted model’s rigid bodies, joints, and bones, then proposes chains, colliders, and touch zones as ordinary components you can review. It reads the physics, it does not import the model.
VRM, optionally
A thin, optional adapter reads a VRM avatar’s spring-bone chains and assembles the Weft front-ends for you. No VRM or UniVRM dependency lives in the package.
Or start from scratch
Any Transform hierarchy works. Add strands, auto-fit body colliders, paint touch zones, and press play.
Take it into VRChat
Weft’s own solver can’t run inside VRChat, and never will, because the avatar whitelist strips custom code at upload. But there’s an optional adapter that bakes what it can into PhysBone, so a Weft-authored avatar starts well ahead of hand-tuning from scratch.
Colliders export exactly
Your body, poke, and prop colliders convert one-to-one to PhysBone sphere and capsule colliders. It is a geometric export, not a guess. A drop test matched the baked collider surface to within five microns.
Chains bake to a tuned start
Your hair and skirt chains bake into a PhysBone chain tuned to sit closer to Weft’s feel than PhysBone’s defaults, so you start ahead. On a real authored rig, the baked hair and skirt both graded well against Weft’s own motion. You refine by eye from there, like any PhysBone chain.
Author on 6.3, bake on 2022.3
Tune a chain in your Unity 6.3 project, export a small file, and bake it into your 2022.3 VRChat project. You are not forced onto the older editor to author.
It is an authoring shortcut, not Weft running live. The stylized grab, mesh cloth, and soft-body volumes do not carry over, and every baked chain is refined by eye afterward, like any PhysBone setup. What you get is an exact collider export and a much better PhysBone starting point. The adapter itself is not yet published to any VPM listing, a separate step from the core package’s own coming-soon status.
Built for shared spaces
Touch that survives the trip between two players.
One cloth, two hands. A scripted peer reaches in on its own loop while you grab too. Try for the point it is holding: first-owner-wins keeps it theirs, and refuses your grab with a flash.
Bytes in, bytes out
Touch serializes to a transport-agnostic envelope. Hand it to whatever networking your world already runs, no socket or RPC library baked in.
Two players, one skirt
Two avatars can grab the same cloth. A contested point resolves first-owner-wins, a deterministic tie-break rather than a tug of war.
Desync, detected
A correlation key pairs a grab across peers, and an ordered checksum flags the exact frame two peers drift apart.
Leave a headpat for later
Touch messages are small and durable. Send a friend a pat they receive next time they log in, only if their consent zones allow it.
Import to play in about 20 minutes
No solver code, just components and paint.
- 01
Import the package
- 02
Add hair strands
- 03
Auto-fit body colliders
- 04
Paint touch zones
- 05
Hit play and tune by eye
Bringing an MMD model? PMX auto-setup reads its existing physics and proposes the whole rig.
Read the preview documentationA real editor toolkit
Most of Weft is authored by clicking and painting in the Scene view, not by writing solver code.
One-click Auto-Fit
Auto-Fit From Avatar reads a humanoid rig and fits body colliders to the hips, torso, arms, and legs in one pass, then leaves every capsule hand-editable.
Paint in the Scene view
Brush touch zones, pin masks, and per-bone tether and restore weights straight onto the mesh, with a live blue-to-red heatmap and mirror-safe strokes.
Preview before you play
A Live Preview panel settles a garment under gravity right in the Scene view, so you can watch it hang before ever entering Play mode.
Setup wizards
PMX Auto-Setup proposes a whole rig from a converted MMD model, Sphere-Pack fills colliders from a mesh, and Stiffness-Fit reads a drop clip into a starting stiffness.
Gizmos you can read
Every collider family draws in its own Scene-view color, cyan body capsules, orange props, yellow pokes, so overlapping tools stay tellable apart at a glance.
Prefab and undo safe
Every brush and tool is prefab-aware and undoable, so authoring never fights your version control or your muscle memory.
An inspector for every part
Every Weft component has a plain-language custom inspector under one violet theme, sorted into the Add Component menu by category, with tooltips and sane ranges instead of raw fields. Consent modes are set per zone in words, and a grabber picks its touch zone by name.
Editors for wind, pokes, and springs
Dedicated Scene-view editors draw live gizmos for wind sources and poke colliders at the exact pose the solver reads, and a batch tuner applies named soft, medium, and firm profiles to jiggle springs. Every one is undoable.
A walkthrough one menu away
Weft/Open Walkthrough opens the step-by-step authoring guide right from inside Unity, so getting started never means digging through package folders.
Fast where it counts
Measured on disclosed hardware and published in full, down to the machine, the method, and every rung.
0.68 ms
one 3,000-vertex garment on a 90 fps VR frame
<10%
of a VR frame for one full avatar, scaling near-linearly
0 bytes
allocated per frame, enforced by a hard test gate
The cheapest tier: a crowd swaying from a pure forward-kinematics drive, no physics at all. Sweep across them to raise a gust. In the solver a whole crowd like this fits in one Burst call.
See the full performance baseline
Frame-budget share, memory, the full method, and what a crowd costs when hands are on it.
2×
faster for a resting crowd of eight
The whole wardrobe
One solver covers hair, garments, and everything soft, and it reaches past the avatar into the scene. Cloth even pushes real Rigidbodies back, so a curtain can nudge a ball it brushes.
Garments and hair
Social and networking
Stylization and feel
Performance and pipeline
Beyond avatars
A lane past determinism
Weft is deterministic by default. When a world would rather react to live physics than replay bit-for-bit, an opt-in lane trades that guarantee for reach into the running scene. It ships today, it is off by default, and a world that leaves it off is byte-for-byte identical to one that never had it.
Two-way Rigidbody coupling
Read a moving Rigidbody’s live velocity and mass straight into the solve, so it hands real momentum to the cloth it touches and the cloth pushes back. A step past the one-way reaction on the deterministic path, where cloth can nudge a Rigidbody but never feel it move.
Live scene queries
Let a garment collide against whatever Unity colliders overlap it, not only the ones you assigned, so it can rest on a table, a shelf, or a floor it was never told about.
Both read live state from Unity’s physics, which is not promised to replay identically, so switching either on waives bitwise replay for that one world and nothing else. Everything still simulates. The tradeoff is measured and stable, not half-built, and you choose determinism or a live reaction per world on purpose.
Weft is feature-complete and in final polish for release. What is coming soon is the store listing, not the features. No date yet, and the buy link lands here the day it goes live.
Weft will be a paid Unity asset, a one-time purchase priced at launch.