3
$\begingroup$

So basically I want to do what should be a simple 2D eye rig where each part of the eye is a flat plane that follows a bone but doesn't rotate

This the eye (each color is a plane) enter image description here

This is how I want it to follow a bone and preferably stay in the confines of the last plane enter image description here

I've found very few tutorials on this from years ago that are incomplete in explaining it, for example heres a 3 bone system I tried where the pupil is its own bone and theres a bone that tracks a target bone like a normal eye rig, but it still rotates the pupil with the bone which isn't how the desired effect enter image description here I want to make it into two eyes and connect it to a head and rig. I would also prefer the layers to be curved but I just don't think thats possible or easy! I'm pretty sure I'll have to give each layer a bone and rig it to a tracker bone, and add some limitations constraints but I'm unsure how to make it all come together

$\endgroup$

2 Answers 2

4
$\begingroup$

You could create a new vertex group to your object, give it a Hook modifier with the group selected and a bone as controller Object:

enter image description here

Then assign each part of your object to the group with a decreasing Weight (1 for the smallest circle, 0 for the biggest):

enter image description here

Now you can move the bone, adjust the weight a bit so that each part follows as much as you want:

enter image description here

$\endgroup$
2
  • $\begingroup$ I actually got this working pretty well with some constraints so thanks! But do you know the best way to rig this to a head bone? I tried but the rotation of the parent bone tends to cause the layers to distort $\endgroup$
    – Gray
    Dec 7, 2022 at 2:45
  • $\begingroup$ You can parent the eye bone to the head bone with a Ctrl P > Keep Offset, and also parent the object to the head bone: Select the object, shift select the armature, switch to Pose mode and Ctrl P > Bone $\endgroup$
    – moonboots
    Dec 7, 2022 at 8:07
3
$\begingroup$

Just out of interest, here's a shader-only approach, controlled with an empty, avoiding the need for multiple slices of geometry.

It relies on a simple mask, measuring the radius around a point at some fraction of the vector between the object-origin and the location of a (child) Empty:

enter image description here

That can be grouped up and cascaded to give rings around various points on the line between the object-origin and the Empty:

enter image description here

The cluster at the bottom scales relative X and Y of the Empty's space, to make the last mask elliptical.

This it what the result looks like on a flat XY surface:

enter image description here

.. and it can be extended to curved surfaces..

enter image description here

... but if the distortion of the shapes is a bother, we may have to constrain the Empty to the curved surface, and/or work in UV, instead of Object space. I think we could probably keep things simpler if the curved surface was known, before re-jigging.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .