Home Technical Talk

Blender 2.7 Issues with rig, weird deformities.




Hello, I am new to rigging and 3d animation in general. I have been following different tutorials for this same mesh for months on and off and end up with this result every single time. I am determined to figure out what the issue is and how to fix it.

Okay so, I'm not entirely sure why it does this whether it be the weight paint (i did use automatic weights), the vertex groups, or my topology as it is low poly. Either way it really seems to mostly effect certain bones, mainly on the left side. As you can see the arm bones on the right seem to function good as well as the spine bones as depicted above. The leg and left arm bones, however, seem to behave weirdly. The right leg bones deform weirdly and have influence over the left and vice versa, and the left arm bones also deform weirdly and have influence on vertices on the head. Also, when parented the mesh to the armature with automatic weights, the whole mesh has no weight except on the foot... not sure why lol but if worst comes to worst I'll do the weight paint manually but that probably has something to do with my issue.

Anyways, if someone could help me out, give some tips for the future or point me in the right direction I would appreciate it a lot, I've been dying to figure this out.

Replies

  • pior
    Offline / Send Message
    pior veteran polycounter
    The main thing is that you have to fully understand how vertex groups work.

    - Unlike most other apps, the weight editing in Blender is not always automatically normalized. If a vert has, say, a .5 influence within a given vertex group (say the upper arm), and .5 influence within another (lower arm), if you set its value as 1.0 for the upper arm it will *still* have the .5 on upper unless you proactively perform a normalization. Similarly, if a vert is being influence by an undesired bone, simply fully setting it to 1.0 for the good bone will not solve/remove the other/bad influence. You have to set it to 0 there manually, or use the normalize function in the weight painting toolset.
    - Automatic Weights is a very useful feature, but in a case like this you want to perform that using an alternate version of your armature, without any of the extra bones (like the one you have here on the floor). And then once done get rid of that temp armature and assign the proper one.
    - Now given the simplicity of your model you can do almost all the work in a few minutes by manually assigning values to the bone vertex groups anyways. You just need to understand that you can create these groups by hand in the first place - all they need is to be called just like the bones, and that's all there is to it really. This makes weighting extremely more powerful than in other 3d apps imho, because that means you can do all kinds of mesh editing without ever losing the weight data. It's great.

    In short : before even getting into the features of painting tools you have to be 100% comfortable with vertex groups as this is really where everything *actually* happens skin weighting wise. The weight painting tools are just a higher-level way of editing them.

    (by the way, what you are dealing with here is not a "rig", it's just an Armature in Blender terms. A rig would be the optional system on top of that, letting you control the armature with advanced handles, controllers triggering constraints and drivers, and so on).
  • crewsjp8
    Hey, thanks for the reply I greatly appreciate it, and thanks for pointing me in the right direction. I was stuck for a good while trying the same thing over and over. I'll try to fix it now!

    One more thing, by chance do you know any good resources for 3d animation in blender? I feel like YouTube videos can only take me so far.

    EDIT: Probably should've gave the vertex groups a look, really I just forgot about them since I've been gone for a few months. I see now that the temp is only on the toes because that was the only vertex group selected, when I look at the groups that are not behaving properly I see where the weight paint for that group is kinda scattered, example: LowerArm.R has weight on the head (below).

    Also, what do you mean by alternate armature? Just remove the bone on the floor and after that apply automatic weights? Or removing the entire armature and making a new one and do the weights manually? Sorry if I'm not understanding I got a bit of fog brain lol. Either way I'm sure I can figure it out eventually, the information definitely brought me further so thanks again. Also happy new year!

  • pior
    Offline / Send Message
    pior veteran polycounter
    Yeah, what I mean is that if you rely on automatic weights then sure enough you don't want any of the bones that are not supposed to contribute anything to the character anatomy (like that root floor bone you seem to have) to be part of the automatically generated influences. So one good way to do that is to have a duplicate of the armature with only the "anatomy-relevant" bones and use that for the auto weighting. Then get rid of it, and assign back the proper, original armature. Either that, or select the corresponding vertices being affected and set them as 0 within the group of that undesired bone.

    To fix that head issue here, just loosely select all the verts from the right hand and lower arm, invert the selection, and set that to 0 inside the LowerArmR group. it's a faster and cleaner way to remove the weighting than using a weight painting brush.

    Regarding animation itself this guy posts quite regularly :
    https://www.youtube.com/c/TheAdventuresofLollypopMan/videos
  • birb
    Offline / Send Message
    birb interpolator
    About joints, usually you'll want them to have at least 3 edge loops so when it bends the middle loop preserves some of the silhouette of the joint. Otherwise you'll have to go out of your way to keep them from squishing with the chance of it looking like crap anyway, even if you happen to create a corrective shape key (aka blend shape) because you will have few vertices to work with.

    To keep a non-deforming bone such as root or IK targets from being picked by auto weight before doing any skinning select it, scroll down the Bone Properties panel and uncheck Deform. If you already auto weighted and intends to keep it then hunt the offending bones in the vertex groups and delete them.

    It can be easy to mess up weights and end up with them affecting the opposite limbs when mirroring and symmetrizing things. The less error-prone workflow for weights when doing so is to:
    1. Create the full mesh, mirror it if necessary.
    2. Do just half of the armature.
    3. Symmetrize it in (Armature) Edit Mode.
    4. Skin just half of it, double check if bones you want to symmetrize are suffixed with L or R.
    5. Duplicate their vertex groups, mirror them then manually change their suffixes.
    ...with the minor obstacle of in case of auto weights having to delete the auto weighted half you didn't tweak before getting into the vertex groups part.

    This is an operation that Blender should have as a single operator but doesn't for some reason. I'm sure there are add-ons out there to do the same to all L/R suffixed bones but I can't recommend any since I ended up writing my own script.


    If part of the mesh is incorrectly weighted to the wrong bones and you don't want to redo the rig try to strategically categorize the bones into groups like torso, limbs, legs and clean up the vertex groups from weights of different groups, example: Select the approximate vertices which should be weighted to the bones of an arm, invert the selection then go through the vertex groups of other categories like spine, clicking on each one and hitting "Remove". Don't assign weight 0, just remove. After that clean up the weights of bones in the same category. Yes, it's repetitive work and something you might want to script or narrow down by testing the bones to determine which bones might have contaminated which areas.

    Finally, there are two ways to auto weight, the default and the envelop bones way. The default suffices to most needs, but sometimes you may have issues with thicker meshes where the surface radius is so large around the correct bone the surface ends up being assigned to a different bone. In those case you can use envelope bones, tweaking their radius to wrap around the intended regions.

  • crewsjp8
    I might just re-make the armature as it wont take long and it's better for me to re-do it, regardless this is really good information. The most important thing was for me to figure out why it was misbehaving and I think I got it now so thanks very much for taking the time to explain it, both of you!
Sign In or Register to comment.