Lattice deforms wrong xyz

I’m following the tutorial for cartoon eyes at

Once I get to the point of adding a deformation lattice, when I stretch the lattice along z axis (vertical direction) the eyelids deform as expected, but the eyeball itself deforms in the wrong direction (outwards along the y axis).

Looks to me like the eyeball has a 90 degree rotation or something, and is the wrong way up. However, it needs top be this way up in order to make the iris point the right way.

What did I do wrong? How do I fix it?

Edit: Oh - I think I know what I did now, but I’m not sure that I quite understand it. The xyz of the lattice were wrong because I had my mouse on the wrong “view” when I made it. I should have added latice in the top (yx) view when I had instead added it in the front view (zx) so it ended up facing the wrong way.

I understand that shapes do face a different way depending whish view they are created in.
What I don’t understand is why this seems to affect the relationship the lattice has on the inner eyeball, but does not appear to matter for the eyelids (the eyelids always deform correctly, even as the eyeball misbehaves, no matter which view I use to add the lattice).

I would really like to understand this because I can see it causing a certain amount of “unpredictable” problems otherwise. Also, I would like to know the way of correcting this. I tried changing “Up” for a wrong lattice in Editing, but it did not correct the problem.

Does anyone know how to use lattices well?

Here are some examples you can look at to see what I mean…

Base eye (no lattice):
Correct eye (behaves):
Wrong eye (has xyz lattice resizing problem):

If you turn on “draw extra axis” for your objects (object buttons, draw panel) I suspect you’ll find the axes for each of your objects are pointing in different directions. I suspect the lattice is deforming your objects along their individual local xyz axes rather than the global xyz axes. Something to experiment with: does apply rotation reset the axes of an object to the global axes? Yes, it does. Worked for a couple of UV spheres, but it did not work for an empty which was also selected.

Yes, the “bad” eyeball has axis pointing the wrong way as revealed by object draw options.
1. How do I make the latice deform affect global instead of local? (is there a toggle for this?)
2. Is there a way for me to also correct the local axis for the central eyeball mesh?

ctrl-a apply size and rotation will fix the eyeball object. It is always a good idea to do this for objects you are going to apply modifiers, constraints or parent child relationships to.


I opened the “bad” blender file. In object mode I selected the eyeball. Applied ctrl-a and and was asked if I wanted to apply size & rotation (yes). Lattice xyz still faulty, appears the fix does not work.

…or did I miss something?

You have to do the ctrl-a “before” using the lattice modifier. The ctrl-a sets the local axis to match the global.


I’m confused. I just tried starting with the “base” .blend file and applied ctrl-a to each eyepiece individually (also to the lattice) and it did not seem to help. What does make a difference it which view is used to “add lattice”. In the split views I have, the topleft window is the correct one to add.
I’m not trying to argue, I’m wanting to understand. Your answer makes a lot of sense though it’s not what appears to be happening when I test it.

It makes a difference because everything you add has its own local xyz axis. Instead of experimenting with your bad blend file, start a new blend, with the minimum amount of objects added to let you see whats going on. Keep the show axis option on, compare local with global (the 3D viewport axes in the corner.)

this should work:

  1. start with base mesh.
  2. remove the lattice modifier (press x in the modifier panel)
  3. do ctrl-a to all your objects that the modifier is to effect as well as the lattice.
  4. add a new lattice modifer.

If you still have problems – post the blend file. The ctrl-a has to be done before adding the modifier. For your information – Adding objects in top view (numpad-7) results in the local axis being aligned without doing a ctrl-a.


Yep, that’s why I gave three examples… a “correct” working one, a non working “wrong” one, and a “base” one before the lattice was even created.

Open the “Base eye” file in my earlier examples. This one has just the eye, without any lattice at all, although it does have a working track-to constraint to an empty.

Each in turn, click on the eyeball and apply CTRL-A
Each in turn, click on the top eyelid and apply CTRL-A
Each in turn, click on the bottom and apply CTRL-A

Now it should all be reset and ready.

Go to either one of the bottom windows and add a lattice (Not the top left window because otherwise it will work, which is fine, except that it won’t help me solve why this is happening).

Resize the lattice to contain the eyeball.
Just to be “safe” apply CTRL-A when the lattice is selected. At this point, I happen to also make the U V and W properties of the lattice to be “3” to suit the tutorial (optional for now).

Select the eyeball and holding the SHIFT key, also select each eyelid and then the lattice. Make sure the lattice is selected last. Hit CTRL-P and choose lattice deform.

…wait for it…

…select the lattice afresh and scale along Z axis to see the problem.

This problem does not happen if the lattice is “created” in the top left window however. I would expect CTRL-A to nulify this but it does not seem to fix the problem.

Note: The only clue I have for what is wrong is that the eyeball, which is the one that appears to misbehave, is tracking to an empty (what it is looking at). The axis on this empty are wrong, however, applying ALT-R (or CTRL-A) to clear rotation does not cure the problem either. It seems that somewhere between tracking this eye and rotating it to point the right way, I have stuffed things up, but no amount of CTRL-A seems to work.


Sorry I didn’t notice you had already posted the file. The problem with the bad blend was the track-to constraint. The constraints are evaluated first before the modifiers. So even though you had done a ctrl-a the constraint had rotated the eye by 90 degrees. I fixed the eye_bad.blend by deleting the empty and clearing all the lattice relationships. I then rotated the eye so the iris was pointing the correct direction and did a ctrl-a on all the pieces. I added the lattice modifier again. I re-added the empty (in top view) and added a track to constraint and set the tracking to -y, z(up).

Here is the fixed blend.


:slight_smile: Interesting that the lattice relationships had to be deleted as well as the association / orientation of the tracking entity. I would have thought that ALT-R to clear rotations of the bad empty would have corrected things but then, once it’s so far out of kilter, I guess it’s all out from there.

Also interesting that we ended up having to use negative values on some of the tracking verts.

Thanks for your help.