Animatronic Pupil for Eye
David Boccabella
Moderator
in Animatronics
In one of my flight of fancy I was pondering how a inexpensive dilating pupil could be made for an animatronic eye, and I think I have a solution.
1. Firstly make the half eyeball but do not paint the iris on it. Mark where you want the iris to be, and the center of the pupil.
2. Drill a hole through the eye at the center of the pupil - the hole being the minimum diameter of the pupil. Bevel the edges so that it is a slight funnel shape.
3. On a disk of thin silicone paint the iris and pupil. The pupil should be the maximum diameter you want.
4. Behind the silicone and at the center of the pupil glue a thread. Make sure it is secure and that the fixture does not distort the visible side of the pupil.
5. Carefully feed the thread through the hole in the eyeball and then glue the outer edge of the iris to the eyeball.
Operation.
1. At rest the silicone is undistorted and so you have the maximum pupil expansion.
2. As tension is put on the thread it draws the center of the thin silicone disk into the funnel.
3. This causes the iris to be pulled in towards the funnel thus giving the impression of the pupil dilating.
4. When pressure on the thread is reduced it causes the silicone to relax and thus withdraw from the funnel and make the pupil look larger.
Very sorry - I suck at drawing, and can visualize things easily.. Bit I hope this give people some idea's of a way to do this. One should only nee a small servo to enact this
Enjoy
Dave
1. Firstly make the half eyeball but do not paint the iris on it. Mark where you want the iris to be, and the center of the pupil.
2. Drill a hole through the eye at the center of the pupil - the hole being the minimum diameter of the pupil. Bevel the edges so that it is a slight funnel shape.
3. On a disk of thin silicone paint the iris and pupil. The pupil should be the maximum diameter you want.
4. Behind the silicone and at the center of the pupil glue a thread. Make sure it is secure and that the fixture does not distort the visible side of the pupil.
5. Carefully feed the thread through the hole in the eyeball and then glue the outer edge of the iris to the eyeball.
Operation.
1. At rest the silicone is undistorted and so you have the maximum pupil expansion.
2. As tension is put on the thread it draws the center of the thin silicone disk into the funnel.
3. This causes the iris to be pulled in towards the funnel thus giving the impression of the pupil dilating.
4. When pressure on the thread is reduced it causes the silicone to relax and thus withdraw from the funnel and make the pupil look larger.
Very sorry - I suck at drawing, and can visualize things easily.. Bit I hope this give people some idea's of a way to do this. One should only nee a small servo to enact this
Enjoy
Dave
3
Comments
Normally the iris would be under a layer of clear resin, so you'll need some kind of clear outer shell that would not impede the movement of the silicone disc.
It's a cool idea, you should make a prototype!
/Chris
Re the clear outer shell - you can use that as the mold base for the inner eyeball and cast that part out of resin.
Then grind the center of the resin a little lower to accommodate the iris and then drill for the pupil.
When assembled back together the white body of the eye is flush with the clear outer shell, but the iris has space to move and distort.
Over the past years a wide range of small OLED and LCD screens have become available. Like these little ones.
https://tiny-circuits.com/tinyscreen.html
The actual OLED is on a flexible connector so that it can be lifted from the board.
What I am thinking is that if one uses a clear curved lens over the screen, and then put that inside of an spherical eyeball then you can display pictures of the iris and pupil that will be seen through the lens.. Giving the appearance of a very expressive eye.
It is easy to change the pupil dilation, and to load up a different bitmap is you want to change the eye's color/detail etc. The pupil is just drawn afterwards as a black circle.
It's a tossup-up between LCD's and OLEDS. OLEDS will give more vibrant blacks and supply their own light. LCD's need to be backlit and so there is a chance of slight light bleed through with the backlight.
Just some idea's on how this might work
Dave
Got some time in my shop and so I decided to spent it working on the eye project.
Here are some pics.
Basic concept. On left is a 128 x 128 OLED screen that can display pictures - including details iris's and pupils. All a pupil needs to be is a black circle drawn in the center of the image.
Center is a plastic Christmas bauble with a small rod of clear acrylic inside it. It's being held by some clay for positioning
For more realism you can change the image to a Photoshopped series of pictures showing minute iris distortion.
Measuring up how things will fit in. The screen side of the OLED is over the acrylic rod., This is where the image will be displayed.
After casting the 'ball' of the eye so to fit the various fir the items I laid them out.
Pushing in the rod. As the end of the rod is flat it stops some distortion of the image. I am still wondering if I might need to do micro-scratched so that the iris image appears more in the front of the rod.
Rod in place.The edges can be blended together. Remember in the real eye that the iris and pupil are flattened.
Still need to trim up the indent where the OLED will fit. But as it's not visible there can be room for 'adjustment'
Showing final OLED orientation.
Eye positioned in the Bauble. Now - one can either affix the bauble to the eye - or use it akin to a ball and socket arrangement where the bauble is fixed but the eye can swivel inside of it.
Bauble held in place but the internal ball shifted to the left.
Bauble held in place but the eye shifted to the right.
I am now in the process of programming. To give me speed I am using a Teensy 3.1 which is a high speed Arduino clone. I have individually tested the SD Card for file access, and the OLED driving routines. Just integrating them all together now.
Need to learn a bit of Photoshop so I can pretty up pictures of iris's.
Enjoy. I'll add more pics as I go along.
Dave
/Chris
Thanks for the interest
Dave
I finally have an update . Due to work constraints I had to put thi off for a few weeks but I have finally got back to it.
This is just a nice eye image I found on the web and downloaded. It's saved to an SD card as a 24 bit BMP at 128x128 resolution.
A Teensy 3.1 (higher speed Arduino) reads this and displays it on the OLED placed behind the clear section.
Here I have a link to a MP4 where it shows the pupil expanding and contracting.
http://www.marcwolf.org/gallery/default.aspx?moid=2013
It looks stuttery but I will explain.
1. I display the BMP
2. I draw a black circle in the center and expanding to simulate the pupil opening
3. For contracting bBecause I don;t have a frame buffer I have to draw the BMP and then put a smaller circile on to it and then repeat each time the circle get smaller.
This can be improved by keeping an frame buffer of the image and manipulate it there, sending the finished picture to the screen, thus creating a much smoother movement. One might even use a more powerful computer and a video link to send the images.
This is also my very first test run too
I'll put some more info up as I progress.
Enjoy.
Dave
Have you thought about doing the dilation as an image sequence? That way you can get proper distortion of the iris for a much more dramatic/realistic effect.
You could label the sequence something like: e0.jpg, e1.jpg, e2.jpg, e3.jpg, e4.jpg, etc. then use a single variable ranging from 0 to the highest frame in your sequence to store the eye state.
From there you can set the state to any number within that range, and have the screen play forward or backward through the sequence from the current displaying frame to the new target frame.
Tests are looking great!
/Chris
HI Chris.
Actually that is what I will be doing.
Using Photoshop I have found the Liquefy functions with the Pucker (contraction) and Bloom (dilation) work very well on eye images.
By selecting the area around the whole eye picture the effects look perfect re any distortion the natural iris would make. When I am next at my Photoshop PC I can put up some demonstrations.
I have also been playing around with the coding so I can flip mirror the images. This way I can make the two images subtly different i.e. Left eye is painted left to right, and Right eye is painted right to left. This will also be fun then I am displaying color wheels and it will change the rotation of the two eyes i.e. Left clockwise, and Right counter-clockwise.
Hopefully I will have some movies soon
Many thanks for your support and input.
Dave
This is a series of 39 128x128 pixel BMP's that are run through the Teensty 3.1
I am currently improving the code to fine tune thing and hopefully make it faster - however I don't think I will get a significant change.
https://www.youtube.com/watch?v=DAR1JOs6Z-A
Also - my work has been featured on the electronic site that makes the little OLED's that I use too
http://www.freetronics.com.au/blogs/news/40288513-create-animatronic-eyeballs-with-freetronics-oled-displays#.VcvnQPmCcno
Take Care
Dave
Congrats on getting featured!
/Chris
A major update.
Firstly many many thanks to a friend Phil. He's on here somewhere but I don;t know his user name. However I do know he is called "Helvetica Bold' on other forums.
Phil looked at what I was doing re the multiple images being loaded and send me some code.
Essentially what his code does is to map the eye from Cartisian co-ords to Polar which make it a lot easier for dilation effects, as we can load one image and then manipulate it rather than reloading. Plus he also showed some tricks re doing fast memory dumps to the display.
Here is Phils original concept code..
https://github.com/PaintYourDragon/Teensy-Iris
and here is my modded code
https://github.com/marcwolf1960/Animatronc-Eyes
https://github.com/marcwolf1960/FTOLED
The result are very smooth as well as adding the capability of a rotation effect is required.
Here is a vid showing the rotation. I am currently now working on ways to change the eye image when required like a 'mood' change as well as ways to control this from a serial connection. I might also include an automatic function with a Light Dependant Resistor so that the eyes will respond to external light conditions.
Of interest - this is getting a lot of interest with several groups using the idea of a small screen for the eye's.
Enjoy
https://www.youtube.com/watch?v=NLOWiznV5pg
Specs - I am running the Teensy 3.1 at 96Mhz, and getting about 15 to 20 frames per second for both eyes. As I am not reloading the image from an SD card each time the effect is very very fast.
If I was only displaying the same information on both screen then it would be twice as faster.
Currently the left eye image is mirrored on the right eye so that the rotational effects look better.
Dave
Awesome that you are able to manipulate the image rather than load from the SD card, which can be slow if you are not able to store all the images in ram.
/Chris
I often read Servo Magazine and I would be honored if you were to include my project.
Please feel free to contact me on any finer detail.
This link show some of the early construction of the eyes.
http://www.marcwolf.org/gallery/?aid=107
Many thanks
Dave
No - but I will message you an alternate one you can use if you have problems. or message me here.
Many thanks
Dave
I'm not sure I'm allowed to link directly to the video, so here's the link explaining how you can get access to it:
https://www.stanwinstonschool.com/webcourses/jurassic-party-dinosaur-crew-reunion
https://www.youtube.com/watch?v=OLXDXLnoGnI
Looks fantastic I am really happy to see some of my creations out there giving pleasure.
I am currently making a new set and found some glass cabochons which I am giving a try. Much more scratch resistant.
/Chris
Great ideas. The only area re realism that I can see is that the iris actually expands and contracts with the dilation as the are also the muscles that opens and closes the pupil.
But great outside-of-the-box thinking. Dave