WIP - Detailed Rig

I’m currently working on a detailed rig (optimized for auto-paint and intuitive, flexible control).

Current progress (screenshots, motion demos, etc.) will be posted on this original post.

I’m having a great deal of trouble with auto-weighting. Blender returns an error when I try to parent my (symmetrical) armature to a (one-part, closed) mesh, but if I apply an un-subdivide modifier, it works.

What???

Blend

Yup, had the same problem a while ago, blender is sometimes quite moody. For me ti was enough to add subdivision surface modifier (didn’t need to apply) and then it worked I didn’t care any further and happily removed the modifier. You might want to check wheter your bones all have reset rotation and wheter “spine-bones etc” are exactly in the middle

Did so… No new results…

Why does it work with the decimated mesh but not the original???

┻━┻ ︵ヽ( ` д ´ )ノ︵ ┻━┻

Well, I am out of ideas then, sorry :frowning:
I am quite sure you tried all these, but other than that I’ve got nothing… Remove doubles, recalcute normals, applied mirror modifier.
Then you can try separating certain parts of the model trying then just to figure out which part causes the problem. Hair for example. You can then fix it, or just add it later manually.
Or if you are willing share the .blend and maybe we can figure something out.

The link under “Blend” in the top post should have the blend file (in a zipped folder). If it doesn’t work, let me know.

I don’t think automatic weighting is going to be a magic bullet in this situation.

Anyway. Are you sure there’s no duplicate verts in the model? That can be the cause of the “failed to find solution” error. Don’t just take the default distance that remove doubles gives you. Increase it a little and see if something starts connecting. Don’t go too far of course or it’ll start pulling too many verts together. After you do that try parenting with the armature again.

Edit:

After a quick look at the model, I tried remove doubles with a distance greater than the default. 0.0005

As far as I can tell, it didn’t do any visible damage. But it is quite a dense mesh in certain areas. So I’m not sure. The point is, the parenting worked without error after the remove doubles algorithm finished it’s work.

Hi lolwel21. I’ve got no quick fix for the automatic weights. Something I do notice is all the bones are in the head. What I would do is split the mesh at the neck, and try parenting just the head. If it works, join the body back to the head and remove doubles. Or, parent the decimated mesh, then use the weight paint, transfer weights tool, with nearest edge interpolated, to transfer the weights back to the original mesh.

Also, bind the rig to a cube, then look through the vertex groups it creates, and make sure that you don’t have anything set to deform that shouldn’t be.

Here’s something to think about. I went through a similar exercise recently, though probably not to the same level of detail. Something I found works really well, is parenting and connecting the eyelid deform bones to the eye socket mechanism bones. A T in the middle, and an L on the sides.


This way when the eye socket bones rotate, the eyelid bones rotate with them, and the eyelashes also rotate with the eyelid.


The link under “Blend” in the top post should have the blend file (in a zipped folder). If it doesn’t work, let me know.

Of course it works, I’m just blind, sorry.

Wow, didn’t expect so many bones in my face :D. The problem is caused by the eyesockets (the edge between outer and inner) and lips (the same spot). I am not sure why, just quickly remodel those parts and you’ll be fine.

Thanks for all the quick support! I’ll be working on debugging that model, and redoing the eyes’ bone parenting.
As I’m working, it’s becoming more and more apparent that putting very similar constraints on all of these bones is going to take SO LONG. Is there any way I can quickly change the target of multiple constraints, or do I have to do all that stuff one constraint at a time?

By the way, I’m considering trying to make a Rigify-based addon to generate this rig (once I make it, of course). Should I, or would that not have much benefit (when adjusting the rig for other characters)?

Yes you can mass re-target constraints… with Python.

Another quick question: is it possible to set the default value for bone head/tail sliders in constraints to 1 instead of 0? I find that I (almost) always immediately slide it to the 1 value.

For example, if I ctrl+shift+c ==> [bone a] stretch to [bone b], it always stretches to the HEAD of the bone (head-tail slider = 0). However, I always end up wanting it to be 1. Can I set the default value for this slider to 1?

I haven’t found a way. Again, you could script a custom routine for adding constraints.

I’m trying to reduce the number of bones (to reduce constraint-tweaking time), but I’m getting some REALLY WEIRD behavior from the Pivot constraint: When the pivot constraint’s influence is set to 1, it moves the bone to the EXACT OPPOSITE SIDE of the pivot point.

Why? Can I fix this?