I'm trying to create a character with admittedly unorthodox eyes and pupils.

An example of the look I'm going for in 2D

What I'm attempting to do is make the pupils in 3D and them change their shape using morph targets, a little like the 3D Charlie Brown Movie does it.

Front image orthographic view

What I'm trying to do is be able to move the pupils over the surface of the eye whilst constraining it inside the 'eye' shape I've made.

Example of the eye movement I'm aiming for

A rough example of the look I'm trying to achieve.

Altogether I want to be able to:

  1. Change the shape of my pupils with morph targets
  2. Constrain the movements to just inside the eye shape I've made (I have a rough idea already what to do but any tips would be amazing)
  3. Have them basically hover over the surface of the model so they don't drift off to mars every time I move where she's looking in a scene while I'm animating.

All at once.

Is there a specific combination of modifiers I can apply to make this work? I was pondering using bones to keep the pupils in place and make them 'look' where I wanted them to but I'm worried about them not conforming to the surface of the 'eyes' or having them sink below the surface of them.

Thank you for any help you can give!


1 Answer 1


You could do it this way:

  • Create a bone at about the center of the eye.
  • Put you pupil in front of the eye surface.
  • Create a plane at the same position, subdivide it a bit.
  • Parent the plane to the eye bone With Empty Groups then in Edit mode assign the vertices group to the plane.
  • Give your plane a Shrinkwrap modifier. Choose the eye as the Target, but don't display this modifier in the viewport yet (deactivate the eye icon).
  • Give your plane a Subsurf modifier.
  • Give your pupil a Surface Deform modifier, choose the plane as Target, click on Bind.
  • Give your pupil a Subsurf modifier.
  • Give your pupil a Copy Location constraint with the plane as Target.
  • Select the plane and activate the display option (eye icon) of the Shrinkwrap modifier. The plane should stick to the eye surface and the pupil should follow.
  • Make the plane invisible: Properties panel > Object > Cycles Settings, deactivate the display options.
  • To change the eye shape, select the plane and create some shapekeys.
  • Now maybe give your eye bone a Damped Track constraint to make it point to a target as explained in this video: https://www.youtube.com/watch?v=OItHr4VRP7M the eyes targets will need to be children of a central bone, in front of the nose, that will be child of the head bone. If you want to give some constraints to your pupils position you should probably give this central bone a Limit Location constraint.

enter image description here

  • $\begingroup$ Thank you for the advice! I'm having some trouble though- I reach the 'activate the display option (eye icon)' part, but instead of sticking to the surface of my model it turns inside out? I can't paste an image of it here but it completely deforms it $\endgroup$ Commented Apr 21, 2019 at 18:19
  • $\begingroup$ perhaps you need to apply the rotation/scale of your plane or pupil, then unbind and rebind the pupil to the plane? $\endgroup$
    – moonboots
    Commented Apr 21, 2019 at 19:20

You must log in to answer this question.

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