Metaballs and armatures... are they freinds?

Here is a student work. He built his mesh using metaballs and mesh shapes. He joined them all, added an armature, and we get wierd distortions in the shoulder when we move the hands in pose mode.

Thanks!CharacterWithBones.blend (6.41 MB)

Metaballs really have nothing to do with it, when they were all joined (or at some point in there) the metaballs were converted to mesh objects. So the whole thing is one mesh object and not behaving like a metaball. Anyhow, I’m not seeing any weird distortions, per se, when moving the hand. While it does look bad, I see blender doing what it should. Have a look at the character in weight painting mode:



The whole ‘bad deformation’ area is weighted 100% to the shoulder bone, so it moves as the shoulder bone does, which causes it to look bad. To fix this, and other problems the student will find like this, the weight painting needs to be reworked, mainly it needs a lot of blending. Parts of the mesh that are blue in color have 0 weight, parts that are red in color have 100% weight, or 100% connection to the bone. What is needed is some verts to be weighted less to the shoulder bone, and more to the center spine bones. The entire left side of what is red in that screenshot should be blue, not influenced by the shoulder bone at all. Then the paint should make a progression from blue, to lighter blue, to green, to yellow, and finally to red, each color change represents more influence from the bone. The bottom of the pectoral muscles likewise doesn’t want to be influence by the shoulder bone, they should be weighted more to the spine bones. This red area also needs to blend into the upper arm bone. I would think the only area that should be red would be around the tip (small end) of that shoulder bone.

When weight painting, it’s possible to paint one area red for 1 bone and red for another bone. That area can’t be influenced 100% by one bone and 100% by another, it would be a 50/50 split. By default, blender doesn’t show this, so when weight painting, in the weight paint tool shelf, enable ‘auto-normalize’.

Another problem I noticed:



When the hand bone is rotated the hand shrinks. This is a scale/rot issue. In object mode, the scale of the mesh should be 1, and the rot of it should be 0, for all axis of both those. Same for the armature in object mode. They are not, to fix this, in object mode with one selected do a ctrl-a -> apply scale and rotation (might be one option, or 2 one for scale and one for rotation, don’t remember). Repeat for the armature in object mode.

Fix this problem first, before re-weight painting, as problems caused by this might be confused as weighting problems. If when doing the above steps, the mesh ‘wigs-out’ and goes crazy, remove the armature modifier from the mesh. Finish the steps above and re-add the armature modifier to the mesh.

Randy

Thanks So much for your thorough answer! You are awesome!

“When the hand bone is rotated the hand shrinks. This is a scale/rot issue. In object mode, the scale of the mesh should be 1, and the rot of it should be 0, for all axis of both those. Same for the armature in object mode. They are not, to fix this, in object mode with one selected do a ctrl-a -> apply scale and rotation (might be one option, or 2 one for scale and one for rotation, don’t remember). Repeat for the armature in object mode.”

—This didn’t work for him. We are to reset the scale and rotation after doing ctrl-a correct?

We’re lost on the hand shrinkage.

Ctrl-a applies the scale/rot, or another way to think of it is resetting the scale/rot, and you are correct that’s not the problem. When I saw the problem, I just assumed it was the mis-match in scale & rotation between the armature object and the mesh object, seen it a few times before…

So I took another look, and here’s what is really going on, (and this kinda links to what I said previously), the ball portion of the hand is weighted 100% to the hand bone, and 100% to the fore-arm bone. In blender, all weight adds up to 100%, or 1. Say a vertex is weighted 100% to one bone, and 100% to another bone, it’s actually weighted 50% to one and 50% to another. If a vertex is weighted 25% to one bone and 50% to another bone, then its actually 33/66%. Vertex weighted 25% to only one bone, is weighted 100% to that bone.

Anyhow, the ball shaped part of the hand is weighted 100% to the hand bone, as I think it should be, and 100% to the fore arm bone, as it should not be weighted at all to that bone. So when hand bone is rotated, it half wants to move with the rotation of the bone and half doesn’t want to rotate, because the fore arm bone isn’t moving. This kinda makes it look like it’s shrinking, hence my error, but it’s not, it’s half just not moving.

Two tips for you, I found the problem by being in edit mode for the mesh, selecting one of the vertices in the ball shape, and in the transforms panel (t-key, the panel in right side of the 3d view) there is a sub-panel that shows what vertex group (or bone) that vert belongs to - it’s scale is 0-1. You’ll also need to add a few loop cuts to the gray colored area of the hand. This will allow your student more vertices to smoothly blend the paint from red, in the ball area, to eventually blue at the jagged part of the gray section. When you are weight painting, it may look like you are painting a mesh, but you aren’t, you’re actually weighting vertices. That area will need more verts to blend the paint.

Randy

Hi. So I’m now having a bit of a problem with the mesh itself (At least I think that’s the problem with it). Anyway, it all really started when I was trying to fix the Pole Rotation of the arms since 90 and -90 degrees (I was told it’s usually one of those two) weren’t working. I fixed it so that the arms point to the Pole Targets as they would normally look but unfortunately, it deformed the appearance of the shoulders. I dunno why.

Also, for some reason, even though I have all of the Pole Targets and fancy stuff like that on the legs, the Pole Targets for them don’t affect them for some reason. It’s probably some little thing I forgot to add or something but if anyone has time to check it out after the shoulders issue, that would be awesome! :smiley:

Thanks in advance!

Attachments

CharacterWithBonesBeta.blend (6.41 MB)

OK, quick fix for the arms… Select the armature and go into edit mode, the armature should now be in it’s rest pose. To see what is going on here, in the armature panel, turn off the display of bone’s names, and enable the bone’s axis display. Now at the tip of each bone, you’ll see three arrows for the x,y,z axis of the bones. All the arm bone’s axis need to match each other, that is if one bone’s z-axis is pointing up, they all need to be pointing up. The z-axis pointing upwards is generally best. Mis-match of the axis can cause problems later when animating. So select the shoulder, upper arm, lower arm, & hand bones for one arm. In edit mode in the 3d window, do a ctrl-n to recalc the bone’s roll, from the pop-up menu, choose the z-axis option. Now all 4 bones should have thier z-axis pointing upwards. Now, in pose mode, select the bone with the ik constraint, in the constraints panel, adjust the pole angle to 0. Now you’ll notice a few bone’s axis are pointing downwards. So adjust the pole angle to 90, you’ll notice that improves it somewhat, but the z-axis still isn’t point upwards in pose mode like it does in edit mode, so go ahead and adjust the poll angle again by adding another 90 degrees to the 90 that it’s at now, giving you a poll angle of 180. Do this in the steps I outlined so you can see how the changes made affect things.

Now one other thing I noticed. You have the chain length for the ik constraint set to 3, so it includes the shoulder bone as part of the ik chain, you’ll probably want to set it to 2, just the upper & lower arm bones. Having the shoulder included in the ik chain will make it very hard to pose the character’s arms down at it’s sides. Go ahead and try to move the hand controller down beside the leg bones and you’ll see what I mean.

I’ll look over the legs later tonight after work, but this should keep you busy for a bit.

Randy

Turns out I was sitting in class and had just figured out the problems with the chain lengths of the IK bone. I fixed it and did every thing you instructed and it looks great. There’s still a small problem that I see. When I select the hand bone in pose mode and hit G to move it around, the “elbows” of it don’t point to the Pole Targets as intended. Which leads me to believe that I’m doing something obvious wrong. Again. Haha.

Anyway thanks for all of your help I really appreciate it x)

Cool, so you’re really interested in this stuff? If you’ve figured the ik thing out yourself and you are interested in 3d, this is a great place to find help and help others.

So you worked on the arms and have problems, so forget them and fix up the legs. You have the same problem you had with the arms, 3 bone chain length and it should be 2 in the ik constraint. After fixing that first, if you grab the foot controller and move it upwards, the knee goes off the the side of the character. So just repeat what you just did with the arms, it’s the same thing, only it goes up/down, not left to right. Make sure all the bones axis line up with the next bone up the chain.

Then to fix the arms, you’ll need to upload the file you’re working on for me to look at, but do the legs first - so if you have problems with them, I can look at both at the same time. If my time permits…hahaha

Randy

Okay. So I fixed up the legs and the arms so they actually look alright with the Pole Rotations. The mesh looks like it should but the bending of the arms and legs is a little screwy still. The “elbows” and “knees” of the mesh aren’t facing the Pole Targets as they should and when the elbows and knees do face the Pole Targets, the mesh becomes deformed.

Here’s the .blend file:
CharacterWithBonesBeta.blend (7.18 MB)

OK, here’s what happening, blender’s ik isn’t the best, I’ve had problems before. For the ik to work better, the chain needs a bit of pre-bend to it. Lift the right foot controller and the knee goes off to the side, tab into edit mode and grab the ball that connects the two leg bones, move it forward just a little bit so you can see it’s slightly bent, go back to pose mode and the knee should point at the target. The left leg has it’s z-axis pointing in the opposite direction of the right leg, so if you pre-bend it, the knee will bend backwards, not to the front of the character. so you need to adjust the roll of those bones, or adjust the constraint.

I prefer the arm’s z-axis to point upwards, and the leg’s z-axis to point forwards. So I would adjust the constraint on the left leg to correct that problem, then I would adjust the bone roll and constraint on the right leg. If the ctrl-n -> z-axis trick doesn’t work on those bones, select them one at a time and in the transform panel (right side of the 3d view) there is a box that shows the bone roll and you can enter values in there. select the left upper leg, look at it’s roll value, select the right upper leg and enter that value there.

Same thing for the arms, add some pre-bend, it won’t affect the character’s pose in pose mode. From here on out, I see bad deformations around the shoulder/chest/upper arm area. That can be cured by weight painting. Best way to do it is to pose the arm so the character looks bad, get into weight paint mode and select the shoulder, now paint the parts the moved when the upper arm moved and made the character look bad.

If you need help in weight painting, I’ve a couple of videos up describing how to do it. If you want links to the videos, let me know and I’ll post them here.

Randy

The armature and mesh both look perfect and work as intended now! Thank you so much for all the help!