Modeling a physically correct human eye

Hi Y’all,

I’ve been trying to model photo realistic eyes and have google searched exactly how a real eye is shaped but I see images that contradict each other. Most sources say the iris is concave and the pupil is convex but this picture seems to depict the complete opposite:



Eyes are gross.

Is it just the refraction of the cornea that’s tricking me in that pic?

Can anyone point me to scientific literature or some other source about the exact shapes within the eye so I can be certain?

Thanks,
Geo

Most eye anatomy illustrations show iris to be convex over the lens. Pupil is a hole in iris:

http://bionicvision.org.au/__data/assets/image/0003/464151/Eye_Anatomy.jpg

I’ve seen all the diagrams in the world for the eye, but why does the picture of the real eye defy all of them?

Y’all?

The iris is more like a flattened torus. The central part around the pupil is concave. It gets thickest halfway between the pupil and the outer rim, then tapers off as you approach the root/ciliary body. Because it’s made of smooth muscle fibers, this thickness profile varies depending on how much the pupil is contracted or dilated.

In “Pixar eyes”, the iris is modeled as a shallow concave cone. This makes it catch the light and reflect a broad specular spot, giving the eye some pop to appear more alive.

CD38 - I’ve made a model using your description, so I guess it is like the picture I posted, do I have it about right? All the tutorials I’ve seen are doing it wrong then. Also I made a shape key for pupil dilation. http://www.pasteall.org/blend/31298

It still doesn’t seem very realistic to me when I render it, what else am I getting wrong?

Geometricity,
when interpreting the image that you posted, you have to take into account the distortion due to the refractive indexes of both the cornea and the anterior chamber, and the shape of the cornea itself.


paolo

if you want to be more realist try it with cycles !

you did add bump map or real geometry for the inside

happy bl

So I found this: http://hyperphysics.phy-astr.gsu.edu/hbase/vision/eyescal.html

It says that the ior of the cornea is 1.376 and the ior of the aqueous humor is 1.336. Do I add those 2 up or do I just do the highest one?

And how would I find the exact mirror reflectivity of the eyes, can’t seem to find it on google search.

If you want to do it really realistic, you should model the cornea also in its interior shape and assign to that surface a IOR of 1,0299 (1.376/1.336) then make an object filling the empty space and give it a IOR = 1.336 (without overlapping surfaces).
Though, after all, I think that a value in the middle for the IOR assigned to the whole cornea would approximate well enough.

As for the reflectivity, you can assign the IOR and roughness= 0 (or very small) to the glass node in cycle.

paolo

I don’t think adding IOR values is going to do any good, since each time light enters a surface IOR bends it at the angle dictated by the IOR. Light passing through at two different points will have a different ray path than light passing through at one. …If I am understanding your question correctly.

I wouldn’t worry about the exact reflectivity value. Just get the model in similar lighting as a reference photo or two and well, eyeball it.

Here’s a great 4-part video tutorial series by Alex Alvarez of Gnomon. It’s for Maya but all the same concepts apply in Blender. I’ve been meaning to “port” this tut to a Blender version for the longest. Actually I started one on the wiki back in the day but life happened and unfortunately I didn’t finish it.

Also be careful of reference images of unhealthy eyes. The first one you posted is one such image. The iris is not in good shape and it’s fairly bloodshot too. Maybe good for a tattered character or monster or something but not what you want on a healthy character. If you are conscious of it you can spot which look normal and which are afflicted with some ailment.

Good luck!

Also: if your stated purpose is to create a medical video that must “model a physically-correct (healthy or diseased) human eye,” then all of these concerns of physical accuracy might well be relevant. But in all other cases, well, they aren’t.

Once you’ve decided upon all the shots in which a character’s eyes are going to be visible and subject to “extreme close-up (ECU)” scrutiny, then you can decide just how much detail is needed to carry the shot convincingly. Details of reflections across the cornea, the appearance of a believable iris, and (perhaps most likely) convincing “tiny eye movements,” will be most-important then, and, even then, “only up to a point.” There’s a point of diminishing returns, and it comes up fast.

You might well have several models of things like heads and faces. If the camera’s three inches away from the face as Our Heroine makes the brilliant realization that will Save The Planet, yeah, then you need an incredibly accurate eye. But if it’s a few feet away, though, using the same model (or perhaps, any model) will not “meaningly affect the pixels produced” to justify the CPU time consumed. Subtle nuances of her human performance will be what the audience actually sees . . .

I’ve mapped a texture I made on the model but as you can see the eye on the right doesn’t look like Sourvinos’s reference. I don’t know if it’s because the refraction is off or the geometry, I’ll have to tweak them to see what comes out best.


Unfortunately my computer wasn’t really built for cycles so I’m stuck using Blender’s old rendering engine. It was done with a hemi lamp set to .5 and a point light set to 1. No ambient occlusion.

Quantum Anomaly - You should definitely do a tutorial on that series, I don’t plan on registering with that site anytime soon.

Sundialsvc4 - All I want is for the eye to look real from the outside, no medical purposes just close up animation. I’m making it so other people can use it for their animations, so I want to get it as perfect as possible. I’m also trying to make a realistic eyeball for the blender game engine. I know that’s a whole different thing, but having the "real one around could also serve as a reference for the game one.

And I’m still not sure what the proper shape of the iris is people. Did I do it right in the file I posted? There has to be something that tells me the exact shape of the iris right? Are there any laser scans of an actual human iris?

First of, I’m not expert of BI though I don’t think you can get any realistic with it.

Your eye model seems to have the cornea separated from the conjunctiva, while in reality they are a whole connected piece, where the shape changes its radius but the angle is smoothed a little. The glossiness should be the same as well, while in you picture the conjunctive looks metallic and smooth like a Christmas ball.

With render engines other than BI, I would suggest to model cornea and conjunctiva as a whole and make it transparent and glossy, inside there should be a diffusing sphere flattened at the iris and with the hole of the pupil.
This way you can also map iris and conjunctiva by just one texture, or provide a blurred mask to separate them in a proper way; in fact the border between them is not as sharp as it is in you image, but rather soft.

paolo

I threw together a quick and dirty proof-of-concept eye. It’s all procedural, no image textures (except the cornea map). And the geometry and over-all accuracy are very rough. But it should give you an idea of the best approach for getting realistic eyes.


Besides texturing there are two key things:

  • The cornea map
  • The cornea refracting correctly with the iris being a separate object inside

Cycles-related things worth noting:
I had to set Clamp Indirect to 1 or else fireflies would accumulate too much inside the cornea.
I put a flat circle back in the pupil with a black disconnected node to “eat” light that enters it.

If you’re not using Cycles it’s going to make realism much harder for you to achieve.
But using a cornea map (a UV texture mask that separates the cornea material from the white part) …will help a lot.
Right now you have hard edge Pixar style eyes. Works for Toy Story, but not in real life.

My setup:


When UV unwrapping, the top and bottom circles are best unwrapped “From View” and the midsection as “Cylinder Projection”.
Then just go into Texture Paint Mode and paint inside the cornea area, save that as an image, and that becomes your cornea map.
Good luck.

Sourvinos - I have one cornea piece with refraction/reflection, and one eyeball piece that has all the textures on it. I smoothed out the transition from iris to sclera on my diffuse map. I think the metallic look had to do with a bad specularity map, how does it look now?

Quantum Anomaly - I can tell that eye would look pretty good with proper textures, but I can’t use cycles right now. For the cornea map, I think a reflection map might do the trick for that but I’m not exactly sure what the different material properties are of the cornea and sclera though. Also I do not have a cylindrical map like that, how important is that? I’m not going to need to see the back so I’ve done my uv map as just one big half sphere.

I think I’ve fixed the geometry for the iris, I now have it as slightly concave, so now you can see the similarity of the real ones. I think it looks pretty good for not being rendered in cycles but I’m probably overlooking a ton of stuff


I think you are pretty near to the real.

paolo

Nice! Looking much better with the gradient between the cornea and sclera.

One suggestion - add a bump map.
The cornea should have no bumps, as it is a near perfect lens. But if you look at the sclera of a real eye the reflections are not perfectly smooth. There are subtle bumps. The veins also have subtle bumps. So I would add a clouds bump texture and also use the veins you painted as a bump texture on top of that. It’s easy to overdo it, so the key word here is subtle. What you want is for the specular reflections on the sclera to ripple a bit, not be sharp like those on the cornea.

If you can’t use Cycles don’t sweat it. It’s an opportunity to learn Blender Internal better so that when you do move to Cycles in the future you can appreciate your roots. :wink:
The eye I am currently using as my avatar was rendered with Blender Internal in 2008 and I was pretty happy with how it turned out at the time. The key is detailed textures, bump maps, and detailed lighting in appropriate amounts.

The cylindrical unwrapping is just good for when you texture the veins, that’s all. It gives a nice and easy flat map to paint on. But it looks like you’ve got the vein texturing all taken care of, so in your case I wouldn’t worry about it.

I tried rendering with cycles and I think it turned out great, even though I only used a diffuse for the eyeball and glass material for the cornea. It’s a lot more pink than before, which is due to cycles using the colors of the hdr map for light. The tip to clamp indirect to 1 was a big help with speeding it up, thanks Quantum!



I do plan on making the normal maps for the sclera ripple and veins, but that means I would have to have two different normal maps, one for the eyeball veins(which I already have) and one for the transparent sclera/cornea object.

There’s also a problem when I introduce a light into the scene in cycles. In the picture below the left eye has no cornea/sclera glass material and you can see all of the light from the sun lamp is hitting it. But the eye on the right with the glass material covering the eyeball never gets brighter, no matter how high the energy output of the light is, but they both cast the same shadow. Anybody have an idea why?

on thing here is that you HDRI is changing the mat color!

but looking nice

happy bl

I know it’s changing the way the scene is lit, but it seems to be a problem with the glass material or the render setting since the diffuse object is being lit by the lamp. The glass might not be transmitting the light to the diffuse eyeball underneath, but I don’t know.