Home Website Youtube GitHub

Anim scene with referenced rig - updating breaks joint positions

Hi I have a question about how mGear builds and connects the skeleton, and whether guides/joints have some kind of construction index that needs to remain consistent to allow for updating an animation to the latest referenced rig version.

I have a rig that was referenced (via GameTools) and animated, and then later some small changes were made to the rig (importing a few modified guide components from a different scene and replacing the existing ones, but ensuring it was cleanly done with the same naming, no namespaces etc and parented correctly).

After this update, the some of the joints in the animation scene no longer behave correctly. However exporting the controls’ anim curves with Studio Library, and importing them onto a fresh rig build via GameTools puts everything back to normal.

Examining the broken scene, with the un-broken animated skeleton overlaid for reference, it looks like a bunch of the face joints are snapped to the position of some finger joints . To me this suggests that the wrong matrix is being connect to the wrong joints? Since all the matrices names just seem to be incrementally numbered, am I right in my guess that mGear builds things in some kind of order and my changes to the rig (dropping an imported guide as a replacement into the hierarchy and rebuilding) have changed that order?

If so, is there a way around this? Can easily I modify some part of the scripts where the matrices could be named rather than numbered and then reconnected by name (if that would help)?
Or some kind of refresh functionality to point the scene to the new .jmm file?

strange…normally the reference should save changes only on the controlls, since the joints are locked…
you could look at the reference edits to see if there is some wrong connections…
maybe the locking was breaked in the reference?
a workaround that comes in mind is to build this extra components by its own (as a new guide with its own host ui controller) and then reparent everything back to the rig…maybe the naming is then more consistent…
every component has an init.py script where all the magic connection stuff happens…