Can you have multiple weight maps per object?

Hello,

My question stems from my experience with character deformations in Poser. (Don’t hate. It was a good first step to learning 3d.)

With joints in Poser, you have multiple spherical or weight maps for each type of rotation. For example, a leg would have a twist (z rotation), bend (x rotation) and side_side (y rotation) dial. Each rotation would have a separate weight (or spherical) map to help the deformation in that direction. This was nice because a leg deforms much differently when you move it to the side vs. moving it forward.

In Blender, it seams that I can only have one weight map per object and therefore only one map to control multiple rotations. While I can get decent results with weight painting, I am looking for more precision. My main area of concern is for body parts that have multiple axis of rotation such as the thighs and upper arms.

If multiple weight maps are not possible, what is the prefered method for precise deformations? Is it the use of shapekeys? For example, would I be better off making a x-positive shapekey and driving that value with the x rotaion of the thigh bone. (Basically, I would be doing clean up for what the weight map is not deforming correctly.) Then repeating the process for x negative positions and side (y axis) rotations? The only problem I see with this method is having some shapekeys not playing together well. I would need a way to manually reduce the value of each shapekey as well as having it automated.

How do the “pros” do it?

Thanks for the help! I know it’s a huge subject.

Hummm that’s an interesting question… I have never tried to place multipule weight maps on any of my objects…
and using it to solve for different mucle groups getting activated acording to which axis rotation occurs sounds like a great way to do that…

I don’t have the answer for you but I’m very intrested in hearing from anyone who has some input on this as well as yourself…

Thanks for bringing the subject up…

Hi,

you can use vertex weight related modifiers, they’re handy. What I would mostly recommend though is to have bones that drive other bones depending on which axes they rotate on - basically break down every important axis into its own “dedicated” bone, with proper weight painting, then you barely need any shapekey at all.

I’m not an expert though, and although we don’t have one -yet- in Blender, a muscle system would be ideal.

Thanks Hadriscus. I’ll look into the weight modifiers. I’ll need to do a few experiments with the dedicated bone per axis idea. It may be over my head, but maybe I’ll stumble on to something.

I’m far from an expert myself, but I used this technique for things like the bulging of the trapezius when the shoulder is raised. To simulate muscle deformation you can always use a “condition” as driver expression, so that the biceps bulging (actually a simple bone scaling) happens only when two or more conditions are fulfilled, say, 1.the forearm is bent and 2.the wrist is twisted sideways (try it, this is more or less what happens).

That being said I’ve never used Poser and the multiple weight maps may be a better approach…

Hadrien

Hi.
From my experience, shape keys are the best for precise deformations (in blender). Although I used them for simple things like bend elbow or arm down/up, so I haven’t noticed any “quarrel” between them and they worked pretty fine for me. If for your deformations they are not working as you expected, unfortunately I dont know any solution. If you want having them automated, you can’t manually reduce/increse values and vice versa.

Btw: Blender got add-on for muscle system made by blender user, but it still need to be improved. Check this out http://www.blendernation.com/2014/07/08/add-on-blender-muscle-system/

Good luck ! :slight_smile:

Although this can be done and reasonably easily in Blender I have to tell you it is not usually what most animators are doing. The results are very precise but perhaps more precise than needed.

If you are not familiar with bones I suggest you get quite familiar first and then look at Nathan Vegdahl’s Humane Rigging tutorials to learn how to use hidden layers of ‘mech’ bones that are driven by the pose bones. Every bone can, by the nature of Blender’s animation system have its own vertex group and every vertex group has its own weight map. So it’s reasonably simple for the ‘leg’ pose bone to have its x-rotation copied to mech bone A and its y-rotation copied to mech bone B, which are the bones that then actually deform the mesh according to the weights assigned to them. A good rigger can make it seem like there’s only one bone that you are moving, whereas there may be something like four or five or even twenty for detailed muscle rigs. The reason I say this is NOT how it’s usually done is that by this point (in the budget) it’s easier to have the bones drive shapekeys and not deform the mesh directly.

Note that shapekeys can and should also use weight groups, pretty essential if you plan to mix armature deform with shapekey deform animation.

Sorry if this is too detailed. Or not detailed enough. Just my 2 cents.

Thank you all for your input! There are a lot of good ideas here.

@ korinek Actually you can have control over automation as well. There is a parenting trick you can do to have both. It’s explained in Humane Rigging by Nathan Vegdahl. (Thanks, DruBan for bringing that up. Awesome tutorial series.). Basically you create a parent and do your automation on that and use the child bone for your control.

@ DruBan Good points. It will not be worth the extra work if I can get the same results using shape keys.

I think I have my method nailed down. I’ll use shapekeys for most of the deformations. While the muscle rigging looks intriging, I think I’ll stick with a mesh deform cage for my muscle bulges/stretches for the time being.

I appreciate all the feedback!

A good way to go is use the mesh deform and ‘apply as shape’ when you like it.

@Hadriscus

To simulate muscle deformation you can always use a “condition” as driver expression, so that the biceps bulging (actually a simple bone scaling) happens only when two or more conditions are fulfilled, say, 1.the forearm is bent and 2.the wrist is twisted sideways (try it, this is more or less what happens).

Even though I have been using drivers in blender for some time now I did not realize you could use the ‘condition’ statements with them… this is very interesting… have you got any refereneces to any more information on using drivers this way?

I think Atom (?) taught me that you could link to a script file inside of a driver, with if’s and so’s and all, but I’ve hardly ever used this because I don’t know Python syntax beyond the most simple expressions.
What I meant by “condition” though, is having one value (usually remapped between 0 and 1) multiply the other so it acts as a “trigger” - then you can go and draw a curve that maps the result of this expression to any desired value. It’s a bit abstract when talking about it… I hope you get the idea. I’ve got a blend file at hand as an example if you like.

Hadrien

since you can define a lot of variables and each one can have an expression in the definition you really haveall the elements of a multi line function right in the driver panel.

What would be awesome is having this in nodal form, interoperable with shaders and modifiers and constraints. Aaaaaaaah…

@ Hadriscus

What would be awesome is having this in nodal form, interoperable with shaders and modifiers and constraints. Aaaaaaaah…

yes… I brought this up one time here but the discussion never really got started…

I was thinking in terms of perhaps rearranging many of the drivers/rigging tools in blender to have a nodal system like what is used in blender now for buliding Materials, Shaders and Compositing…
I think it would be much eaiser to keep track of even simple things like which bone is parented to which… but then you could also quickly connect drivers, constraints, modifiers, shaders, actions… etc…
Just by grabbing their node and plugging them in…

I think we all appreacheate how each the visual format of building Materials with nodes is… (I guess it doesn’t suit some… but I have certainly come to see the merits of it)

that would be cool… wish I knew more about programing to get something like this started…

I have taken some python training classes back when I was first Training in XSI for a company I was doing work for … and I even used it a bit while using XSI but I have not touched it since… (this had to now have been 10 years ago? 2003 or 2004? I suppose?..

@ Hadriscus

What I meant by “condition” though, is having one value (usually remapped between 0 and 1) multiply the other so it acts as a “trigger” - then you can go and draw a curve that maps the result of this expression to any desired value. It’s a bit abstract when talking about it… I hope you get the idea. I’ve got a blend file at hand as an example if you like.

Yes… I posting a file with an example would be great!

Definitely, a node graph is great to visually keep track of everything. I’m hoping Lukas Tönne is thinking hard about it :slight_smile: - but somehow I doubt it’s on the list for Gooseberry. Probably too much of an undertaking. Lukas already did a mockup of modifier nodes a while ago, it’s on his youtube account, very cool stuff.

XSI is (was) fully nodal right ? Never tried it but I tried Houdini for a short while, the nodal approach is exceptionally powerful and at the same time very complex, difficult to approach.
I think many artists have trouble getting started with Python because coding is such a rigorous discipline - I know that’s what I struggle with. Until now I’ve kept my head above water by watching the Python console and gathering commands to make clumsy macros, but sometimes it’s not enough.

Example here :
http://www.pasteall.org/blend/30925
Two controllers : the “slider” thing on the right, and the “spinner” thing (four little squares) around the mesh.
So there are :

  1. one initial shapekey driven by one value : “slider” position from left to right
  2. a second shapekey driven by two values : “spinner” rotation and the previous shapekey’s value between 0 and 1
  3. a third shapekey (a cosmetic correction) that is activated only when the spinner is fully spun and the slider left at zero

By the way, thanks for your comment, much appreciated !

Definitely, a node graph is great to visually keep track of everything. I’m hoping Lukas Tönne is thinking hard about it :slight_smile: - but somehow I doubt it’s on the list for Gooseberry. Probably too much of an undertaking. Lukas already did a mockup of modifier nodes a while ago, it’s on his youtube account, very cool stuff.

Great! I’m checking his youtube channel now…

XSI is (was) fully nodal right ?

yes… If I had the funds to keep up a subscription to XSI I would be using it on a regular basis… (I still have and use from time to time an old copy… version 6) However I kind of gave up on it when AutoDesk purchased it from Alias… I’m sure at some point it will get completely phased out and and intergrated into Maya somehow… which to me is crazy… Maya is pretty clunky compared to XSI… at least when it come to character animation… but then I suppose I’m a bit of an XSI fanboy in the end… but I only got that way after having used many other softwares before I picked up XSI… Lightwave , Maya, Studio Max… XSI just too me seemed to put them all in the water… but I think it just fit the way I work… I know some guys who can’t stand to use it… but anyway… that’s all off topic…

I spoke with someone a while back (it’s got to be at least a couple of years) about a problem I was having with rig constraints. One of them wasn’t working as I expected. But to get to the point, I was told that the rig constraint system was written by someone who is no longer available and that’s why constraints don’t get any real attention (fixing, rewriting, etc.) Further, since no one in the current team really knows much about constraints, it might be a bit of a stretch to do a GSOC project to kick them into shape. No mentor, no GSOC, I’m guessing.

All this is to say that before rigs, constraints and drivers can be nodalized (spell-checker says I’ve invented a new word! :slight_smile: ) I think someone would have to come along who can understand what’s there… or maybe even rewrite the entire system.

It is, however, a great idea, so great I’ve made this adjective bold, italics and underlined.

And, like you, norvman, I wish I had the chops to pitch in on this.

Hm interesting talk, but what if the bones just “only” got a GUI update instead, just like “dials” as in poser poser ?
And maybe some more readable options
like scalable, rotate x, y, z, as based upon previous bone; and have limits in x, y, z percentage for autoik have a simple driver option; with maybe some extension to get easer ‘group handlings’, like grasp, turn head, smile, walk.
I can imagine they could popup when clicking the bone / and /or beeein on the right view side (inside)panel.

but what if the bones just “only” got a GUI update instead

yah… we hear yah… that’s kind of what we are saying about Nodalizing it… many of us have found that using the Node system for building textures to be so intuitive that it just seemed to be a natural extention to rework the “GUI” of Nodes into Rigging, Constraints, and Modifiers… if you understand where we are coming from on that…