I have this character with eyes on a body that I want to be able to squash and stretch. I am using "snap to face" when moving the eyes, but when use proportional editing on the body (later on I will be using shape keys for this) the eyes won't automatically snap. Of course I could "resnap" them, but in a 24 fps animation, this would be tidious.

Is there any way to automatically snap objects to a face when that object changes?

Here are som pictures to illsutrate the problem: enter image description here enter image description here enter image description here As the last picture illustrates, the eyes are on longer snapped to the surface.

Thanks for any answers!

  • 1
    $\begingroup$ Try the vertex parenting:docs.blender.org/manual/en/latest/editors/3dview/object/… or SHrinkwrap $\endgroup$
    – FFeller
    Commented Feb 17, 2019 at 12:00
  • $\begingroup$ I just tried vertex parenting, but this makes me unable to maintain the proper control of the eye. I can't snap it to the surface properly that way. Maybe I am doing something wrong. I duplicated an eye, snapped it to the surface, then vertex parented it. This distances the eye from the surface. Would there be anyway to adjust the settings to still make it snap to the surface, but also follow an invidual vertex of the body when transformed? Thanks $\endgroup$
    – Rasmus H
    Commented Feb 17, 2019 at 12:43
  • $\begingroup$ Check this answer out, because your eyes have some thickness. I've been trying it.. it's practical to parent the Lattice object to a vertex in the sphere, and shrinkwrap the lattice to the sphere, and assign a lattice-deform to the eye-disk, using it. $\endgroup$
    – Robin Betts
    Commented Feb 17, 2019 at 20:34

2 Answers 2


Maybe "Parent" Helps.

First select the eyes, then the head with your Shift down to make a multi-select, hit Ctrl+P (Parent) and select "Object (Keep Transform)", then the head will be the parent of the eyes, the eyes will be the children of the head. The eyes will follow the head's transformation.

But I'd recommend you to apply rotation & scales before you do it. Check if the scale properties of the objects are set to "1.0" by poping up properties with hotkey "N". If not "1.0", then press Ctrl+A and hit "Rotation & Scales" to apply the both to the objects. That's because the rotation & scale you've made haven't been consequently applied to the object before you confirm your application.

For more info, check this out: https://docs.blender.org/manual/en/latest/editors/3dview/object/properties/relations/parents.html

  • $\begingroup$ Also try Join by "Ctrl+J", two objects can be connected into one. $\endgroup$ Commented Feb 25, 2019 at 16:19

There are a number of ways to do this. Discussed in comments is vertex parenting; another way is to use a shrinkwrap constraint. Different techniques are often going to give different results-- there's more than one way to snap to the face.

enter image description here

I'm comparing a shrinkwrap constraint to vertex parenting here. The shrinkwrap constraint is shown; it depends on the object axes of the "eye" because it is set to align the object with the normal of the target. We can see that when the "head" deforms, the constrained objects remain basically where they were, and just snap to the nearest point of the mesh object. Note that we're not fully defining our rotation here, and because of that, we might see changes in the target mesh leading to apparent rotation about the Z axis of the eye; it depends on the starting rotation and the nature of the target.

On the right, we see that vertex parenting doesn't behave the same way. I've parented these eyes not just with vertex parenting, but with vertex (triangle), parenting them to three vertices (the three closest, chosen symmetrically for each pupil.) These actually move with the head, following its rotation and movement-- we see that when we stretch the head up, the eyes move up, unlike with the shrinkwrap constraint.

Either of these are computed live, adapting to each frame, to each change you make to the head. But if you intend to use in other applications than Blender, you will probably need to bake the animation after it's finished, as these techniques are specific to Blender and don't get exported.


You must log in to answer this question.

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