AvatarFX
A suite of plugins for animating avatars non-destructively. Also contains some utilities too!
This is a personal project I use when creating my own avatars for personal use, so some things may change, be incomplete, or downright hard to understand. Because of the nature of this project, I won’t be providing a ton of support channels, other than the issues tab on GitHub above. If you need help, or something breaks, please create an issue!
Licensing
You may use this project freely on any avatar, commercial or not, within VRChat. Users must add the package via VCC / ALCOM, please don’t copy the package into your avatar package, as that could potentially break user’s projects if something conflicts! Finally, please, please do not remove any of the branding on the plugins, it’s the only small thing I ask <3.
All of these plugins require either VRCFury or Modular Avatar to operate.
We use reflection to access these public APIs and add components to the avatar to merge animators after animators have been set up. This keeps us dependency-agnostic and lets you use the system you prefer!
Plugins
TimedFX
A plugin for creating effects with different ramp-up, waiting, and cooldown times. Perfect for creating effects like sweat on an avatar where you want varying times.
Examples:
- Sweat on an avatar that quickly builds up, and waits a while before slowly disappearing.
- Breathing effects that build up quickly and slowly cool down after sprinting for a length of time.
Usage:
- Add the component to a new, empty GameObject on your avatar
- Add an “Input” parameter. This is the parameter used to activate the effect via menu options or contacts. This parameter will activate at values greater than 0.5f, and deactivate at values lower than this.
- Choose an animation type, i.e. whether you are animating a BlendShape or Material values.
- Add animated objects, for materials:
- NOTE: Currently only float values (single numerical numbers) are supported, colors, and vectors cannot be animated just yet!
- Add the GameObject with the mesh in the Animated Object slot
- Choose an animated property; for Poiyomi, make sure the property is animated and right-click the property > copy animated property name. Paste this value here. Note that if a property is renamed you must lock-in the shader before copying to get the correct name!
- Specify the minimum (resting) and maximum values for the property during the animation. This can be any float value.
- Choose an “Up Speed” this is a modifier, this dictates how long the effect will take to ramp-up over time. 0.01f is the default value
- Choose a “Down Speed”, also a modifier, this dictates how slow the effect will return to it’s “resting” state. 0.001f is the default value.
- Choose how long the animation should pause before falling off. This is in frames and will be relative to the local framerate of the user. 5000 frames = apx. 2.8 mins at 30fps, 1.8 minutes at 60fps. Unfortunately delta-time calculation is too over-the-top for this effect, and it is not synced.
- Finally, choose a speed modifier. This is just an overall multiplier of all values in the animator.