4
$\begingroup$

Lets say I have two bones, A "Root" bone and a "Child" bone, the "Child" bone has the "Root" bone set as its parent. How can I make it keep its world position while the parent moves?

Now, the reason I ask is because I want to create some "root motion" animations for UE4 (which I have gotten working) but since the root bone moves during the animation, its really hard(or as far as i can see; impossible) to keep the IK targets I use in the same place while the "Root" bone moves.

As an example see webm-related: http://webmshare.com/nq8qa (I'm aware that this animation is horrible for root motion and in this case it won't be used)

But in that rig I have the head as the root bone, when it bobs up and down I'd still like to be able to keep the IK targets located at the feet still without bobbing with the head bone!

Any suggestions on how to do this? The easiest thing would obviously be if I could copy the world position of a bone and then paste it on the next keyframe, but I can't for the life of me find that sort of functionality!

$\endgroup$
9
  • $\begingroup$ I think the problem is with your ik target bones. Did you disable them from deforming the mesh? Do they have constraints on them? $\endgroup$
    – eromod
    Jun 7, 2016 at 1:06
  • $\begingroup$ They do not have deformation on, and they do not have any constraints of their own. The problem is that in UE4 I can only have one root bone, the head in this case, so even the IK targets have to be parented to it. $\endgroup$ Jun 7, 2016 at 1:09
  • $\begingroup$ Maybe the problem is the root bone then. Does it have deformation disabled? $\endgroup$
    – eromod
    Jun 7, 2016 at 1:11
  • $\begingroup$ This question isn't about deformation but about the position of the bones. It used to have deformation on but tried turning it off; no difference. The question is about BONES inheriting locations from their parents, not the mesh incorrectly deforming. $\endgroup$ Jun 7, 2016 at 1:14
  • $\begingroup$ Oh yes ofcourse. Maybe try disabling in the Properties Editor-->Bone-->Relations-->Inherit location $\endgroup$
    – eromod
    Jun 7, 2016 at 1:16

3 Answers 3

0
$\begingroup$

This can be done with bone constraints

  1. Add an Empty to the Scene at the base of your child bone.

  2. Disconnect the child bone from its parent (AltP) in Armature Edit Mode.

  3. In Pose Mode select the child bone, go to the Bone Constraints context Bone Constraints Context Button, and add a Copy Location Constraint targeted at the Empty.

Here is an example of the result:

An armature object being moved while one of its bones remains stationary

Above: An armature object being moved while one of its bones remains stationary

$\endgroup$
2
  • $\begingroup$ Actually a new problem surfaced, i can't key the position of the 4 different empties within the action editor! When I input a key for one of the empties it instead keys its LocRotScale to the armature object! $\endgroup$ Jun 7, 2016 at 12:37
  • $\begingroup$ @TheGoodBookDevAIV That doesn't make sense. Can you post the .blend? $\endgroup$
    – Mentalist
    Jun 8, 2016 at 4:35
0
$\begingroup$

Answer from 2022 (Blender 2.93):

So you have ik targets in blender that aren't parented to the root bone, and unreal engine can't handle that. Good news! UE doesn't need to know about your ik targets, so the solution is simply to not export them. Here's how you do it:

First, tell blender that you ik targets are not deforming the mesh (which they aren't, they are only there to drive the ik solver). Do this by selecting your bone in edit mode, go to the bone settings tab and uncheck "deform" which is checked by default:

enter image description here

Then go into object mode and select your armature and export as fbx. In the exporter settings, under the armature tab, make sure 'Only deform bones' is checked:

enter image description here

Boom! your ik targets are safe in blender, and UE will import your mesh.

$\endgroup$
-1
$\begingroup$

It looks like it is already disabled for that bone enter image description here

$\endgroup$
11
  • $\begingroup$ Indeed. But when i move the root bone in pose mode this still happens: webmshare.com/qAoA0 $\endgroup$ Jun 7, 2016 at 1:29
  • 1
    $\begingroup$ But isnt that the whole point of a root bone? The bone that controls them all? $\endgroup$
    – eromod
    Jun 7, 2016 at 1:33
  • $\begingroup$ It is indeed. docs.unrealengine.com/latest/INT/Engine/Animation/RootMotion But for effects like that to work, i'd need to animate the whole underlying armature AND the root bone, which gets very hard if all IK targets move as soon as I move the root bone. Thats why I also wondered if it would be possible to rather copy the world position of a bone and paste it on a later frame. $\endgroup$ Jun 7, 2016 at 1:35
  • $\begingroup$ But the IK targets move relative to the target bone. So in the local space, the pole targets dont move at all. Im confused what you are trying to achieve, you want the root bone to go forward but the ik targets to stay behind ? $\endgroup$
    – eromod
    Jun 7, 2016 at 1:40
  • $\begingroup$ Yes that's precisely what I'm trying to do: Imagine having a person walking forward across a plane, the IK targets for one of the feet would then, in world space, always be still whilst the center of weight of the character(the root bone) would continue to travel forwards (then the other IK target would be still once the other foot touched the ground). As it is right now, everytime the root (center of weight) moves forward the foot touching the ground lurches forward with it: I want it to stay in the same location in worldspace one way or another. $\endgroup$ Jun 7, 2016 at 1:44

You must log in to answer this question.

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