Skip to main content

Avatar descriptor

The VRChat avatar descriptor becomes a BasisAvatar, the component Basis loads an avatar through.

What carries across

  • View position, as the avatar's eye position.
  • Visemes, all fifteen. Both platforms order them the same way, so they map by position rather than by name.
  • Blink, taken from the eyelid blendshape the descriptor names.

A VRM has no descriptor, and its own expressions fill what they can: the five vowels and blink. See VRM.

Head chop

A VRC Head Chop becomes a Basis Head Chop on the same object, naming the same bones with the same scale factors: 0 scales a bone away while the wearer is in first person, 1 leaves it. VRChat's global factor is multiplied into each bone.

A bone VRChat scaled away only in VR, or only on desktop, is scaled away in both. Basis has no such condition: headChop.condition.dropped.

What Basis fills in itself

Opening the BasisAvatar inspector for the first time makes Basis populate the animator, the human scale, the renderer list and the mouth position. Those are left to it rather than guessed, and a re-conversion updates the component in place instead of replacing it, so nothing Basis filled in is thrown away.

What does not carry across

Eye look settings, lip sync mode, the collider layout VRChat uses for its own contacts, and the expression menu and parameters, which are a separate subject: see Menu toggles.

VRC Raycast components fire a ray and set animator parameters from what it hits. Basis has nothing that does this, so they are reported as raycast.dropped. Per-platform overrides and impostor settings are instructions to VRChat's uploader with no behaviour of their own, reported as vrchat.buildSettings.