Skip to content

VRC Stocking Generator Manual

VRC Stocking Generator is a Unity editor extension for creating stockings from an avatar body. It can create knee-high stockings, pantyhose, full body tights, arm stockings, and custom cut shapes using exclusion colliders.

Installing Modular Avatar and lilToon is recommended. If Modular Avatar is not installed, Blendshape Sync and Merge Armature are not configured. If lilToon is not installed, the materials used by the presets cannot be loaded.

Basic Usage

  1. Open the tool from Tools > Stocking Generator.
  2. Assign the avatar body's Skinned Mesh Renderer to Body > Skinned Mesh Renderer.
  3. Choose a preset or assign your own material in the Material section.
  4. Click Generate Stocking.
  5. A stocking is generated. Adjust colors or mask settings as needed, then generate again until the result looks right.

The generated stocking object is created next to the source body object in the hierarchy. Meshes, textures, materials, and prefabs are saved to the selected output folder.

Examples

  • Knee-high stockings
How to make this

Set Mask Mode to KneeHigh, then adjust Stocking Height Offset as needed.

  • Pantyhose
How to make this

Set Mask Mode to Pantyhose, then adjust Stocking Height Offset as needed. If underwear clips through the stocking, slightly increase Output > Advanced Settings > Normal Offset.

  • Arm stockings
How to make this

Enable Arm Stocking, then adjust Arm Length Offset as needed.

  • Full body tights
How to make this

Enable Full body tights, then use Neck Mask if you want to cut the mask around the neck. When knee-high, pantyhose, or arm stocking boundaries are enabled, the boundary areas are darkened.

  • Asymmetric or single-side knee-high / arm stockings
How to make this

Enable Separate left/right height offsets, then adjust each side. To generate only one side, disable the side you do not want with Right KneeHigh, Left KneeHigh, Right Arm Stocking, or Left Arm Stocking.

  • Fishnet tights
How to make this

Enable Fishnet Pattern, then adjust Fishnet Cell Size, Fishnet Line Width, and Fishnet Around Cells as needed.

  • Sleeveless tights
How to make this

Use Exclusion Colliders.

Enable Full body tights, then enable Neck Mask. Add an empty GameObject to the hierarchy, then add several empty GameObjects under it. Add sphere, capsule, and box collider components to the child objects.

Cover the arms with sphere colliders, the sides with capsule colliders, and the back with a box collider to create a clean sleeveless shape. Adjust collider position and size until the arm openings match the shape you want.

Enable Exclusion Colliders, assign the root object of the colliders to Root, and adjust Dark Length to control the dark edge around the arm openings.

  • Cut out the heel and toes
How to make this

Use Exclusion Colliders.

Add a GameObject to the hierarchy, then add child objects with capsule colliders. Place the capsule colliders side by side.

Enable Exclusion Colliders, assign the root object of the colliders to Root, and adjust Dark Length to control the dark edge around the heel and toe cuts.

  • Torn tights
How to make this

Use Exclusion Colliders.

Add Assets/ranhai613/StockingGenerator/Colliders/ripping_mold.prefab to the hierarchy. It contains multiple mesh colliders as child objects. Move and resize them to create the torn shape. Be careful when mesh colliders are too close to each other, because the removed areas may connect.

Enable Exclusion Colliders, assign the root object of the colliders to Root, and set Dark Length to 0. If you are also using dark edges for other cutout areas, enable 2nd Root, assign the root for the torn tights, and set 2nd Dark Length to 0.

Changing Colors

Stocking colors can be changed in the Stocking Color section. Normal Color is the base stocking color, and Dark Color is used for darker areas such as boundaries and toes. When you select Material > Preset, these colors are also updated to match the preset.

Color Preset Examples

  • White

  • Navy

  • Wine red

Using Your Own Material

Select Custom in the Material section to assign your own material for stocking generation. When the stocking is generated, the selected material is copied, then the generated main color texture and alpha mask texture are assigned to the copy. The original material is not modified.

Using Other Shaders

lilToon is supported by default. Other shaders, such as Poiyomi, may also work, but full compatibility is not guaranteed because texture assignment differs by shader. If automatic assignment fails, manually assign the generated texture and alpha mask to the copied material. By default, generated textures are saved under Assets/ranhai613/StockingGenerator/Generated.

Limitations

  • Rigs other than Humanoid bones are not guaranteed to work.
  • Stocking boundaries may look rough when viewed up close. Increasing Material > Advanced Settings > Main Color Texture Size or Stocking Alpha Mask > Advanced Settings > Mask Texture Size may improve the result.
  • Because the body mesh is used directly, feet may look like five-toe socks.
  • Sharp mesh parts such as nails may fail to connect cleanly. Nail meshes may also overlap and make the color look unnaturally dark.

Field Reference

Field Description
UI Language Selects the editor UI language.
Body Sets the source body used for stocking mesh and mask generation. The source renderer must have a valid mesh.
Parameter Description
Skinned Mesh Renderer The source body renderer. Rigs other than Humanoid bones are not guaranteed to work. This field is required.
Material Configures the material used for the generated stocking and the generated main color texture.
Parameter Description
Preset Selects a color preset. Available presets are Custom, Black, Brown, White, Navy, and Wine.
Material The source material copied for the generated stocking. This field is required unless the preset successfully loads the default material.
Advanced Settings
Parameter Description
Main Color Texture Size Resolution of the generated main color texture. Higher values give more detail but create larger files.
Stocking Color Adjusts the base stocking color and darker details around boundaries and toes.
Parameter Description
Normal Color Base color of the generated stocking texture.
Dark Color Color used for boundary darkening, toe darkening, neck boundary darkening, and exclusion collider boundary darkening.
Darken boundary fabric Adds a darker band around stocking boundaries.
Boundary Dark Width Width of the darker boundary band. Shown when Darken boundary fabric is enabled.
Darken Toe Adds darker color near the toe area.
Toe Dark Offset Moves the toe darkening region forward or backward along the foot direction. Shown when Darken Toe is enabled.
Stocking Alpha Mask Configures the alpha mask that controls where the stocking is visible.
Parameter Description
Full body tights Generates a full body tights-style mask instead of the usual lower body stocking mask.
Neck Mask Shown when Full body tights is enabled. Cuts the mask around the neck.
Parameter Description
Enable Enables neck exclusion for full body tights.
Height Offset Adjusts the neck cut height.
Dark Length Adds a darker boundary band around the neck cut.
Mask Mode Naked creates no leg stocking region. KneeHigh creates knee-high masks. Pantyhose creates a pantyhose-style lower body mask.
Exclude Foot Removes the foot area from the generated mask.
Foot Boundary Offset Adjusts the foot exclusion boundary. Shown when Exclude Foot is enabled.
Left KneeHigh / Right KneeHigh Enables or disables knee-high generation for each side. Shown when Mask Mode is KneeHigh.
Separate left/right height offsets Uses separate height offsets for the left and right sides.
Parameter Description
Left Stocking Height Offset Height offset for the left knee-high stocking.
Right Stocking Height Offset Height offset for the right knee-high stocking.
Stocking Height Offset Shared height offset used when left and right offsets are not separated.
Arm Stocking Adds arm stocking regions.
Parameter Description
Enable Adds arm stocking regions to the mask.
Left Arm Stocking / Right Arm Stocking Enables or disables arm stockings for each side.
Separate left/right arm offsets Uses separate length offsets for the left and right arms.
Left Arm Length Offset / Right Arm Length Offset Length offsets for the left and right arm stockings.
Arm Length Offset Shared arm stocking length offset used when left and right offsets are not separated.
Fishnet Pattern Generates fishnet-style holes in the alpha mask. Hands, feet, and darkened boundary bands are kept as normal tights instead of fishnet. This option does not support Full body tights.
Parameter Description
Enable Enables fishnet pattern generation.
Fishnet Cell Size Controls the vertical size of the fishnet cells. Smaller values create denser cells.
Fishnet Line Width Controls the thickness of the fishnet lines.
Fishnet Around Cells Controls the number of fishnet cells around the body circumference.
Exclusion Colliders Uses colliders under a selected root object to remove areas from the generated alpha mask.
Parameter Description
Enable Enables exclusion collider processing.
Root The transform that contains the colliders used for exclusion. Enabled colliders under this root are detected recursively.
Dark Length Width of the dark boundary painted around the excluded collider area in the generated main color texture.
2nd Root Enables a second collider root. Use this when another collider group needs a different dark boundary width.
2nd Dark Length Dark boundary width for the second collider group.
Advanced Settings
Parameter Description
Mask Texture Size Resolution of the generated alpha mask texture.
Mask Padding Pixels Expands generated mask edges by the specified number of pixels to reduce seams. For fishnet patterns, this also pads the fishnet mask around UV seams.
Output Configures the generated object name, output location, mesh processing, and export options.
Parameter Description
Object Suffix Suffix added to the generated stocking object name.
Output Folder Folder where generated assets are saved.
Delete previous generated stockings in hierarchy Deletes previously generated stocking objects with the same base name before creating a new one.
Advanced Settings
Parameter Description
Normal Offset Pushes the generated stocking mesh outward along normals to reduce clipping.
Smooth Iterations Number of smoothing passes applied to the generated mesh.
Smooth Strength Strength of mesh smoothing.
Apply Smooth Iterations to each BlendShape frame (slow) Applies smoothing to blend shape frames as well as the base mesh. This can improve deformation consistency but is slower.
Remove fully transparent faces Removes mesh faces that are fully transparent in the generated alpha mask to reduce polygon count.
Export FBX if Unity FBX Exporter is installed Exports an FBX when Unity FBX Exporter is available.
Delete Unused Generated Assets Deletes generated assets in the output folder that are no longer referenced by current generated stockings.
Generate Stocking Creates the stocking object and generated assets.

Advanced Usage: Exclusion Colliders

Exclusion Colliders remove fabric inside the specified collider volumes. They are useful when the automatic mask includes areas you want to remove, or when you need clean custom cuts around complex shapes. Enable Gizmos in the upper-right of the Scene view to see colliders while editing.

Basic Workflow

  1. Create an empty GameObject near the avatar.
  2. Add empty GameObjects under it, add collider components to those child objects, and place the colliders so they cover the areas to remove.

  1. Enable Exclusion Colliders in the tool.
  2. Assign the parent object to Root.

  1. Adjust Dark Length to control the dark fabric edge around the removed area.
  2. Generate the stocking and check the result.

Only enabled colliders on active GameObjects are used. Target colliders are collected from the root and its children.

Using 2nd Root

Use 2nd Root when one collider group and another collider group need different dark boundary widths. For example:

  • Root: use the normal Dark Length for large exclusion areas.
  • 2nd Root: use a Dark Length of 0 for holes, torn fabric, or similar cutout areas.

Both roots remove pixels from the alpha mask. Their dark boundary widths are applied separately to the generated main color texture.

Tips

  • Use simple collider shapes where possible. They are easier to adjust and preview.
  • For mesh colliders, enabling Convex may simplify the collider shape and change the removed area.
  • Increasing the texture size makes exclusion collider edges more accurate.
  • If nothing changes, confirm the collider GameObject is active and the Collider component is enabled.

Q&A

Stocking generation takes too long.

Possible causes include large texture sizes, high smoothing iteration counts, or enabling Apply Smooth Iterations to each BlendShape frame (slow). Lowering these settings will shorten generation time. When adjusting the result, it is also recommended to reduce texture sizes to something like 1024, then increase them only for the final output.

  • Reduce Material > Advanced Settings > Main Color Texture Size and Stocking Alpha Mask > Advanced Settings > Mask Texture Size.
  • Reduce Output > Advanced Settings > Smooth Iterations.
  • Disable Output > Advanced Settings > Apply Smooth Iterations to each BlendShape frame (slow).

The Generate Stocking button is disabled. What should I check?

Make sure Skinned Mesh Renderer is assigned, the renderer has a mesh, and a valid material is assigned.

The generated mask is empty or missing. Why?

The source mesh may not have UV0, the expected bones may not be found, or the selected Mask Mode may not match the avatar rig. Try another Mask Mode, confirm the mesh has UVs, and check the Console for StockingGenerator warnings.

Underwear clips through the body. What should I do?

Slightly increase Normal Offset.

Why are BlendShapes not matching perfectly?

Enable Apply Smooth Iterations to each BlendShape frame (slow) when using smoothing. This takes longer but can make blend shape deformation more consistent.

How do I make only arm stockings?

Set Mask Mode to Naked, enable Arm Stocking, then enable the left and/or right arm options.

How do I make pantyhose or full body tights?

Use Mask Mode > Pantyhose for lower body pantyhose. Enable Full body tights for a full body style, then optionally enable Neck Mask to cut around the neck.

The foot area should be bare. Which option should I use?

Enable Exclude Foot, then adjust Foot Boundary Offset until the cut is in the desired position.

Exclusion Colliders do not affect the result. What should I check?

Confirm Exclusion Colliders is enabled, Root is assigned, the collider GameObjects are active, and each Collider component is enabled. Also make sure the colliders actually overlap the body mesh area you want to remove.

When should I use 2nd Root?

Use it when you need two collider groups with different dark boundary widths. If both groups can share the same dark edge width, one root is enough.

Where are generated assets saved?

They are saved in Output Folder. By default, this is Assets/ranhai613/StockingGenerator/Generated.