Create Avatar Clothing with Blender Cloth Simulation

Blender's cloth simulator can drape a garment over an avatar body, form folds, and create a fitted starting shape. The simulation happens in Blender. For movement after upload, the finished garment must be rigged to the avatar or use supported VRChat components such as PhysBones.

Clothing Workflow

Simulate on a duplicate garment, preserve an editable copy, and decide whether the result will be a fixed drape or a bone-driven garment.

  1. Prepare the garment and a collision mesh around the avatar body.
  2. Pin attachment areas, run the simulation from the first frame, and bake the approved result.
  3. Freeze a useful frame, clean the mesh, then rig and export it for Unity.
Blender cloth is not VRChat runtime cloth

An FBX does not carry Blender's cloth simulation into VRChat. VRChat documents PhysBones as its current component for secondary motion on clothing and as a cloth substitute until VRChat implements a dedicated Cloth component.

Choose the Intended Result

Decide what the simulation needs to produce before changing the mesh.

Result Blender cloth does VRChat setup
Fixed folds or a draped rest shape Produces a frame that can be frozen into the garment mesh Weight the finished mesh to the avatar armature
Moving skirt, coat tail, sleeve, or accessory Helps establish the garment's natural resting form Add suitable garment bones, skin the mesh, then configure PhysBones in Unity
Rendered cloth animation Calculates and caches motion for Blender animation Not exported as a VRChat cloth simulation

1. Preserve the Source Mesh

Duplicate the garment before adding or applying simulation modifiers. Keep one hidden copy that still has its original topology and modifier stack.

Before simulation:

  • Apply object scale so collision distances behave consistently.
  • Recalculate normals and remove unintended duplicate vertices.
  • Leave enough evenly distributed geometry for the fabric to bend.
  • Keep the garment outside the body collider at the starting frame.
  • Save the .blend file before creating a disk cache or bake.

Dense geometry costs more to simulate. Begin with the lowest resolution that can hold the folds you need, then add smoothing or subdivision in the appropriate place in the modifier stack.

2. Prepare the Avatar Collider

Select the body mesh that will deflect the garment and enable Physics Properties > Collision. Blender evaluates the collider after deforming modifiers, so an animated body should have its armature deformation before the Collision modifier.

For a faster and more stable clothing solve, use a simplified duplicate of the body as the collider. Remove hidden details that the garment cannot touch, but preserve the torso, hips, limbs, and other surfaces that define the fit.

Keep the collider separate from the upload mesh

A simplified Blender simulation collider is a modelling aid. Do not export it as visible avatar geometry unless it has another deliberate purpose.

3. Create the Pin Group

A pin group keeps selected garment vertices attached while the rest of the cloth moves. Typical pinned areas include a waistband, collar, shoulder strap, cuff, or the fixed edge of a cape.

  1. Select the garment and create a vertex group in Object Data Properties.
  2. Assign the attachment vertices to the group.
  3. Add Cloth in Physics Properties.
  4. Open Shape, enable pinning, and select the vertex group as the Pin Group.
  5. Weight-paint a transition when the attachment should soften gradually instead of ending at a rigid edge.

Blender uses each vertex's group weight to control how strongly it is pinned. Full weights hold the original position most strongly; lower weights permit more movement.

4. Set Modifier Order

Modifier order changes the shape used by the simulation.

Object Typical order Reason
Animated garment Armature, then Cloth, then surface smoothing The armature moves pinned areas before cloth motion is calculated
Avatar collider Armature or shape-key deformation, then Collision Cloth receives the body's evaluated shape for that frame
Static drape garment Cloth, then optional smoothing or subdivision The cloth solve establishes the form before final surface polish

If the garment already has an armature, begin the timeline in its bind pose. Move into the target pose over several frames so the solver can follow the body rather than beginning with an intersection.

5. Configure Collisions

Enable object collisions on the garment. Enable self-collision only when the garment must stop folding through itself; it increases simulation cost.

Check these conditions before adjusting advanced values:

  • The garment and collider do not intersect on the first frame.
  • Face normals point in the expected direction.
  • Object scale is applied.
  • Collision distance is large enough to prevent penetration but not so large that the garment floats.
  • Fast body motion is spread across enough frames for the solver to follow it.

Higher quality settings can reduce missed collisions, but they also increase calculation time. Fix starting intersections and modifier order before increasing quality.

6. Run and Bake the Simulation

Start playback from the beginning of the cache range. Do not jump directly to a later frame that Blender has not calculated; cloth depends on the preceding frames.

Use this loop:

  1. Play from the first frame until the garment settles or reaches the target pose.
  2. Inspect the waistband, underarms, hips, inner sleeves, and overlapping panels.
  3. Clear the cache before changing geometry, collision settings, pin weights, or cloth properties.
  4. Repeat until the result is stable.
  5. Bake the approved frame range so the cached result remains consistent.

Blender locks simulation settings while a bake is protected. Use Delete Bake before revising the setup.

7. Freeze the Garment Shape

Move to the frame with the best drape and duplicate the simulated garment. On the duplicate, apply the Cloth modifier to turn that evaluated frame into ordinary mesh geometry. Keep the original simulation object and cache until the avatar has passed export testing.

After freezing the shape:

  • Check for body intersections from several viewing angles.
  • Remove geometry that was only needed for simulation.
  • Correct shading and normals.
  • Preserve or rebuild UVs as needed.
  • Transfer or paint armature weights for the finished garment.
  • Add garment bones before export if the clothing needs PhysBone motion.

8. Export and Test in Unity

Export the cleaned garment and its required armature data with the same scale and axis workflow used for the rest of the avatar. In Unity:

  1. Confirm the garment uses the intended avatar armature and bones.
  2. Test the avatar's full pose and animation range for clipping.
  3. Configure PhysBones only on dedicated secondary-motion bone chains.
  4. Prefer PhysBone limits where they can prevent unwanted motion without additional colliders.
  5. Review the avatar's performance rank before upload.

Do not assign a PhysBone root to a Humanoid bone such as the Hips, Spine, Chest, Neck, Head, or limbs. VRChat recommends using a separate duplicate root for the secondary-motion chain.

Video Companion

The original tutorial by akalink demonstrates the Blender clothing workflow. Interface locations may differ in newer Blender versions, so use the written steps and official references below for current terminology.

Troubleshooting

The cloth explodes or stretches when playback begins.

Return to the first frame and check for intersections, unapplied scale, disconnected vertices, and extreme pin transitions. Clear the cache after correcting the mesh, then calculate again from the beginning.

The garment passes through the avatar body.

Confirm Collision is enabled on the body collider and object collisions are enabled on the cloth. Check normals and the starting gap, then increase collision quality or distance only after the basic setup is correct.

The garment appears to float above the body.

Collision padding is probably larger than the visual gap you want. Reduce the relevant collision distance gradually and recalculate from the first frame.

The pinned edge is rigid and creates a visible crease.

Weight-paint a gradual transition below the attachment edge instead of assigning every nearby vertex a full pin weight. Recalculate after changing the group.

Changing a setting does not change the simulation.

Delete the existing bake or clear the temporary cache, then start playback from the beginning. Cached frames can otherwise keep showing the earlier calculation.

The clothing is static after uploading to VRChat.

That is expected when the mesh only contains a frozen Blender drape. Runtime movement requires a suitable bone chain, skin weights, and supported VRChat dynamics configured in Unity.

Official References

Related Guides