POV-Ray : Newsgroups : povray.general : How does POV handle IORs? Server Time
6 Aug 2024 16:57:27 EDT (-0400)
  How does POV handle IORs? (Message 1 to 10 of 11)  
Goto Latest 10 Messages Next 1 Messages >>>
From: Lutz-Peter Hooge
Subject: How does POV handle IORs?
Date: 29 Jan 2002 17:25:13
Message: <MPG.16c13f9478298a549896d4@news.povray.org>
Hi,

When a ray first enters an object of, say ior 1.5, and then one with ior 
1.3 (without leaving the first object), is that IOR than regarded 
relative to the containing object, or absolute?
And, when the ray than leaves the second object, does it "remember" that 
the outside has ior 1.5?

The reason I ask is, I made a glass with a liqid inside.
The common way to do this, is to scale the "liquid" by, .999.
But this causes the render to become very slow, because of reflections 
between the liqid and the glass, because there are now two surfaces where 
in reality there should be only one. So I had the idea to clip the glass 
by a slightly bigger inverted copy of the liqid. 

This is much faster, but I'm not sure if it gives correct results?

Lutz-Peter


Post a reply to this message

From: Warp
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 17:32:27
Message: <3c5722fa@news.povray.org>
Lutz-Peter Hooge <lpv### [at] gmxde> wrote:
: When a ray first enters an object of, say ior 1.5, and then one with ior 
: 1.3 (without leaving the first object), is that IOR than regarded 
: relative to the containing object, or absolute?
: And, when the ray than leaves the second object, does it "remember" that 
: the outside has ior 1.5?

  AFAIK povray always remembers what is the current ior of the space the
current ray is travelling.

-- 
#macro N(D)#if(D>99)cylinder{M()#local D=div(D,104);M().5,2pigment{rgb M()}}
N(D)#end#end#macro M()<mod(D,13)-6mod(div(D,13)8)-3,10>#end blob{
N(11117333955)N(4254934330)N(3900569407)N(7382340)N(3358)N(970)}//  - Warp -


Post a reply to this message

From: Rune
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 17:47:16
Message: <3c572674@news.povray.org>
"Warp" wrote:
>   AFAIK povray always remembers what is the current
> ior of the space the current ray is travelling.

But how is the ior of the current space defined?

If object A has ior 1.3 and object B ior 1.5 and a ray goes like this:

enter A
enter B
*
leave A
leave B

...then what is the ior in the space marked by * ?

Rune
--
3D images and anims, include files, tutorials and more:
Rune's World:    http://rsj.mobilixnet.dk (updated Jan 20)
POV-Ray Users:   http://rsj.mobilixnet.dk/povrayusers/
POV-Ray Webring: http://webring.povray.co.uk


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 18:01:30
Message: <3c5729ca@news.povray.org>
In article <MPG.16c13f9478298a549896d4@news.povray.org> , Lutz-Peter Hooge
<lpv### [at] gmxde>  wrote:

> When a ray first enters an object of, say ior 1.5, and then one with ior
> 1.3 (without leaving the first object), is that IOR than regarded
> relative to the containing object, or absolute?
> And, when the ray than leaves the second object, does it "remember" that
> the outside has ior 1.5?
>
> The reason I ask is, I made a glass with a liqid inside.
> The common way to do this, is to scale the "liquid" by, .999.
> But this causes the render to become very slow, because of reflections
> between the liqid and the glass, because there are now two surfaces where
> in reality there should be only one. So I had the idea to clip the glass
> by a slightly bigger inverted copy of the liqid.
>
> This is much faster, but I'm not sure if it gives correct results?

Not sure if it is anywhere else, but the 4th paragraph of
<http://www.povray.org/working-docs/id000174.html#6_6_1>
explains how and where the ior is used.

    Thorsten

____________________________________________________
Thorsten Froehlich, Duisburg, Germany
e-mail: tho### [at] trfde

Visit POV-Ray on the web: http://mac.povray.org


Post a reply to this message

From: Ron Parker
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 19:38:51
Message: <slrna5eg4v.l4n.ron.parker@fwi.com>
On Tue, 29 Jan 2002 23:46:26 +0100, Rune wrote:
> "Warp" wrote:
>>   AFAIK povray always remembers what is the current
>> ior of the space the current ray is travelling.
> 
> But how is the ior of the current space defined?
> 
> If object A has ior 1.3 and object B ior 1.5 and a ray goes like this:
> 
> enter A
> enter B
> *
> leave A
> leave B
> 
> ...then what is the ior in the space marked by * ?

1.5.  The important question, believe it or not, is what is the IOR 
between "leave A" and "leave B".  I actually had to look this one up, 
and I think the behaviour changed between 3.1 and 3.5.

Here's the map of how it works:

IOR
  
1.0  
    enter A
1.3  
    enter B
1.5  
    leave A
1.5  (the IOR of the remaining "innermost" object)
    leave B
1.0  

Here's what happens when the water is scaled slightly larger than the inside
profile of the glass:

1.0   air (inside: air)
     enter glass
1.5   glass (inside: air glass)
     enter water
1.3   water (inside: air glass water)
     exit glass
1.3   water (inside: air water)
     enter glass
1.5   glass (inside: air water glass)
     exit water
1.5   glass (inside: air glass)
     exit glass
1.0   air (inside: air)

As you can see, this is preferable to the case where the water is slightly
smaller than the inside of the glass:

1.0   air (inside: air)
     enter glass
1.5   glass (inside: air glass)
     exit glass
1.0   air (inside: air)
     enter water
1.3   water (inside: air water)
     exit water
1.0   air (inside: air)
     enter glass
1.5   glass (inside: air glass)
     exit glass
1.0   air (inside: air)

This gives extra opportunities for TIR to occur, at the first glass->air 
transition and at the water->air transition.  This gives your glass a
silvery sheen like it would have if - surprise! - you had an air bubble 
between the glass and the water.

The way it's done means you only have one IOR transition at each interface,
even though you intersect two surfaces.

-- 
#local R=rgb 99;#local P=R-R;#local F=pigment{gradient x}box{0,1pigment{gradient
y pigment_map{[.5F pigment_map{[.3R][.3F color_map{[.15red 99][.15P]}rotate z*45
translate x]}]#local H=pigment{gradient y color_map{[.5P][.5R]}scale 1/3}[.5F
pigment_map{[.3R][.3H][.7H][.7R]}]}}}camera{location.5-3*z}//only my opinions


Post a reply to this message

From: Warp
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 19:59:27
Message: <3c57456f@news.povray.org>
So what I understand from this is that with respect to refraction, there's
not much difference between a water scaled a bit larger than the inner surface
of the glass compared to just water inside the glass (which doesn't have an
inner surface).
  The difference appear in other two things: The amount of reflection (two
surfaces reflect more than one) and the rendering speed (two reflecting and
refracting surfaces take much longer to render than just one surface).

-- 
#macro M(A,N,D,L)plane{-z,-9pigment{mandel L*9translate N color_map{[0rgb x]
[1rgb 9]}scale<D,D*3D>*1e3}rotate y*A*8}#end M(-3<1.206434.28623>70,7)M(
-1<.7438.1795>1,20)M(1<.77595.13699>30,20)M(3<.75923.07145>80,99)// - Warp -


Post a reply to this message

From: Lutz-Peter Hooge
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 20:29:06
Message: <MPG.16c16aaebba42d599896d5@news.povray.org>
In article <slr### [at] fwicom>, ron### [at] povrayorg 
says...

> Here's what happens when the water is scaled slightly larger than the inside
> profile of the glass:

Ah, thanks very much!
I'm currently testing it.

The problem of reflections between the two surfaces than should be 
solvable by adding a non-reflective interior-texture to the liquid, I 
hope :-)

Lutz-Peter


Post a reply to this message

From: Ron Parker
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 20:50:00
Message: <slrna5ekac.shm.ron.parker@fwi.com>
On Wed, 30 Jan 2002 02:28:31 +0100, Lutz-Peter Hooge wrote:
> In article <slr### [at] fwicom>, ron### [at] povrayorg 
> says...
> 
>> Here's what happens when the water is scaled slightly larger than the inside
>> profile of the glass:
> 
> Ah, thanks very much!
> I'm currently testing it.
> 
> The problem of reflections between the two surfaces than should be 
> solvable by adding a non-reflective interior-texture to the liquid, I 
> hope :-)

You're more likely to have success if you add a non-reflective interior
texture to both the glass and the liquid.

-- 
#macro R(L P)sphere{L F}cylinder{L P F}#end#macro P(V)merge{R(z+a z)R(-z a-z)R(a
-z-z-z a+z)torus{1F clipped_by{plane{a 0}}}translate V}#end#macro Z(a F T)merge{
P(z+a)P(z-a)R(-z-z-x a)pigment{rgbf 1}hollow interior{media{emission 3-T}}}#end 
Z(-x-x.2x)camera{location z*-10rotate x*90normal{bumps.02scale.05}}


Post a reply to this message

From: Lutz-Peter Hooge
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 21:15:11
Message: <MPG.16c1757bc158e54e9896d7@news.povray.org>
In article <slr### [at] fwicom>, ron### [at] povrayorg 
says...

> You're more likely to have success if you add a non-reflective interior
> texture to both the glass and the liquid.

No, I want to have reflections inside the glass itself.
But I was wrong with the water, it doesn't need any reflective surface on 
either side (only on its "true" surfaces, but thats not a problem because 
that is a differenced plane anyway)

Lutz-Peter


Post a reply to this message

From: Christopher James Huff
Subject: Re: How does POV handle IORs?
Date: 29 Jan 2002 22:29:30
Message: <chrishuff-3BF865.22315029012002@netplex.aussie.org>
Will POV render correctly in the case where the ray exits through a 
water/air surface? For example, looking upward through a glass bowl of 
water?

-- 
Christopher James Huff <chr### [at] maccom>
POV-Ray TAG e-mail: chr### [at] tagpovrayorg
TAG web site: http://tag.povray.org/


Post a reply to this message

Goto Latest 10 Messages Next 1 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.