Rigging cartoony eyes for game engine (bones only!)

posted this question over at cgtalk, but figured i’d seek advice here too to spread the net wide. (cut… paste…)

the standard technique for rigging a non-spherical, skewed, cartoony eyeball has always been to deform it through a lattice deformer or FFD. there are a couple of other techniques, but not appropriate for my current dilemma…

i need to rig a cartoon (oval-ish) eye for export to a game engine, therefore i can only use bone data. no deformers & no scale values on controllers. i had seen an example before where rotational data on the eyebones drove the uv coordinates of the eye texture. i’m not entirely sure how to set that up or even get that info to an engine (which is granny runtime in this case). if anyone knows how to set that up, i’d be interested in hearing about it.

mainly, i’m looking for some alternative ideas on how i can achieve this with the restriction being conventional bones & skin only. ideas don’t need to be app specific, what can be done in one app can be figured out in another.

any help is appreciated!

You can use multiple bones to deform the eye (like a lattice) or use morph targets (though you said no deformers, I guess that’d be a deformer?).

Rotational data driving uv coordinates is definitely possible, whether the translation is done in your app (before export, I am pretty sure granny should be able to store animated UV’s), or in your game (probably in the shader- this would be easiest and could also be set up in the app).

You could try a phantom rig on the pupil.

You have your in-game rig with the pupil as part of the hierarchy.

Control the in-game pupil with a position/orientation constraint attached to…
…whatever you want to drive the pupil. The trick is to make the in-game
pupil (or any other part of the character for that matter) accept control from
another rig (hence phantom rig). Does that make sense?