[Bf-committers] ior

Daniel Barbeau DanielPGB_Vasquez at hotmail.com
Sun Apr 3 21:53:10 CEST 2005

I was convinced that the "ball in a ball" (or the plane that cuts
through a transparent material) was visible because it behaved as a
dioptre and that the fresnel effect was acting to reflect light off
that boundary back to the eye.
Now that I give it some more thoughts, the above statement is
untrue... there will always be something between the two spheres : if
there was nothing it WOULD be just one sphere of same ior (no dioptre
for fresnel to act on). In cristals, we see fluid inclusions, but I
guess there can be just a little air instead, or even a slight void,
so fresnel acts on those dioptres. Ugh, all this is not in my courses
anymore : I'm extrapolating ^__^
But the best illustration I can think of for this is the windshield
one. Say a small rock hits it a creates a small impact in it. You see
multiple dioptres going in every direction, there is air in those. You
take your car to the mechanic: he can inject a glue in the impact, and
if he does it right you wont even see the impact after that =
different materials, close IOR, but no air = no dioptre, so you can't
see the change.

If i understand correctly, the refraction calculation only needs one
face and what can be derived from it, and the incident ray too. I
don't think there is a need for volume evaluation in the raytracing
process. This can lead to unreal stuff, but it's up to the artist to
control his effects. So the way Blender seems to do it is okay (at
least, I'm satisfied with it, especially since there is color
transmission :) )

I don't have a single clue about how all this is implemented in the
code, I just know some maths for it ( the most basic ones), and as I
see it, it shouldn't be too hard a change. But again, I have no idea
what is really going on in those mysterious lines :)
So I'll just let the great gurus here figure out what to do.

If I'm wrong, do not hesitate and correct me!
I hope this discussion was useful !

ciao
Dani
----- Original Message -----
From: "Frédéric van der Essen" <fred at mentalwarp.com>
To: "bf-blender developers" <bf-committers at projects.blender.org>
Sent: Sunday, April 03, 2005 8:12 PM
Subject: Re: [Bf-committers] ior

> Well  I mixed N and the IOR i think i was not well waked up :D
> Anyway if your solution is physically correct i guess it would be
> hard to implement
> since the raytracing is only computed at interfaces, taking the IOR
> as it was N = n2/n1
> but here n1 is always 1
>
> if you create a sphere with n=2 inside another one with n=2 you see
> refraction on the inside sphere.
> If the IOR value in blender is effectly the real IOR (n) then the
> system can be considered as broken because
> the inner sphere shouldn't be visible at all. If you consider the
> IOR value in blender as N =n2/n1
> then the system works correctly, but in this case it should be
> allowed to have values lower than 1 to simulate
> "holes" in the matter.
>
> What you said is totally correct but from the artist point of view
> setting a environment "n" value wouldn't be really practical
> because it would affect every refraction in the scene.
> And i guess that having a really physically correct raytracer that
> would take in count the volumes would be quite difficult with open
> or nonmanifold meshes
> where it is difficult to guess whitch part is inside and whitch is
> not...
>
> the way it works now is far from being physically correct but it is
> flexible and easy to use.
> but it can be a little misleading for those who want "realistic
> renders" and try to use the IOR value that they find in books.