vrc-avatars

Version: 1.0 Stack: VRChat SDK, Unity

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "vrc-avatars" with this command: npx skills add alexanderstephenthompson/claude-hub/alexanderstephenthompson-claude-hub-vrc-avatars

VRChat Avatars Skill

Version: 1.0 Stack: VRChat SDK, Unity

VRChat's performance ranking system means avatars ranked "Poor" or "Very Poor" get automatically hidden by most players' safety settings — your carefully crafted avatar becomes an invisible robot silhouette. Too many materials break batching. Too many bones eat CPU. Mixed Write Defaults cause unpredictable animation behavior. And Quest has dramatically stricter limits that require a separate build, not just the same avatar with fewer polygons.

Building within Good rank limits from the start means your avatar is actually seen by other players. The parameter budget and PhysBone limits aren't arbitrary — they're the line between visible and invisible.

Scope and Boundaries

This skill covers:

  • Avatar 3.0 setup

  • Expression menus and parameters

  • Performance optimization

  • PhysBones and contacts

  • Animator controllers

Defers to other skills:

  • unity-csharp : C# patterns and performance optimization

Use this skill when: Building or optimizing VRChat avatars.

Core Principles

  • Performance Rank Matters — Poor avatars get blocked.

  • Quest Compatibility — Separate build, stricter limits.

  • Parameter Budget — 256 bits max for synced parameters.

  • PhysBone Limits — More bones = more cost.

  • Test on Device — Mirror and performance differ.

Performance Limits

Quest (Target: Good)

Metric Good Medium Poor

Triangles 10,000 15,000 20,000

Materials 1 2 4

Bones 90 150 256

PhysBones 0 6 8

PC (Target: Good)

Metric Good Medium Poor

Triangles 32,000 70,000

Materials 4 8 16

Bones 150 256 400

PhysBones 16 32 64

PhysBone Colliders 8 16 32

Patterns

Hierarchy Structure

Avatar Root ├── Armature │ └── Hips │ ├── Spine → Chest → Neck → Head │ │ ├── Eye_L, Eye_R │ │ └── Hair bones │ ├── Leg_L → Knee → Foot → Toe │ ├── Leg_R → ... │ └── (Shoulder → Arm → Elbow → Hand → Fingers) ├── Body (SkinnedMeshRenderer) ├── Clothes (optional separate mesh) └── Accessories

Parameter Budget (256 bits)

Type Bits Common Uses ───────────────────────────────── Bool 1 Toggles Int 8 Outfit index, state machines Float 8 Blend shapes, radial controls

Example Budget:

  • VRCEmote (int) 8 bits
  • VRCFaceBlendH (float) 8 bits
  • VRCFaceBlendV (float) 8 bits
  • Custom toggles ×10 10 bits
  • Outfit selector 8 bits
  • Remaining 214 bits

Expression Menu Structure

Main Menu ├── Expressions │ ├── Happy │ ├── Sad │ └── Surprised ├── Toggles │ ├── Hat On/Off │ ├── Glasses On/Off │ └── Jacket On/Off ├── Outfits (Radial) │ └── Select 1-4 └── Settings ├── PhysBone Intensity └── Fallback Toggle

Write Defaults Pattern

Choose ONE approach project-wide:

Write Defaults ON:

  • Simpler setup
  • Properties return to default when state exits
  • Can cause conflicts between layers

Write Defaults OFF (Recommended):

  • More control
  • Must explicitly set all animated properties
  • Each state fully defines its output

Anti-Patterns

Anti-Pattern Problem Fix

Too many materials Breaks batching, hurts rank Combine textures, atlas

Mixed Write Defaults Undefined behavior Pick one, be consistent

Unoptimized PhysBones Performance cost Reduce count, simplify chains

No fallback avatar Blocked users see robot Set a performant fallback

Synced parameters for local-only Wastes sync budget Mark local-only correctly

Full body mesh on Quest Triangle count Separate Quest mesh

Checklist

Setup

  • Armature follows humanoid structure

  • Avatar descriptor configured

  • Eye tracking configured (if applicable)

  • Visemes configured

  • View position set correctly

Performance

  • Triangle count within target rank

  • Material count minimized (atlasing)

  • Bone count within limits

  • PhysBones optimized

  • Quest version uploaded (if applicable)

Expressions

  • Expression menu organized

  • Parameters within 256-bit budget

  • Write Defaults consistent

  • Gesture layer configured

  • Toggles tested

Quality

  • No clipping in default pose

  • PhysBones behave naturally

  • Expressions look correct

  • Tested in VRChat (not just Unity)

References

  • references/avatar3-setup.md — Avatar 3.0 configuration guide

Assets

  • assets/avatar-performance-limits.md — Quest and PC performance limits

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.