Creating Wrinkle Maps For Latex (And More) In VRChat

This guide assumes a few things:

- You have a basic understanding of VRChat avatar creation in Unity, including:
  - Basic animation creation
- You have a basic understanding of common graphics & texture terms such as 'masks', 'normals', etc.
- You are using the Poiyomi shader for your clothing.
- You have Substance Painter (this can be done with it but I would highly recommend using it) and have a basic understanding of how to use it.

  

What is a Wrinkle Map?

A wrinkle map is a texture (usually a normal map) that enhances the surface detail of a 3D model by simulating small creases and folds that appear under certain conditions—like when a character squints, frowns, or smiles, or when clothes move and fold due to character movements.

Unlike standard normal maps that are always active, wrinkle maps are dynamically blended based on animations or muscle activations—for example, when a blendshape or bone moves past a threshold.

The Process For Getting Wrinkles Into VRChat

1. Creating A Wrinkle Normal Map

The most ideal way of doing this would be to start with a high-poly mesh, and sculpt the wrinkles by hand/with simulations. We’re going to assume that you’re starting point is a low-poly VRChat asset since most asset creators working with a high-poly mesh would already have the knowledge to do this part.

For Gomi: Note that we should focus on a total of 4 “zones” for wrinkle maps to be in, 5 if they aren’t already using a detail normal map, which we go into detail below.

2. Creating Masks For Your Wrinkle Zones

Creating wrinkle masks is a fairly straightforward process: we just need to define where the wrinkles should appear on the mesh. At its core, this means painting white areas (where the effect shows) on a black background (where it doesn’t). How you go about this is entirely up to you—but I took the quick-and-dirty route by disabling all the color layers in my Substance project, painting each mask on its own layer, and exporting them one at a time.

Tip: Use a large, soft brush when painting your masks. This helps create smooth falloffs, so the transitions feel more natural and aren’t harsh or obvious in motion.

3. Setting Up Your Materials Using Poiyomi

RGBA Color Masking

Bonus: Detail Normals

4. Animations

5. VRC Contacts

Setup

Let’s get started with