Blinking eyes - single geom

How could i make a character blink eyes if i want to keep him/her as a single geom?

Do a second UV create an animated eye blink only texture, and play the animations frames the way i want?

Any crazy ideas are welcome.

Is it a skinned mesh (Actor)?
If so you could just weight the eyelids to a joint and animate that.

No, he means a texture animation, actually I’m asking the same here:
For a single geom something like this could work:
Using seperate textures is probably a lot easier.

You can provide a UV morph to slide the open-eyes texture to another part of the texture where the eyes are closed. That way you don’t even need to deal with multitexturing; you can still just have one texture over the whole model, including eyes.

But the multitexture idea is a good one. Modeling eyelids in geometry and animating them with a joint is also a fine solution.


Thank you for all the answers.
I dont like joint+geom anim as it squeezes the texture and seems to costly for such a small thing.(if blink is fast enough nobody will notice but if i want to have half closed eyes, then its not good enough)

Yet i like a lot the UV morph thingy drwr mentioned.
How does it work? I need to create 2 UV’s and do a linear UV pos change on specified verts?

Another way i could do it is with geomvertexwriter. Yet i have not found a way to change only a few verts data, without rewriting all the verts data and rewriting all seems to costly.

Of course if the morph thingy turns out to be not suitable then the seprate texture thingy seems the way to go for me.

Thank you Anon, the pause in run.bat was the tip i have been seeking for ages and thanx for the sample as well :wink:

I think the proposal was to have geometry that rolls down over the eyes and covers them, not geometry that squishes the eyes into a closed position. As to cost, well, it’s no more costly than any other joint; so if your model is already animated anyway it doesn’t cost much at all.

UV morphs have to be defined in the egg file. This is actually problematic, as no current egg converters support them, so it means you have to build them in the egg file yourself, either by hand or with the aid of a Python script.

It means adding " blink { 0 1 }" into all of the entries that define your eyelid vertices. It also assumes you already have an animated model that you are loading with a Then, at runtime, you can call blinkNode = actor.exposeJoint(None, ‘modelRoot’, ‘blink’), which will give you a node whose X position will control the V coordinate of the modified vertices: blinkNode.setX(0.5) will move the texture 0.5 units on the V axis.


Well seems like a separate Texture is my friend then, at least for now. Thank you Drwr