Weight painting is ignored if the bone has "copy rotation" from a different mesh?

I’m trying to figure out the explanationgiven in this post regarding a eye rig.

  1. First, I got a eye mesh, bone, and eyelids (simplified to a sphere and a plane for this test). - Screenshot

  2. I apply a Copy rotation constraint on the bone and select the eye. Everything works as it should be, the bone gets rotated as the eyeball moves. - Screenshot

  3. I select the “eyelid” plane and parent it to the bone for weight painting. - Screenshot

  4. When weight painting I make sure the correct vertex group is selected. - Screenshot

  5. Seems to work in pose mode when I rotate only the bone, the weighted vertices of the plane move as they should. - Screenshot

  6. Here’s where the problem happens, if I rotate the eyeball, the bone rotates (as it should) but the whole “eyelid” plane does as well, not just the weighted vertices from previous step. - Screenshot

Am I doing something completely wrong here? How would I make only the weighted vertices of the eyelid move as the eyeball rotates? I can’t figure it out so I must be missing some steps or doing something incorrectly.

Any tips would be greatly appreciated.

What are your parenting relationships? The plane should be parented to its armature; the armature shouldn’t be parented to anything (yet.).

1 Like

Apologies, I’m a bit confused. I’m not parenting the armature (unless adding a copy rotation constraint constitutes to parenting? I’m pretty new to blender)

Can the parenting relationships be seen here?

Yup, that’s where you see them. And parenting is basically correct. And that pic has other useful info in it as well… (Which I guess if I had paid attention, I would have noticed in an earlier pic.)

It looks to me like you’ve given your armature an object-level constraint rather than a bone-level constraint. You want a constraint on the bone, not on the armature. This would probably be easier to see if you had multiple bones in your armature-- you’d see all of them rotating with the eye.

A typical armature relationship, like you get with ctrl-p, does two things: it creates an armature modifier that deforms individual vertices in your mesh, and it creates a parenting relationship that makes the child do whatever the armature does at an object level.

When you pose the bone, it’s only working via the armature modifier. But since you have an object-level constraint, when you rotate the eye, the armature modifier isn’t actually doing anything-- everything you see is because the armature (not its bone) is copying rotation, and your plane as a whole, at an object level, is inheriting that rotation.

1 Like

Holy cow, thanks… that makes sense, I had no idea about that.

Now the problem is how do I give it a bone-level constraint.

I tried selecting the bone under the Armature in the hierarchy list, (Screenshot) before applying the copy rotation constraint but the constraint seems to always get applied to the armature at top.

I also tried parenting the “eyelid” plane to bone (Sreenshot) instead of armature deform with the same results.

I’m not familiar with 2.8 interface, but in 2.79, bone constraints are an entirely different tab than object-level constraints. To create a bone constraint, you need to be in pose mode with the relevant bone selected.

1 Like

Thanks yet again. I did give this a try in Blender 2.79 and it’s working perfectly. Adding a constraint in pose mode worked. It does not in 2.8 :cry:

Seems like something has been changed somewhat in Blender 2.8, now I just have to find the bone constraints there, couldn’t find it anywhere yet.

Another difference I noticed when I created the bone in 2.79 I could create Armature-> Single bone, an option which doesn’t show up in 2.8.

Edit: Had to enable riggify in Preferences-> Addons for Single bone option to appear.

Edit 2: Found the bone constraints, I’m an idiot. It’s a seperate tab. In case someone else doesn’t find it, here’s a screenshot

I had to use the Single bone option for this to work, then go into pose mode and there use the bone constraints menu.

Now everything works :slight_smile: Thanks bandages!