1
$\begingroup$

I have a 3d model

And when I move the Left Leg bone it works fine like this.

enter image description here

But when I move the Right leg bone I get this Problem

enter image description here

How can I solve this???

(Links are Images)

$\endgroup$
2
$\begingroup$

You are using vertex groups to bind armature to mesh : so you'll have to

  • Delete the duplicated vertex groups
  • Fix/reassign the needed ones ( Head, Body, Arm_L, Arm_R, Leg_R and Leg_L )
  • Use only one Armature modifier ( delete the others )
$\endgroup$
1
$\begingroup$

The short answer is, you need to fix the "weights" of your armature.

The following is a bit lengthy, but we need to make sure everyone is on the same page, so just bear with me.

In an armature (the generic term is "rig"), each bone is associated with certain vertices.

Those vertices follow the bone as if they were parented to it.

You can associate ("parent") a given vertex with more than one bone.

To further complicate things, you can specify how much influence each bone has over that vertex.

These influence values are called "weights." Sometimes it makes more sense to think of a bone as "owning" or "claiming" a vertex, so I'll use those terms where they make sense, but they're all referring exactly to "weights." You can think of it like a weighted average, if that helps. For example, if you have a vertex that is associated to more than one bone, the default weights would be 0.5 for each bone. That means the vertex will get its transformation from each bone equally. Half coming from one bone, and half coming from the other bone. Think of this as a 50/50 split. However, you can give the vertex a 0.9 weight for one bone, and a 0.1 weight for the other. That means one bone will influence the vertex's movement much more than the other bone will.

One important "gotcha" in Blender is that there are two ways to deal with weights. In one paradigm, any bone can claim a 1.0 weight on any vertex. So, if you have two bones that both have a 1.0 weight on the same vertex... how much influence does each bone have over that vertex? It's a 50/50 split. If three bones claim a 1.0 weight on the same vertex? It's a 33/33/33 split (one third each). However, what if one bone claims 0.9, another claims 0.2, and a third claims 0.7... that gets pretty difficult to figure out. This is the default way Blender works with weights.

The other paradigm works with "normalized" weights. In the Weight Tools panel there is tool called "Normalize All..." and another called "Normalize." These tools adjust the weights such that no matter how many bones claim a given vertex, the weights for all the bones add up to 1.0 (or 100%). So, instead of one bone claiming 1.0, and another bone also claiming 1.0, they get adjusted down to 0.5 each. This makes the math a lot more intuitive... sometimes. Let's say you have a 50/50 split (0.5) for two bones that "own" the same vertex. If you change one bone's "ownership" to 0.4, where does the extra 0.1 go? It goes to the other bone, which automatically gets set to 0.6 so that the combined weights add up to one. So that one is pretty straightforward, but what if you have a 10/20/30/40 split (0.1 for one bone, 0.2 for another bone, 0.3 for a third bone and 0.4 for a fourth bone, all "owning" the same vertex)? What if you change the 0.4 to 0.5, where does it "take" that extra 0.1 from to keep the combined weights at 1.0? ...there's no telling. It might take an equal portion from each of the other bones... or it might not. It's hard to tell.

Either way, the short answer is: nobody likes weights.

Now for the REAL answer you've been waiting for... All the vertices that are moving are associated with (weighted to, or claimed by) the bone that you're moving. You need to select that bone, then select all the vertices that you want NOT to follow that bone, and set all their weights to zero (0.0).

The first step to setting weights is usually to only set 1 or 0 for each vertex, for each bone. So, you'd select an arm bone, then choose all the vertices you want to follow that bone, set their weights to 1, and set all other weights to 0. Do that for each bone. Make sure that each vertex is only following ONE bone.

Once that's done, you get into the SUPER tedious process of blending those weights across multiple bones. The shoulder area will follow BOTH the arm bone a little, and the neck bone a little. This makes for a smoother deformation when you move the arm. This is a tedious process that very few people enjoy.

Weight Painting is a process to do this kind of blending and weight association visually. Normally, there's a color gradient from red to blue that identifies weights from 0.0 to 1.0. In weight paint mode, you'll use a brush-like tool to paint and blend these colors somewhat more intuitively than picking individual vertices and typing in particular numbers. Sometimes one is better than the other. Which one is better really depends on the person and the application.

Note, that the second step is really only necessary for organic type deformations that need to be smooth. If the first step produces what you want (which might be the case for your low-poly person), then you don't need to do much blending.

Do some research on "weight painting" and it'll get you in the right direction.

I hope that helps!

$\endgroup$
  • $\begingroup$ I weight painted it but it still behaves the same. :( $\endgroup$ – Jakibah May 2 '16 at 20:53
  • $\begingroup$ If you can upload your .blend file, I'll take a look at it in a couple of hours. $\endgroup$ – Matt May 2 '16 at 21:15
  • $\begingroup$ .blend file $\endgroup$ – Jakibah May 4 '16 at 22:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.