How can I reuse an animation on a flipped rig?

I made two characters (“player” and “enemy”) and rigged them up with Metarig.

For reasons I can’t recall, when I made the player character, I rotated the metarig 180 degrees on the Z axis and reset all the transforms. So my player character faces +Y in the rest position instead of -Y which is the metarig default.

I have several Actions that I made on Enemy that I want to use for Player as well. When I simply Append the Actions to the Player file and assign them to the rig, the positions are naturally all messed up, as shown in the third image.


Player: Rig faces positive Y (flipped)


Enemy: Rig faces negative Y (Metarig default)


Action does not transfer well from Enemy to Protagonist.

I have made many animations for both characters. Obviously I don’t want to lose or have to manually edit them all.

I feel like the best solution would be to fix the player character so that it faces the default negative Y direction. Is it possible to make that change without breaking all of its Actions?

If not, is there at least a way to apply the action to account for the reversed direction of the player when applying the enemy’s actions to it?

Thanks.

Hi, When you rotated the character rig did you rotate the root bone only or all the bones?

Neither, I rotated the metarig itself as an object before generating the rig.

That’s why you have this problem you need to generate and then rotate the rigfy root bone.

Yeah that’s why it happened. If I face the metarig back the original direction, apply its rotation, do the same for my model, and reparent the model to the rig, then the appended Action from the enemy character works.

But the problem with doing that is all of the protagonist’s animations then break, which is even worse then not being able to copy the enemy’s animations.

Have you tried to just adjust the rotation action of the player after applying the action by deleting the keyframes action rotation on the root and keyframe new rotation? Or parent the root bone to an Empty and rotate the Empty.

So I guess you have the protagonist and the enemy based on the same skeleton in a game that is facing the correct way?

Something like that.

Anyways what you could try regardless of game or not. But it would mean living with baked keys.

Two rigs.

One is facing the wrong way.

Rotate it in object mode facing the right way (don’t go back to the meta rig)

Rotate the control rig and the model. Don’t apply rotations or anything.

Add necessary constraints to each controller of the second correct rig to be children of the rig facing the wrong way ( but now rotated correctly in object mode).

Then bake the animation on the correct rig, possibly use visual location and rotation. But leave delete constraints and parents unchecked.

Now disable the parent constraints on the correct rig and test the animation.

This should theoretically retarget the animation.

Thanks. That all makes sense to me in theory, although in practice it sounds pretty complex. I’m not confident I could set up all those constraints correctly.

In the end I think I’ll just consign all my existing protagonist animations to a “legacy” animations file and use a separate file with the correct rig orientation for new animations moving forward. The rest of my workflow should be able to handle that without much issue. Not a solution, but an unfortunate workaround I think I can live with.

Understood. But It is not as hard as it seems. Though it might not work.

I could help you set it up though. If you are interested…