I’m trying to optimize a character rig using the “Optimize Game Objects” import setting.
Before enabling the optimization, I can edit the transform of the character’s neck joint, and the head will move or turn as expected.
But then I enable optimization and set the neck joint to be the only joint that should be available as a transform:
Now when I update that transform, the mesh does not update. It is possible to see it move if the object is animated, but it’s not possible to update it as it was before I enabled the optimization.
Any workaround for this?
I believe the issue is that the “extra” transforms are simply there to give you the location of, say, the hand (at any given point of the animation) so that you can parent, say, a sword to it. As you have seen, you will not be able to /move/ the transform manually anymore, but you should be able to find the /location/ of that transform and parent things to it via the “exposed” transform. It is “exposed” because it wants to be seen – but apparently not touched (and I think this goes extra for humanoid bone transforms).
As far as I know, there are no workarounds for this. The transform locations of the mesh bones are stored in video memory and transform the vertices there. The vert locations are driven by the FBX/animation file itself and not Unity’s regular transform system (if the model’s transforms are optimized). That means there is no way it can be controlled externally (as Unity stands now), since skinned-mesh rendering now currently happens on the hardware side (when the transforms are optimized).