Have issue with Eyelid rig.

Each eyelid has 17 bones, this is one bone number 14 in alignment with its verts, no matter what weight paint value i give the verts 0.001 to 1, they all act like value 1. Is this a bug? how do i fix? tried for hours… Because atm when i animate an eye blink based off the center of the eye it moves all the 3 edge loops down which works but i want them to be smoothed out over the blink by a % in align with the weight value given not just ‘1’.

I’m basically trying to recreate this in blender: https://eyad.tv/home/advanced-rigging/

with all 3 edge loops bugging out as value 1(having to move bottom bones out on y axis due to only 1 face):
https://media.giphy.com/media/l1BgRZZutPI98jiec/giphy.gif

Vertex weights are a ratio, not absolute values. To have a weight of 0.1, it has to be weighted 0.9 to something else. In the case of eyelids, that something else would usually be the head bone. If you only have weights on one bone, it is the only bone that affects the vert. i.e. 100%

Ok thanks for that SkpFX i understand now. what about a rectangle subdivided with 1 bone on 1 half end and you curve it at the end and lower the mid values, its basically the same thing but the unassigned weight values on the other vertices on the rectangle dont move because their not assigned and also not assigned to another bone but that works fine but this doesnt? :stuck_out_tongue_winking_eye:

So if i counter the value of all the vertices i use for the 17 bones on a single head bone as the opposite that would work? i dont need to make 17 other bones? what about if i want the head bone 100% everything on the head but these eyelid bones to overlap on top of the 100% value head bone and move vert 1 100% vert 2 66% and vert 3 33% how will that work when there is no bone counter with exact values?

Now i have an issue where 3 vertices are invisibly set to 1 weight on neck even though its painted off, had no paint originally and even if i manually set the vertices to 0 weight value to the neck bone vertice group the verts still animate with the neck??? why? how do i fix? definitely bug this time?

No that doesn’t work fine. The mid values you lowered will move 100% with the bone, if there is no other bone weighted to those verts.

So if i counter the value of all the vertices i use for the 17 bones on a single head bone as the opposite that would work? i dont need to make 17 other bones?
Nope, you don’t need any more than 1 other bone. And keep in mind, if you haven’t got the surrounding mesh weighted to something, it isn’t going to animate. It’s just not.

what about if i want the head bone 100% everything on the head but these eyelid bones to overlap on top of the 100% value head bone and move vert 1 100% vert 2 66% and vert 3 33% how will that work when there is no bone counter with exact values?
That doesn’t work. For a vert to follow a bone 100%, it has to be weighted 1.0 to only that bone. The best way forward from this point, is probably to, in edit mode select the whole head and assign it 1.0 to a head bone groups. Then in armature, pose mode, select the eyelid and head bones. Then in the mesh, weight paint mode, select “Normalize All” and in the options, change “all groups” to “selected pose bones” and uncheck “lock active group.”

That will lower the value for all weighted eyelid bones, but will normalize them. Then either manually adjust them taking care to keep the values balanced, or use the weight paint tools with auto-normalize checked.

Either way. 17 eyelid bones seems like a lot, and is really overkill for a project where you’re still figuring out how the tool works.

No, that’s not a bug. If you’re using the weight paint tools, with auto-normalize checked, and you’re subtracting value from verts that don’t have any other bones weighted to them. the auto-normalize will bring in surrounding bones to normalize.

It’s tricky. :slight_smile: But it isn’t buggy. It’s difficult to figure out, but works very predictably once you’ve got it.

@SkpFX

agree with 90% of your above statements…

To have a weight of 0.1, it has to be weighted 0.9 to something else.

however is not quite true… it is possible for a Mesh Vertex in blender to not be weighted to anything…
you tell when this is the case in weight paint mode by the color black…

just FYI…:yes::yes::yes:

@stoogie

at this point it might be better if you posted a file for us to look and see whats what on your mesh…

Agreed, and then it won’t respond at all to the armature… Correct? To have normalized weights, that only respond 10% to a bones movement, it must be weighted 90% to a bone that isn’t moving.

Agreed, and then it won’t respond at all to the armature… Correct?

yes and no…

Objects can be parented to an individual bone … having no involvement use of vertex groups…
that is to say… you can select say like an eye ball and Ctrl+P and select from the popup menu ‘bone’ which will allow the Armature to effect that object… in a 100% way without use of any vertex groups…

What I am pointing out is simply…

if the parenting was not done correctly it could cause some problems simular to what I’m seeing in the gif files…

but I can’t know for sure without looking at the file…

to simulate… take a cube and subdivide 2 or 3 times and apply…
tab into edit mode and select a bunch of vertices and create a vertex group for them …
name the vertex group 'bone.001

now tab back into object mode and ‘add’ an Armature ‘single bone’…

tab into edit mode and scale the bone up so that it passes through the ball shape you have…
hit W then S to subivide the bone into about 4 bones or so…
the very top bone will be bone.001 (usally)

now tab into pose mode select only the bottom most bone of the chain…

Tab into Object mode select the ball and shift select the bottom most bone… hit Ctrl+P and select ‘bone’ from the popup menu…

this parents the ball object to the first bone…

but now with only the ball object selected goto the properties panel and add an armature modifier… > be sure and select the ‘armature’ object in the modifier to connect it to the ball mesh object…

now grabe the bottom bone in the armature in pose mode and move it around…

note how most of the verts in the object move around predictably with that first bone… but the verts in the vertex group named ‘bone.001’ go all over the place… yet only those verts have been even assigned to a vertex group… yet the armature is effecting all the vertices in the mesh object… but only a portion of the vertices are in a vertex group with armature weight assigned to them…

Yes, you can create a kludge where an object is parented to a bone, and also has an armature modifier pointing to the same armature… BUT! and this is a crucial but… to get 10% movement relative to a bone, the verts MUST be weighted 90% to something else. Being parented to a bone does not fulfill that need. If a vertex group is weighted 0.0001 to group A, and nothing else, it WILL move 100% with bone A. Parenting to a bone doesn’t change that fact.

Thanks for the comments and help guys, I have yet to try all these things and get a solution(will post later after i drill my head in the wall #jk), What i care about here is a solution not who is right or not, the help is what matters(sorry i have aspergers if i speak and think weird). Direct solutions or a way to make weight painting “absolute values” would be nice. The way i learn is kinda weird i need to know every little bit of information to completely understand something or be (whats the word) comfortable with said knowledge and process of doing things.

I wish all this could be countered by a single bone that is 100% everything(including other bones)(or rather any vertex that is not assigned is 100% but without a controller and counteracts based on what you add to it), and the ability to overlap bones on same parts of mesh which are on a seperate 0-100% scale since its controlled by that single 100% bone anyway if that makes sense. Why do programmers make things harder for no reason?

(now i dont know about maya as im not that far into it for rigging, but doesnt maya do this weight paint issue properly like how i want it and not a counter AND unassigned vertex issue?)

going to try and salvage some information from these:
https://www.youtube.com/watch?v=CCGekumdLLU

https://vimeo.com/21713368

What i care about here is a solution not who is right or not,

Sorry I was trying to clarify some things about how weighting works in Blender I personally am not interested in flame wars…
I can’t speak for others…

I will leave you guys to it…

Sorry i probably presumed wrong, both of you seemed quite serious in correcting each other. so sorry if that was the case. What Skp said makes logical sense and what you said norv was correct aswell.

Sorry been busy but when i solve my issue i’ll write it like writing the “dumbest programming commands to tell a computer what to do”.

Why is there no addon that just sets the objects movement itself as a 100% empty bone, then all counteract and unassigned bone issues will be gone. How else do u move an object in blender or in ue4/unity without an armature?(blenders own ui)(game engines player controllers and ui)

Regarding this topic, does maya have these same rigging issues that you need to work around?

i made a cube test file to show what Skp means, so i guess it works if u just counter it with the head, head still moves everything when its parented to it:
https://drive.google.com/open?id=0B5NDJunyFsY1Z1h4cGt3OF96WWs

Thanks for checking it out Stoogie. That is the way it works. If you want a smooth deformation, where a group is partially affected by one bone, there has to be another bone and group that offsets it. Generally, when you start out by binding with automatic weights, Blender gets everything evened out, and normalized for you. It’s when you’re adding and editing weights manually, that you really need to take it into account.

Have Fun with It!

Hi SkpFX i did this what you said but edited it in AUTO NORMALIZE and it seems to work:

what you said:
Then in the mesh, weight paint mode, select “Normalize All” and in the options, change “all groups” to “selected pose bones” and uncheck “lock active group.”

That will lower the value for all weighted eyelid bones, but will normalize them. Then either manually adjust them taking care to keep the values balanced, or use the weight paint tools with auto-normalize checked.

image showing the bones working(wrong eyelid though lol supposed to be top but whatever)

Attachments


I guess this would be the best workflow, add 100% weighted bones first, select bones on top of that same vertex mesh and add from 0 with auto normalize on, thats it? cause it auto removes what you add to the new bone from the original bone that you 100%'d.(auto normalize also seems to work on random added verts from other parts of the body by removing the influence)

another neat thing i found out somewhat unrelated to this is that in weight paint if u select the cube with a dot top left of it then go to object mesh > edit mode and select parts between uv’s and ctrl+L to full selection then go back into weight paint and select the 2 squares with corners button so you can paint through everything then you only paint what you selected in edit mode. if that helps anyone reading this post lol

I guess this would be the best workflow, add 100% weighted bones first, select bones on top of that same vertex mesh and add from 0 with auto normalize on, thats it? cause it auto removes what you add to the new bone from the original bone that you 100%'d.(auto normalize also seems to work on random added verts from other parts of the body by removing the influence)

Yes this is one of the best workflows Danpro made a good video about weight paint.

I would say masking shift+H alt+H is also a good help not to get lost in weight painting. In my workflow i layout my mesh and my belonging bones and hide all what is not needed.