I’ve been having a really puzzling issue, where my avatar looks totally correct within the Unity editor (with both eye positions and hand animations), but when I’m in-game things are getting adjusted wonkily and incorrectly.
For example, my eyes will move closer to each other (essentially misaligning them with the sockets), and my hand animations will look correct on the right hand but the thumb will be squashed in on the left hand.
I suspect that the eye thing can be worked around by disabling the eye bones in the avatar setup, but it’d be great if VRChat wouldn’t move the positions of them at all (especially in the event I get a VR headset with eye tracking in the future).
More annoyingly, I can’t figure out what’s going on with the hand animations; I have my gesture animation controller on both the Gesture and Action layer (but this was happening with it just on Gesture as well), and I’ve ensured that my animation controllers are set to ‘override’ blending (as opposed to ‘additive’).
Does anyone know what might be going on and how to fix this?
Okay, what I’ve come to figure out after experimenting some more is that all of my weird placement and shape issues are due to the avatar system trying to conform my avatar to some arbitrary armature that somehow tries to map onto my physical body, and there is no way to turn off this conforming.
So, is there somewhere that I can get the skeleton/armature that the (I’m assuming) Unity avatar system uses? I’ll probably have the best luck if I were to conform my avatar model to this base skeleton rather than trying to go the other way around.
Ah, I found a pointer in the right direction: in the AV3 walkthrough, there’s a mention of the
VRCAnimatorTrackingControl state behavior. That led me to realize that I can use that to override the finger positions for the various hand animations (by setting the appropriate hand’s fingers to ‘animation’). Obviously this makes it impossible to use finger tracking, but I don’t have an Index so that’s a bridge I’ll cross when I come to it later.
Haha, and it turned out I was barking up the wrong tree all along - this all turned out to be artifacts of my FBX’s armature scale being all wrong. Making sure that the armature was scaled properly fixed it; presumably VRChat was making a best effort to repair a completely-incorrect armature. Well, now I feel silly.