PDA

View Full Version : Weird deformations using bones



durochde
10-27-2006, 07:50 AM
Does anyone have a solution for this? I set up 3 bones on a simple model. Each bone has a weight map. When I activate the bones my model either gets deformed or expands to 3x it's original size. I tried this several times, even using skelegons, and I got somewhat simular results.

Thanks :D

Sensei
10-27-2006, 08:42 AM
Once, friend of mine had similar problem.. I started investigating and it was caused by using multiple weight map values for different bones- if you add weights from the all bone's weight maps, it must be equal to 1.0, not f.e. 0.9, not f.e. 3.78, but perfect 1.0.. There's option to normalization but I would not count on it, and I bet it slow down animation and object redrawing as it must be called for each vertex.. And you can't use normalization on just 1 bone, and on 2,3,4 not! It's all or none.. Otherwise it has no sense..

It's important to note that when there's weight map used by bone, value 1.0 means "copy 100% of bone deformation", but if you have transition area between two bones, and weights are 0.7, 0.5, 0.3, second in order bone must have 0.3, 0.5, 0.7.. and it'll take 70% from 1st and 30% of 2nd bone, and so on..

You gave me idea to write tool that will check all bone's weight maps and tell that something is wrong and where is wrong..

Dodgy
10-27-2006, 08:58 AM
Open the object in vertex paint, there's a function in the edit menu to normalize weight maps. This does all the weight maps so that their sum on each point is 1, which is why I use this instead of Normalize in the modeler menus. Otherwise, turn on Normalise weight maps for each bone.

durochde
10-27-2006, 09:14 AM
Thanks for the information guys. I went back and took a good look at my weight maps. I found that I had overlapped my upper leg weight map with my lower leg and visa versa. I'm not sure how I did that but I did. When I redid them the leg worked properly. I will use vertex paint to normalize my weights to 1 and also be looking for your plugin Sensi.

:D

Sensei
10-27-2006, 09:38 AM
We've made ShowWeights http://showweights.trueart.pl plug-in that show all weight values at once numerically in view port, you can even keep it running parallel to modifing weights or doing anything else in the same time! Fully intregated with LW. LW9 version has additionally unique in LW feature- showing Catmull-Clark Sub-D Edge Weights, you won't know exactly what edge weighting is on edge without this tool.. :)

http://www.trueart.pl/Products/Plug-Ins/ShowWeights/Graphics/ShowWeights_3.png

Do you see ring of 0 values on wolf body? It means that vertices were mapped to 0.0, if no value is showed it means it's unmapped.. Some game engines, or broken 3rd party plug-in suffers from this, and without this tool almost need recreating the whole weight maps, because you can't know which vertices were mapped accidently to 0.0 (LW interactive tool Weights is broken and map vertices without asking) as Weight Shade preview mode doesn't have so precise information but simple color..

durochde
10-27-2006, 09:51 AM
I'm revising my previous post. It seems that the problem (atleast for me) is when I'm using bones directly in Layout. I add my weight maps, etc. but when I activate the bones my model goes crazy. Now, in Modeler, when I use skelegons, apply the weight maps to each skelegon, send it to Layout and convert skelogons-to-bones everything works. My model doesn't go crazy. I checked all the Property settings for each bone and everything is activated and working. Not sure if it's my model that's the issue, something I seem to be doing wrong or some strange Layout Gremlin. Just thought I would let everyone know.

:D

Sensei
10-27-2006, 09:55 AM
Show us your 1st object that's going crazy (with scene, it's where data about bones are stored)..

CMT
10-27-2006, 10:10 AM
Sounds like it may be something to do with the bones recorded rest position or size. If the bones before they are activated are larger than the rest position/size, then the model will be recalculated and change.

durochde
10-27-2006, 10:16 AM
Part 1 shows the model before the bones are activated. I used the bones directly from Layout no skelegons. Part 2 shows what happens when I just activate the lower leg.

D 38280

38281

:D

durochde
10-27-2006, 10:20 AM
Revised part 2

38282

:D

durochde
10-27-2006, 10:26 AM
CMT:

You have quite the artistic ability.

:D

Sensei
10-27-2006, 10:26 AM
Do you have weight maps also on 2 bones above leg? And they've switched on normalization?

durochde
10-27-2006, 10:28 AM
The 3 bones are Anchor, Upper Leg and Lower Leg. The Anchor does not have a weight map. The upper and lower leg bones do.

:D

Sensei
10-27-2006, 10:32 AM
Remove Anchor..

durochde
10-27-2006, 10:41 AM
I got the same thing as part1. Part3 has both bones activated.

38283

:D

Sensei
10-27-2006, 11:00 AM
And now it looks like wrong Rest Position and Rotation.. Press 'r' to Record bone Rest Position.. It's in Setup menu, Modify, Orientation..

SplineGod
10-27-2006, 11:57 AM
Are you using weight maps for a particular reason? :)

thedott
10-31-2006, 07:31 AM
SplineGod, so what's the best way to keep from having to use weight maps? Holding bones? Or, is there any other way to limit a bone's influence to a specific region so that another part of the mesh isn't affected (e.g. the arm bones influencing the character's body when they're moved to the character's side)?

Dodgy
10-31-2006, 07:55 AM
I use hold bones, or if you want something really isolated, move it away from the mesh, then bone it.

thedott
10-31-2006, 08:37 AM
Dodgy, thank for the tips.

SplineGod
10-31-2006, 09:01 AM
A lot of issues can be avoided by dealing with them up front. I tend to model a character so that the limbs and fingers are somewhat spread out. That way I can avoid having to use weight maps to fix bone cross influence.

Once youve got your character modeled, add in the basic bones you need and start testing deformations. Test the deformations on a frame other then 0. When you see problem areas go back to frame 0 and add/rest additional hold bones. The nice thing about hold bones is that they can be animated too.

I like weight maps but only as a last resort or used in as simple a way as possible. Multiple bones can be assigned to the same weight map too. This helps to keep it simple. Weight maps can easily make a simple task much more complicated. :)

GregMalick
10-31-2006, 10:29 AM
Hi Larry,

(Assuming you can't use a morph) isn't it true that when you need to rig an eyelid you need to use a weightmap?

This is the one example I'm aware of.... :D

SplineGod
10-31-2006, 11:03 AM
You can rig an eyelid with a weightmap if you intend to use a bone to make the lid open/close. You can also blend two morphs to open/close the lid too instead (one to morph the eyelid open/closed and the other to correct the linearity of the first morph so it moves over the eyeball properly).
You can also use a weight map as a mask to only allow only that part of the geometry to morph.
I do use weight maps for lots of things. I try and avoid or simply their use when it comes to pinning geometry to bones. :)

thedott
10-31-2006, 11:10 AM
Thanks Larry! That makes a lot of sense, and I see why because it's such a pain to define those weights properly on the mesh.

(Btw, I have your "Rigging: The Definitive Guide." I haven't gotten all the way through it, but it's a great resource. Thanks for taking the time to produce it!)

Daniel

G3D
11-18-2006, 07:57 PM
A crab or insect where some parts move in a rigid way, like a whole leg or body segment, but bends and squishes at the joints. I think in that situation you would need weight maps and adding holding bones would actually be more complicated. I'm interested in other users solutions for stuff like this.

SplineGod
11-18-2006, 09:01 PM
Even with something like crab legs you can still get away with bones without necessarily having to use weight maps. Hold bones still work fine in many cases plus you can use the limited range setting on bones. If weight maps end up being used they can be used in simpler ways. All the crab legs for example can be one weight map and all the bones in the legs can be assigned to it. Its pretty easy to mass assign bones to a single weight map in the scene editor. :)

Sensei
11-18-2006, 09:20 PM
That makes a lot of sense, and I see why because it's such a pain to define those weights properly on the mesh.

That's why we made ShowWeights plug-in http://showweights.trueart.pl..

G3D
11-19-2006, 06:27 PM
Even with something like crab legs you can still get away with bones without necessarily having to use weight maps. Hold bones still work fine in many cases plus you can use the limited range setting on bones. If weight maps end up being used they can be used in simpler ways. All the crab legs for example can be one weight map and all the bones in the legs can be assigned to it. Its pretty easy to mass assign bones to a single weight map in the scene editor. :)

Could you post a link with a good example? I'm doing something like this now and would like to see various ways of doing it.

SplineGod
11-19-2006, 07:31 PM
which one? Most of what I mentioned is pretty simple to test out. Try on something simple.

G3D
11-19-2006, 07:42 PM
which one? Most of what I mentioned is pretty simple to test out. Try on something simple.

isn't exactly simple? A crab isn't simple. I thought about what you wrote in your post ... I think you really do need a way of binding vertices to the bones on certain areas. If you use bones with no weights, it will look like a rubber crab. Crabs hard parts that are very rigid, spines etc. The only flexing rubber-like parts would be around the joints. I'm still not sure that a bones only approach would work if you want to make a realistic crab, bug, etc.
Like I wrote, if you could post a link to a realistic crab animation done with bones only, I'd like to see it. (and the setup, of course) It would really help.
Thanks!