Skip to content

Expression Selection Menu Generator for Avatars #1

Description

@zuedev

Currently, users rely heavily on controller gestures to trigger facial expressions. This can be clunky, prone to accidental triggers, and limiting for desktop players or users with alternative controllers.

We need a custom Unity component that allows avatar creators to easily configure a dedicated "Expression Selection" radial sub-menu. This component should automate the setup of toggles, parameters, and icons for various facial expressions, giving users precise, menu-based control over their avatar's face.


User Story

As an avatar creator, I want a streamlined Unity inspector component where I can define a list of facial expressions, assign icons, and map them to animation clips, so that I don't have to manually build out complex VRChat layers, parameters, and menus for simple expression toggles.


Key Features & Requirements

  • Custom Unity Inspector UI: A clean interface that allows creators to add, remove, and reorder expressions in a list.
  • Expression Configuration Fields: Each item in the list should accept:
    • Expression Name (String)
    • Menu Icon (Texture2D/Sprite)
    • Animation Clip (AnimationClip)
    • Toggle Behavior (Boolean: Saved/Not Saved on avatar reset)
  • Automated VRChat SDK Integration:
    • Automatically generate or update the VRCExpressionsMenu.
    • Automatically add the required tracking parameters to VRCExpressionParameters.
    • Generate the FX Animator Layer with appropriate states, transitions, and write defaults handling.
  • Mutually Exclusive Toggles (Optional/Nice-to-Have): An option to make the expressions mutually exclusive (selecting one turns off the others) or allow stacking.

Acceptance Criteria

  • Component can be added to any VRChat Avatar Descriptor GameObject.
  • Successfully generates a functional sub-menu with correct icons and toggles in the VRChat SDK build pipeline.
  • Toggling an expression in-game correctly overrides the base gesture animations.
  • Validates inputs to ensure creators don't exceed the 8-control limit per VRChat sub-menu without warning them.
  • Does not break existing, manually configured FX layers or parameters when updating.

Technical Notes

VRChat SDK 3 Compatibility: This component must interface directly with VRC.SDK3.Avatars.Components.VRCAvatarDescriptor, updating the expressionsMenu and expressionParameters fields programmatically via an Editor script.

Avoid modifying the animator controller directly if it can be done via a generated blend tree or a dedicated sub-layer to keep the asset non-destructive.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions