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.

On that file, the first thing to do is to change the locked track on Capture Rig’s Torso bone from -X to +X:

The model in the file doesn’t match the proportions or pose of Capture Rig, so it’s never going to look good on that rig anyways, not in a thousand years; as you can see, I made a few monkeys so I could more easily see problems with the bones.

That’ll take care of the problem you’re reporting. There are still other issues here-- I still recommend disabling inherit scale on all bones, and it looks to me like there are some bones without proper rest lengths set for their stretch to constraints (you can see the feet bone stretch well past their marker.) If you bake keyframes and then discard location and scale data, keep only rotation data, it should be okay, other than unavoidable issues with the technique that you can see in the Mixamo rig’s animation as well.

Hi Bandage,

Wow that -x to x change on Capture Rig’s torso do indeed solve the “twisted” mesh/body !!
Thanks .

On the propose/pose match … I understand and will test with other armature with wide shoulders next.

As for the other fixes needed to make it presentable that you suggest … I have to say I am totally lost how to execute them.
after what I can do I redo reload latest … that need more help from me

  1. disable inherit scale on all bones.
    I take this refer to both “Capture Rig” and my “Armature” ?
    I am new to this … I tried to select all bones, first with Armature … then Capture Rig.
    In pose mode, I select all bones … then press

Shift-W (bones toggle option)
hmm no option to “inherit scale” … so how do I do this “disable inherit scale” and is it on both rigs?
Hope you can advise.

  1. Bake keyframes then remove location and scale data.
    Notice I can’t bake any data on my armature.
    So I bake data on the “capture rig” instead …
    I had then remove all keyframes on location … for scale, they appears no keyframes ? or atleast
    it appears only a straight horizontal line in Graph Editor …
    See attached diagram below.

I have no idea what this means “some bones without proper rest lengths set for their stretch to constraints” … :slight_smile:

Am I doing the right thing based on your recommendation? Attaching my updated file with these done.


here’s the update blender file … that need some more help

Look on properties/bone/relations. Use right click->copy to selected to affected multiple things at once easily.

Look at your feet. The stretch puts them past the location of the marker.

Yes, pardon me. “Capture Rig” is an armature-type object.

If you bake from the file you showed me, you should have scale frames on some bones, at least one the feet’s Y scale. It lkooks to me like you’re showing only keyframes on your armature object (again, “Capture Rig”.) To see all a bone’s keyframes, you’ll probably want to enter pose mode and select all bones, after baking.

Didn’t look at the updated file.

Hi Bandage,

Thanks again for further advise.
On the point related to removing scale inheritance … understood your instruction and implemented.

On “…proper rest lengths set for their stretch to constraints” …
I took the idea that you suggest the “foot should never go below ground”.
I tried with these 2 constraints I read from other tutorial … hope this is what you are referring to.

Noted on the bake refers to the “capture rig” (armature). Done

On removing scale and location keyframes, I fix the location keyframes but still can’t see the “scale keyframes” … flat line.

With latest fix, all keyframes are flatline on “graphic editor” … which I record animation/bake action.

Here’s the latest file … still have some issues with hands … but perhaps and a little twisted legs, but like you said, I need to find another armature of similar frame/size to this “recapture rig”. I will try this later when I find one.
Still a novice in animation and armature stuff … :slight_smile:
Thanks so much again .

You probably shouldn’t worry about it, at least until you get a mesh on there. Don’t fix what isn’t broken yet. Personally, I think it’s weird to use a scale-to (rather than a damped track) but it may not cause you any issues.

Alright bandages.
Thanks for all the help . you certainly a guru on this stuff.
Took me >1 week (last week) to figure this out and got to no where near to the solution you had given.
Thanks again.

Cheers
:slight_smile:

Hi Bandages,
I have a quick question. As you know I am trying to have this “retargeted Mixamo” armature “cling” to this “capture armature” so that the “retargeted Mixamo” can animate following it … which in turn already following a “control data” that is “live motion” from Kinect camera.

My question is, I wanted to “bake action” on the “retargeted Mixamo”. Is this actually possible ?
So far it only works on the “capture armature” in terms of baking action of animation from it.

But I just could not bake any action out of the “retargeted Mixamo” that has it own set of bones … either via Object > Animate > Bake Action in object mode after selecting the armature, neither could I get this “back action done” via Pose > Animate >Bake Action (after selecting all bones in pose mode).

Any advise if this is absolutely not possible in Blender (v2.92) ?

Yes, you can bake the action. Don’t know where you’re getting stuck. You’ll want to bake with visual keying, clear constraints, pose (not object), probably without “only selected”.

Ah so the trick is to “clear constraints” on my “mixamo” Armature.
Well that I can’t do as I need those contraints to enable my “retarget mixamo” Armature to follow
the “recapture rig” motion.

My requirement is to capture (bake action) of my “retarget mixamo” armature that continue to have
those constraints’ that you had taught me how to fine tune, to follow the “recapture rig” motion (that link
to the “ni mate”/“kinect” live motion capturing device.

Any other way around this ?

The armature either retargets from mixamo, or it plays its own action. The constraints override whatever action you put on that armature.

If you want to use it to bake several different mocaps, you can duplicate the armature and bake with clear constraints. A bake makes an “action”, which is a bit of data independent of armatures, and which can be used on any armature (provided the bones are named appropriately.)