muscle deformation

I’m working on an in depth movie project that will probably span several years before I have anything worth rendering beyond a couple hundred frames. But I am dedicating myself to this project, may ask for collaborative help down the road, and want to see this through.

On to the question. I have a character modeled up and mostly rigged, but I don’t like how the joints deform the mesh. He is a somewhat muscular built character, and I plan on showing this off in a couple shots. I’ve seen demos in 3ds and maya, of the simplicity of muscle deformation.

I took a look at blenrig, but to the best of my knowledge, it’s bendy bones and fine control bones on top of those. Someone correct me if adapting blenrig to my characters would produce a better result.

I want to start with the base rig, and then add smaller origin and insertion points for muscle shapes. then use an IK bone to scale the muscle in length, and bulge or deflate it with shape keys, relative to a global and local weight bearing variable. Global being which particular segment (forearm, bicep, and shoulder blade, for example) is bearing the weight, and local being how the load is distributed over each individual muscle based on which position the segment is in.

On top of that I want to add a shrink wrap layer to normalize to valleys between muscles, then shrink wrap the character mesh to that.

Another handy “feature” would be if I could find a way to then “bake” these deformation properties to shape keys, but I don’t know if I want to, because I would lose the option of making the muscles soft bodies for running or other fast moving actions.

I’ve been trying to think of a way to also use curves as vein lines, but I’ll decide whether or not I want to do that when I get the muscle deformation rig completed.

Looking forward to contributing to the community-

I’m not sure what the question is…

BTW, have you also read this thread?

i guess the question is if this is a usable solution to “proper” muscle deforming. Muscle predominance, size, shape, etc. change with the way the body moves. especially in the shoulders. Another good example of this being implemented would be the tops of the fingers, the way the tendons stick out or flatten, or slide.

The only way to answer this question is to build your experimental rig (at least a representative part of it) and try it out. True muscle deformation isn’t something most Blender users employ frequently, except perhaps those who are developing their own solutions to this goal, so it’d be hard to say “yeah, that’s the way to go.”

From the brief description you give, the basic premise sounds fine, but the real trick is in developing ways to quantify all the parameters you mention that determine the amount of individual muscle deformation – relative angle of attached bones, loading considerations, action of inertia under extreme motion, etc. Automating all that stuff amounts to a major simulation, it seems.

Best of luck with developing the idea, it sounds like it would be quite effective if you can bring it off.

EDIT: Some other considerations, assuming that you may be looking to make this system usable for other types of characters, is whether it can be adapted for different body types and gender. As a “single-character solution” it would be interesting, but if it could be used with various characters it would be extremely useful as well.

Thanks for the encouragement Chipmasque. As for relative angles, in theory if each muscle is attached accurately to it’s respective anatomical origin and insertion point from one bone to the net, then it should scale in proper portion and angle, and most of the pulling actions on that bone would be the same that it’s human counterpart experiences. As for load bearing, I believe i can assign a relative load direction to the section, and since muscles can only contract, the “top” side of the section would receive the center of the “bulge zone”.

I’m sorry I’m not well versed in getting my ideas across, but will try my best. I’ll get started on an upper and lower arm rig to test this out. I’ll post back with my results.

EDIT:double posted, sorry. wheres the delete button? If a mod sees this, please feel free to delete this double, thanks.

The real catch here is “in theory.” Back in Blender 2.44 when I first began work on Kata I tried a few rig experiments along the lines you describe, but found that there are not enough bone parameters “exposed” to do the trick in that version. For example, you can get a bone to change its length (scale) in a certain rigging setup (like a muscle contracting), but quantifying that scaling was, at the time, extremely difficult, because the “absolute” global worldspace scale of the bone wasn’t something easily determined. Same for bone rotations, relative and otherwise. In an IK chain, for example, the angles of bones (which are always relative to some coordinate system and at the time there were at least three to take into account) had to be calculated using BPython, and the calcs were tortuous at best.

From what I’ve read, I think this situation has been simplified somewhat in the later versions and in 2.5x, but it’s still not trivial to obtain such parameters as, for example, relative rotation between the humerus & radius/ulna in order to determine the proper contraction for a biceps muscle, or extension of the triceps. Hopefully once the 2.5x API id stabilized, it will be l;ess hassle to get such values, using simpler code than I had to use for the rig in Kata.

EDIT: Don’t know how much it would help, but you might be interested in looking over my Othello face rig (links are in my sig), which is designed to emulate facial muscle actions. Of particular interest to you might be the use of Transformation Constraints in V.2 of this rig, which has extensive user controls that work synergistically, in imitation of the complementary action of many of the facial muscle groups.