Target Armature copy rotation result opposite y axis direction

Hi,
I think the problem encounter is not yet presented in this forum … I tried 2 days trying to solve it but fail …

I am basically trying to “attached” a target armature to another source armature.
Intent is that the target armature will follow exact movement as the source armature.

My problem is when I use the “copy location” and “copy rotation” constraints to the target root bone to the source armature root bone, the target armature “face” opposite direction. In my case y axis.

I tried to use “invert” but it create other problems when I “copy rotation” for the other bones.
Also tried to change the “target armature” using “s y -1” approach proposed by a tutorial on this … but it only still doesn’t work correctly when attaching “mesh” body to it.

Does not anyone able to assist and advise what kind of additional contraints or what I must do to the “target armature” before using the “copy rotation/location” constraints to get both armature facing the same direction?

Appreciate help please as I am noob on “contraints” use on bones …

Hi there,
Anyone can help …
I seriously need to fix this, otherwise my “mesh/body” attached to this armature will appears weird and twisted if I use method like “s y -1” to turn it around to align with the stick armature (black color on pic).
Or try to use the constraints “copy rotation” and “copy location” for the root bone with “Inverted” z activated.

I don’t know of any other way that can reverse my armature (grey on pic) to align to the “stick” armature (black on pic) .

Just so you know. the “stick” armature is align to a set of “empties” that has real time created from Delicode Ni Mate 2 that derive movement data from “Kinect”.

Hope someone can help me out … on this complex armature bone alignment issue.

People can’t really help, because you haven’t given them enough to go on. They need a file or something.

If you just want to try something, enter edit on your destination armature, select the root, add 180 to its tilt (in sidebar/item.)

Edit: I mean roll, not tilt.

Hi,
Thanks for responding … I tried your suggestion still the same “reverse” result.
Okay here’s the blend file.

I tried to change the destination armature (target) to rotating Y axis 180.
When I add constraint to the root bone with copy rotation, copy location, still the same problem …
reverse direction. The attached file using this method you suggested.
Hope no password issue as I can’t figure out if this cloud site will auto set password.

Hi,
I just wanted to inform you that I had responded to this email and with my attached blender file for your kind support.
Simon

I’m not sure that file has everything it should. It looks like you’re trying to retarget animation from Armature to Capture Rig, which you’re doing by copy location, copy stretch, and sometimes damped track constraints. But the targets for those constraints don’t exist-- there is no object in the file called Left_Knee, for example. So those constraints aren’t doing anything.

So I can’t recreate your problem-- your file doesn’t have what I need to do it. (Maybe a version difference? I’m using 2.92.)

You also have capturing going on both ways. You’ve got Armature’s root bone doing a copy location + rotation from Capture Rig’s root bone. That doesn’t make any sense.

The main reason that you’re probably getting weird twist issues is that the vast majority of the retargeting is being done only by stretch-to constraints. Stretch-to rotates it the minimum amount it needs to be to point at the target. It does not end up giving you proper bone roll. If you want to capture the bone roll (the Y axis rotation) from Armature, you need to set up locked track constraints in addition to the stretch-to, and you need to use appropriate markers for those constraints.

One the one bone that has a locked track constraint already, it doesn’t look like it has an appropriate target. Your torso is set to locked track Left_Shoulder (which doesn’t exist in the file you uploaded). This is not what it should be locked tracking; it should be tracking a marker parented to one of Armature’s spine bones.

Recommendations:

  1. Look at the file you posted for upload, fix it so that it has everything needed to show where you’re at.

  2. Enable the display of axes on both armatures in properties/armature/viewport display so that you can see your bones’ axes more easily.

  3. Create markers and locked track constraints for Capture Rig.

  4. Remove all constraints on Armature.

  5. If you’re going to be using stretch-tos, disable inherit scale on all bones in Capture Rig (in properties/bone/relations).

Hi bandages,

I am new to armature retargeting … let me explain again how I reach where I am and the “reverse Y-axis” issue with my retarget armature.

Firstly, my setup is below … as explained in Remington Tutorial dated by in 2017 !

The scenario is to try to do motion capture with Kinect / Ni Mate and Ni Mate add on to Blender.

In the blender file I sent earlier, which I am resending to make sure you got the version I am testing that works on this setup.

With your suggested turning on the axis display … I can see the problem better but still does not know how to fix it. Here in this picture we can now see the “Capture Armature” and my “Retarget Rig-Mixamo” has common Y direction, but opposite for both X and Z …

Question is how do I align my “retarget Rig-Mixamo” to this “Capture Armature”?

Well let me also answer to your 5 points below … as best as I can on your recommendation.
Note that “Left Shoulder” … is one of the “empty” created by Ni Mate/Kinetic software … which you can find it in “Coordinate Data” collection. It is controlled entire by Ni Mate Blender add on.
Remington Creative map this kinect’s data to his rig called “Capture Rig”.
He also have done a mapping of his rig to a human-meta rig … which you can see it in collection “Retargeted Rig” that works fine. In his tutorial, he suggested we can do the same with any rig which I am trying, but the reverse problem which he simply suggested “retarget rig” apply “S Y -1” to all bones in Edit mode, does not seems to solve this “reverse” problem. Which leads me to seek help now … hope you can assist please.

Respond to your Recommendations:

  1. Look at the file you posted for upload, fix it so that it has everything needed to show where you’re at
    – I added axis display and resend you my file that I am currently still testing.
    – this version have both Kinect link to NI Mate to Blender real time working fine.

  2. Enable the display of axes on both armatures in properties/armature/viewport display so that you can see your bones’ axes more easily.
    – done so I see the mis align axis now … but don’t know how to solve it.

  3. Create markers and locked track constraints for Capture Rig.
    – I don’t understand this well. I just checked … markers I think you refer to “pose” markers? No idea how this relate to solving this problem. As for “track constraints” I think I understand somewhat the concept after reviewing a tutorial on this …
    https://www.youtube.com/watch?v=cUC3W_rW7dc
    but still don’t get how it solve this problem …

  4. Remove all constraints on Armature.
    I think you are referring to my “Retarget Armature-Mixamo” (I rename it in this updated file).
    This rig has no contraints … so I suppose nothing to do here?

  5. If you’re going to be using stretch-tos, disable inherit scale on all bones in Capture Rig (in properties/bone/relations).

Clearly I don’t know what to do here …

Attached the “reverse issue in diagram” for referencing with XYZ showing the differences between “capture armature” and “retarget Rig-Mixamo” root bone which is key to this problem that need to resolve I think to overcome this “twisted of mesh” to the retarget Rig-Mixamo" problem.


That file is nearly the same. No markers. Your constraints stretch to particular things: “Left_Collar”, for example. But there is no object or bone named Left_Collar in the file you uploaded.

Are you trying to retarget animation from the Mixamo rig? Or are you trying to capture animation from a Kinect onto the rig, and the Mixamo rig is just in the file to show that it’s possible? If the latter, I can’t help you, because I don’t have a Kinect.

Right now, I can’t reproduce the problem, because the file doesn’t seem to have what I need to reproduce it. When I hit play, there is no animation on Armature, let alone an animation with bad axes. (Same goes for when I take it out of rest position.) How do I reproduce the problem you’re having, with the file you’ve provided?

Hey this is a long shot but I looked around at the ni mate website and there doesn’t seem to be any support info. You could email them I guess if you purchased their product, don’t know how ni mate works.

Maybe this will help, its related to godot and ni mate but it sounds similar.

Hi Bandage,

Say thanks a59303 … I check your link and found that it recommend to do the following which I did
Armature > Bone Roll > Recalculate Roll > Global +/- X/Y/Z Axis. using Global -Y Axis if the armature faces forward relative to the world ; same as my problem.
The results is same as recommended by rc with “Edit mode>S Y -1” in solving the alignment.

Bandage, sorry if I did not provide sufficient info. for you to test and I also realise you needed the animation data from Kinect to simulate the problem I am encountering. To reconfirm, my requirement is
“… capture animation from a Kinect onto the rig, and the Mixamo rig is just in the file to show that it’s possible”

What I did now in the latest test file is to have Kinect animation captured into the “Capture Rig” and record/stored it into this Blender file so you can run it. Just click “play”.
Note that I have also “link” my “mixamo rig” to this “capture armature” using the root bone with “copy rotation” and “copy location”. But before I do so, instead of using “Edit Mode>S Y -1” … I follow the recommendation in the link provided by “a59303” stated in above paragraph.

Here’s the update file with animation data already captured from Kinect using the “capture rig”.

When you click play, you will notice that both armatures (capture rig and my armature) appears to align if you just look at the rig themselves, on the animation …

However, if you “display” the mesh … “TDA Miku Umineko” attached to my “armature”, you will see the problem of “twisted mesh” of “TDA Miku Umineko”.

I hope you can trouble shoot and advise what I need to do to fix this.

I suspect something to do with the "XYZ’ axis that was aligned in the first place as shown in my previous message/diagram above, where Y is align but both X, Z are not in the same directions for both capture rig and the retarget “Armature”.

Just so you know, the “Left_Collar” bone just like the “Left Shoulder” is found in “Coordinated Data” that comes from Ni Mate into Blender (using Kinect) and that set of bones (empties) are already map into the “capture rig”. I am simply trying to link my “armature” to this “capture rig” so that I can do “real time” animation/motion capture with Kinect/Ni Mate.

Hope you can help me out.
Cheers.