How to make a Morph Object follow the surface of a model I'm trying to create a character with admittedly unorthodox eyes and pupils.



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.



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.



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

Altogether I want to be able to:


Change the shape of my pupils with morph targets 
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)
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!
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.