1
$\begingroup$

I'm trying to reparent bones (which have an existing animation) without wrecking the animation.

What we have is a character riding a kart. But his Leg, Knee, Foot bones are all on the same level, parented directly to the root... In order to use animations built like this with a much larger pool of animations parented Leg>Knee>Foot, I have to change this bone structure, but in the process his legs get bent behind him.

Is it possible to restructure so that the parent order is Skl_Root>Hip>LegL>KneeL>FootL? Without damaging the animation as shown?

These are animations from a mobile framework, which myself and others would like to marry up with a much larger set of animations that use the slightly different bone structure. For example this character is the same size as Donkey Kong in another framework, which contains bike animations as well. But these bones will not work with those animations and vice versa. It's unfortunate.

I have already found one solution, which is to restructure the armature so that it contains 2 skeletons in 1. When an animation requiring these bones is needed, the other set of bones are scaled to 0 in Maya. This is quite convoluted though, and requires having 2 copies of the character mesh at all times, as well as editing every single animation's keyframes. This is being used at runtime- so I cannot be picky or do manual fixes per animation. A blanket solution must be used.

If there is no simple solution in Blender, can any other software more easily resolve this predicament? Thanks everyone for your time.

Here are sample files and images: https://www.dropbox.com/s/agli9x1ep8h1ciy/Funky%20Kong_questions.zip?dl=0

default bones

reparented

reparented_do not inherit loc/rot

different character_ideal bone setup

$\endgroup$

1 Answer 1

1
$\begingroup$

You can create a different armature, with a different hierarchy, copy world-space transforms, and bake the animation.

Duplicate your armature. Edit it to have the hierarchy you want. For every bone that's important, give it a Copy Transforms constraint (on default settings, world space-> world space) targeting its counterpart in the original armature.

Then, select your armature, and use the Bake Action operation (which I pull up from a searchbar, and if I wasn't baking slow textures atm, I'd tell you where it is in the menu.) Set the bake action to affect Pose, and enable both Visual Keying and Clear Constraints. Then bake.

The existing, world-space transforms will be baked into new local transforms appropriate for your duplicated armature.

$\endgroup$
3
  • $\begingroup$ That's incredible. Thanks so much. The two armatures move exactly on top of each other with the constraints. However, after baking the pose, the feet of the reparented armature are larger. And I can see the Leg/Knee/Foot bones are just a little off, perhaps rotated down. Any ideas why that would happen? Seems like a scale/rotation issue, but I'm assuming the constraint "copy transforms" should include scale and rotation data anyway? Perhaps I need a little more investigation to get to the bottom of that. Thanks for your help! Here is a visual before/after: imgur.com/a/YBGH2Wk $\endgroup$
    – Boxy
    Commented Jan 26, 2022 at 16:31
  • $\begingroup$ If you have skew-- inherited, non-uniform scale-- then copy transforms can't represent that. In fact, it can't be represented in any way with different parenting. This isn't usually a problem, because you should be trying to avoid skew anyways. There is also the potential for small errors due to precision, but we're talking really really tiny. $\endgroup$
    – Nathan
    Commented Jan 26, 2022 at 16:41
  • $\begingroup$ Okay yeah I figured it out. In the new reparented structure, I had the child bones with Inherit Rotation enabled, as well as Inherit Scale set to Full. I turned Inherit Rotation off and changed Inherit Scale from Full to None. That results in a 1:1 bake. I will just have to tinker from here and see what little things I need to change in each animation. Thanks again! And yeah I hear you on skew. I probably wouldn't have done it that way, but I didn't make this animation originally. But I think I can handle everything else from here. $\endgroup$
    – Boxy
    Commented Jan 26, 2022 at 17:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .