Timiz0r / EZFXLayer

An easy way to maintain VRChat avatars' FX layers
MIT License
2 stars 1 forks source link

Support left hand #18

Closed Timiz0r closed 1 year ago

Timiz0r commented 1 year ago

Finally figured out the non-write defaults trick! I believe the Lila avatar has done it for a while now, but I could never figure out what was different. Basically, the right hand default animation should set no blend shapes. If the right hand is on the default animation, this allows the left hand to do stuff. If the left hand then goes to default, then its default animation is successfully able to reset the blend shapes back, and there's no need for the right hand to do it.

EZFXLayer isn't really designed to be able to do that, since animations are supposed to contain the full set of blend shapes and game objects (animatables) across the layer as defined in the reference animation.

This needs more thought than I feel like putting in right now, but there are a couple obvious options:

Still undecided, but will probably go the following route:

  1. Add the quick and easy option
  2. Add a new issue for the redesign and for overriding sets of animatables
  3. Do the redesign
  4. Support overriding and remove support for and auto-convert the empty animation option

Before releasing 1.1.0, since not a lot of people are using this tool yet, want to get this design finalized, particularly with respect to how serialization changes. Therefore, keeping this in the milestone, but probably won't actually implement anything before its release.

Timiz0r commented 1 year ago

Decided to do the redesign now, which is underway. Done is the design to separate the reference animation into an animation and a reference. Next will be supporting adding and removing animatables to/from animations, detached from the reference.

One design issue is what happens when the reference is given an animatable already contained in an animation. I don't think there's any reason to keep them detached, so we'll probably link them together.

Also a note that having unit tests for this part of EZFXLayer is now in-scope, since the ui code is pretty complicated.