How to rig cartoon (non-spherical) eyes

I’m making a cartoony character with eyes that can roll around, but the eyeball shape appears “flattened” from front to back no matter what direction the eyes are pointing. (See first two images) In a 3d package this is done with a lattice or mesh deformer. But in UE4, I know of no such real-time deformation.

I tried parenting each rotating bone under a parent bone that was then scaled by 50%, hoping that the child bone (and the eyeball meshes skinned to them) would inherit the scale of their parent bones. But instead, as seen in pic #3, this doesn’t work in UE4.

The scale is “applied” permanently to the eyeball’s rotation bone, and the whole eyeball mesh rotates with a static flattened deformation on it.

Does anyone know of a way to accomplish a lattice-like deformation on part of a skeletal mesh?

World position offset! Okay, that sounds promising – I’ll work my way through it and post some findings should I come up with something worthwhile.Thanks!

Te recomendaria usar Blendshapes que adapten los movimientos de los ojos

I’ve tried the blendshape idea, but doesn’t give the best result. Would like to know how to get lattice deformations in UE4 too

for Lattice is the best that each deformation be a blendshape

Thanks, I’ll try doing more blendshapes to keep the shape constant

I am doing this in my game by creating a separate skeletal mesh with one eye in it, then I put two of those into the character blueprint. If you scale the component the eye rotation will happen in the new oval shape. Add Eggshell eyelids and things look even better

I was a rigger at pixar for 4 years and we did something similar for toy characters with simple eyes. Woody, Buzz and many other characters essentially all have the same eye rig it is just fitted and shaded differently. The rigging systems are completely different, but its the same basic principle, its all about the deformation/execution order. In one step the bones do their deformations as though they are unscaled and in another step unreal is scaling the component, because of the order of operation you maintain the oval shape.

This does mean you will have to work a little blueprint magic, but if you make your eye blink and eye dart animation procedural its pretty darn easy to setup.

Let me know if you have any questions

That’s a fantastic solution! That actually results in the compressed, yet still rotating eyeball, without lattices, and still in engine. Thanks for the great idea!

I can’t seem to get this to work. I create a sphere, parent it to a bone (call it rotator), and parent that bone to a second bone (call it parent). In blender, when I rotate the rotator while parent has scaling on it, the eye stays deformed just fine.

However in Unreal when I scale the parent and rotate the rotator bone, the entire deformation rotates as if the parent had been scaled at a rotated axis!

Hey rotoslinger, I’m trying to setup cartoon eyes the same way. Do you have an example file/scene I can checkout on how to get the deformation/execution order working correct? I’m trying to get scaled cartoon eyes made in Maya working in Unreal by scaling the I joint deformation.

Having a clear map of how to do this would be nice. A Screen cap of the blueprint and rig/bones?