How I optimize VRChat avatars in Unity and Blender without much 3D modeling experience.
These are my notes compiled from lots of googling, watching videos, and trial and error. There are probably better ways to do things here, and I would love to know if so :)
Last updated: 2024-07-13
Prerequisites
- Basic knowledge of Unity and how to upload an avatar
- Blender installed with the CATS plugin
Note on CATS plugin compatibility with Blender versions (as of July 2024)
General workflow
- Get an idea of what to remove on the avatar and what performance rank you want to target. Getting down to PC Poor is usually pretty straightforward, while Medium or better can take a lot more effort and compromises. Quest is the hardest, and some avatars just can’t be converted to Quest and still look good.
- Delete unnecessary components in Unity (remove lights, particles, DPS, etc.)
- Optimize the model in Blender
- Delete unused clothing and accessories
- Cut out hidden parts of meshes (like skin under un-toggleable clothing)
- Decimate meshes down to target poly count, and/or dissolve edge loops
- Delete unused bones
- Import the optimized model in Unity
- Clean up unused components and bones
- Reduce phys bone component count
- Reduce texture sizes and VRAM usage
- Adjust toggles and animations
- Atlas textures if needed
Optimization walkthrough
I’ll walk through converting a Very Poor avatar to Poor or better on PC, using Kitty Zoe by Pursu as an example. Pursu already makes very optimized avatars and often provides green versions, but this is a special model that only comes as Very Poor.
Unity setup
-
Create a Unity project and import the model as usual. Make a temporary copy of the avatar to experiment without affecting the original avatar. This copy can be used later to import new models. Select the avatar in Hierarchy, Ctrl+D
to duplicate it, and F2
to rename it