|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I've been trying to figure this out for a while. Let's say one specifies an ior
of 1.5 (in the interior {} block). Can't POV-Ray automatically calculate the
reflectance and transmittance? It knows the angle of the incident light and the
index of refraction of the two media. Even with the fresnel keyword, however,
POV-Ray still requires me to manually calculate and plug in the reflectance and
transmittance. Am I missing something?
Sincerely,
Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Am 17.07.2012 14:54, schrieb Chaanakya:
> I've been trying to figure this out for a while. Let's say one specifies an ior
> of 1.5 (in the interior {} block). Can't POV-Ray automatically calculate the
> reflectance and transmittance? It knows the angle of the incident light and the
> index of refraction of the two media. Even with the fresnel keyword, however,
> POV-Ray still requires me to manually calculate and plug in the reflectance and
> transmittance. Am I missing something?
(1) Historical reasons; early versions didn't have the fresnel keyword,
and instead required you to tweak various parameters until the result
looked reasonably ok. The parameters are still there.
(2) The fresnel formulae for reflectance and transmittance are correct
for ideal, perfectly smooth surfaces, but real surfaces aren't that way;
a surface with plenty of microscopic scratches, for instance, will
exhibit a mix of specular reflection (from light rays that hit undamaged
areas) and lamtertian diffuse reflection (from rays that hit a scratch).
Lambertian law would also imply that in order to reduce the specular
reflections on LCD displays you'd have to blur them, but researchers
recently developed a surface microstructure (at below-wavelength scale)
that will actually /suppress/ reflections.
(3) The fresnel formulae are correct for single interfaces, but real
surfaces frequently involve some coating, making it a stack of multiple
interfaces; it is much easier (in terms of geometric modelling and/or
computational effort) to handle such surfaces with a tweaked
single-interface model, rather than simulate the interactions between
the material layers.
(4) Manually calculating reflectance and transmittance for an ideal
surface shouldn't be necessary if you use both fresnel and conserve_energy.
(BTW, is there any reason you ask this in the unix-specific newsgroup?)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
clipka <ano### [at] anonymousorg> wrote:
> Am 17.07.2012 14:54, schrieb Chaanakya:
> > I've been trying to figure this out for a while. Let's say one specifies an ior
> > of 1.5 (in the interior {} block). Can't POV-Ray automatically calculate the
> > reflectance and transmittance? It knows the angle of the incident light and the
> > index of refraction of the two media. Even with the fresnel keyword, however,
> > POV-Ray still requires me to manually calculate and plug in the reflectance and
> > transmittance. Am I missing something?
>
> (1) Historical reasons; early versions didn't have the fresnel keyword,
> and instead required you to tweak various parameters until the result
> looked reasonably ok. The parameters are still there.
>
> (2) The fresnel formulae for reflectance and transmittance are correct
> for ideal, perfectly smooth surfaces, but real surfaces aren't that way;
> a surface with plenty of microscopic scratches, for instance, will
> exhibit a mix of specular reflection (from light rays that hit undamaged
> areas) and lamtertian diffuse reflection (from rays that hit a scratch).
> Lambertian law would also imply that in order to reduce the specular
> reflections on LCD displays you'd have to blur them, but researchers
> recently developed a surface microstructure (at below-wavelength scale)
> that will actually /suppress/ reflections.
>
> (3) The fresnel formulae are correct for single interfaces, but real
> surfaces frequently involve some coating, making it a stack of multiple
> interfaces; it is much easier (in terms of geometric modelling and/or
> computational effort) to handle such surfaces with a tweaked
> single-interface model, rather than simulate the interactions between
> the material layers.
>
> (4) Manually calculating reflectance and transmittance for an ideal
> surface shouldn't be necessary if you use both fresnel and conserve_energy.
>
>
> (BTW, is there any reason you ask this in the unix-specific newsgroup?)
1) Okay. I understand
2) For my application, I'm assuming that the surface is perfectly smooth, so as
long as POV-Ray uses the fresnel equations, that's fine by me.
3) I am again assuming that there is no coating on those interfaces and am
layering slabs in order to force computation of interactions between the layers,
so this is also fine.
4) I have found that if I only specify the IOR, conserve_energy, and fresnel
(with no pigment { transmit N.N } block), the object looks black. This is the
one thing I don't understand.
Also, no, there is no specific reason - I just have gotten pretty good responses
from the folks over here, so I decided to post here :)
Sincerely,
Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Chaanakya" <nomail@nomail> wrote:
> clipka <ano### [at] anonymousorg> wrote:
> > Am 17.07.2012 14:54, schrieb Chaanakya:
> > > I've been trying to figure this out for a while. Let's say one specifies an ior
> > > of 1.5 (in the interior {} block). Can't POV-Ray automatically calculate the
> > > reflectance and transmittance? It knows the angle of the incident light and the
> > > index of refraction of the two media. Even with the fresnel keyword, however,
> > > POV-Ray still requires me to manually calculate and plug in the reflectance and
> > > transmittance. Am I missing something?
> >
> > (1) Historical reasons; early versions didn't have the fresnel keyword,
> > and instead required you to tweak various parameters until the result
> > looked reasonably ok. The parameters are still there.
> >
> > (2) The fresnel formulae for reflectance and transmittance are correct
> > for ideal, perfectly smooth surfaces, but real surfaces aren't that way;
> > a surface with plenty of microscopic scratches, for instance, will
> > exhibit a mix of specular reflection (from light rays that hit undamaged
> > areas) and lamtertian diffuse reflection (from rays that hit a scratch).
> > Lambertian law would also imply that in order to reduce the specular
> > reflections on LCD displays you'd have to blur them, but researchers
> > recently developed a surface microstructure (at below-wavelength scale)
> > that will actually /suppress/ reflections.
> >
> > (3) The fresnel formulae are correct for single interfaces, but real
> > surfaces frequently involve some coating, making it a stack of multiple
> > interfaces; it is much easier (in terms of geometric modelling and/or
> > computational effort) to handle such surfaces with a tweaked
> > single-interface model, rather than simulate the interactions between
> > the material layers.
> >
> > (4) Manually calculating reflectance and transmittance for an ideal
> > surface shouldn't be necessary if you use both fresnel and conserve_energy.
> >
> >
> > (BTW, is there any reason you ask this in the unix-specific newsgroup?)
>
> 1) Okay. I understand
>
> 2) For my application, I'm assuming that the surface is perfectly smooth, so as
> long as POV-Ray uses the fresnel equations, that's fine by me.
>
> 3) I am again assuming that there is no coating on those interfaces and am
> layering slabs in order to force computation of interactions between the layers,
> so this is also fine.
>
> 4) I have found that if I only specify the IOR, conserve_energy, and fresnel
> (with no pigment { transmit N.N } block), the object looks black. This is the
> one thing I don't understand.
>
> Also, no, there is no specific reason - I just have gotten pretty good responses
> from the folks over here, so I decided to post here :)
>
> Sincerely,
>
> Chaanakya
For example, take this block of code:
#version 3.6;
#include "colors.inc"
global_settings {
max_trace_level 256
ambient_light White
assumed_gamma 1.0
}
camera {
location <0,5,0>
look_at <0,0,0>
}
light_source {
<0,1000,0>
color Red
}
plane {
y, -10
pigment { hexagon Green, White, Blue }
}
box {
<-1,-1,-1>,<1,1,1>
finish {
ambient 0
diffuse 0
conserve_energy
reflection { fresnel on }
specular 0
roughness 0.001
}
interior {
ior 1.5
}
}
This should render as (essentially) a glass cube. However, it comes out black.
- Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Am 17.07.2012 18:09, schrieb Chaanakya:
> 4) I have found that if I only specify the IOR, conserve_energy, and fresnel
> (with no pigment { transmit N.N } block), the object looks black. This is the
> one thing I don't understand.
Specify "transmit 1.0"; with conserve_energy, AFAIK you should be fine.
POV-Ray doesn't automatically do that for you because some people
/might/ want to model non-transparent reflective materials, you know ;-)
You might argue that specifying an ior should automatically imply
transparency, but this is not so: Real life opaque surfaces (or rather,
surfaces of opaque materials) obey fresnel's law as well, so for best
realism you need to use "fresnel on" and specify an ior for those as
well, and even top it off with "conserve_energy" to modulate the diffuse
reflection accordingly.
(All non-metallic "opaque" materials are actually transparent with very
strong absorption and/or scattering effects; it would be too complex to
model them as such though, hence the shortcut with a "surface color".)
If you have a scene with plenty of transparent stuff, you might want to
specify "default { pigment { rgbt 1 } }" at the beginning of your scene
file to save you a bit of typing.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
clipka <ano### [at] anonymousorg> wrote:
> Am 17.07.2012 18:09, schrieb Chaanakya:
>
> > 4) I have found that if I only specify the IOR, conserve_energy, and fresnel
> > (with no pigment { transmit N.N } block), the object looks black. This is the
> > one thing I don't understand.
>
> Specify "transmit 1.0"; with conserve_energy, AFAIK you should be fine.
>
> POV-Ray doesn't automatically do that for you because some people
> /might/ want to model non-transparent reflective materials, you know ;-)
>
> You might argue that specifying an ior should automatically imply
> transparency, but this is not so: Real life opaque surfaces (or rather,
> surfaces of opaque materials) obey fresnel's law as well, so for best
> realism you need to use "fresnel on" and specify an ior for those as
> well, and even top it off with "conserve_energy" to modulate the diffuse
> reflection accordingly.
>
> (All non-metallic "opaque" materials are actually transparent with very
> strong absorption and/or scattering effects; it would be too complex to
> model them as such though, hence the shortcut with a "surface color".)
>
> If you have a scene with plenty of transparent stuff, you might want to
> specify "default { pigment { rgbt 1 } }" at the beginning of your scene
> file to save you a bit of typing.
Something's not working correctly - if I make a cube with an IOR of 1.5
(essentially a glass cube), I don't see a reflection. There should be a
reflection at some point of the cube, but I don't see that. I should see a
difference with conserve_energy toggled, but I'm not seeing that. I think
there's something else that needs to be done, but I'm not sure what.
- Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Chaanakya" <nomail@nomail> wrote:
> clipka <ano### [at] anonymousorg> wrote:
> > Am 17.07.2012 18:09, schrieb Chaanakya:
> >
> > > 4) I have found that if I only specify the IOR, conserve_energy, and fresnel
> > > (with no pigment { transmit N.N } block), the object looks black. This is the
> > > one thing I don't understand.
> >
> > Specify "transmit 1.0"; with conserve_energy, AFAIK you should be fine.
> >
> > POV-Ray doesn't automatically do that for you because some people
> > /might/ want to model non-transparent reflective materials, you know ;-)
> >
> > You might argue that specifying an ior should automatically imply
> > transparency, but this is not so: Real life opaque surfaces (or rather,
> > surfaces of opaque materials) obey fresnel's law as well, so for best
> > realism you need to use "fresnel on" and specify an ior for those as
> > well, and even top it off with "conserve_energy" to modulate the diffuse
> > reflection accordingly.
> >
> > (All non-metallic "opaque" materials are actually transparent with very
> > strong absorption and/or scattering effects; it would be too complex to
> > model them as such though, hence the shortcut with a "surface color".)
> >
> > If you have a scene with plenty of transparent stuff, you might want to
> > specify "default { pigment { rgbt 1 } }" at the beginning of your scene
> > file to save you a bit of typing.
>
> Something's not working correctly - if I make a cube with an IOR of 1.5
> (essentially a glass cube), I don't see a reflection. There should be a
> reflection at some point of the cube, but I don't see that. I should see a
> difference with conserve_energy toggled, but I'm not seeing that. I think
> there's something else that needs to be done, but I'm not sure what.
>
> - Chaanakya
Also, the example given in this thread should work with this method and it
doesn't:
http://news.povray.org/povray.beta-test/message/%3Cweb.500469a1adf6cd217f523b7e0%40news.povray.org%3E/#%3Cweb.500469a1a
df6cd217f523b7e0%40news.povray.org%3E
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Am 17.07.2012 19:13, schrieb Chaanakya:
>> If you have a scene with plenty of transparent stuff, you might want to
>> specify "default { pigment { rgbt 1 } }" at the beginning of your scene
>> file to save you a bit of typing.
>
> Something's not working correctly - if I make a cube with an IOR of 1.5
> (essentially a glass cube), I don't see a reflection. There should be a
> reflection at some point of the cube, but I don't see that.
Uh... yes, you should /definitely/ see a reflection. You do have some
surroundings to reflect in the cube, don't you?
And I'm presuming you did specify "finish { reflection { 1.0 fresnel } }".
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
clipka <ano### [at] anonymousorg> wrote:
> Am 17.07.2012 19:13, schrieb Chaanakya:
>
> >> If you have a scene with plenty of transparent stuff, you might want to
> >> specify "default { pigment { rgbt 1 } }" at the beginning of your scene
> >> file to save you a bit of typing.
> >
> > Something's not working correctly - if I make a cube with an IOR of 1.5
> > (essentially a glass cube), I don't see a reflection. There should be a
> > reflection at some point of the cube, but I don't see that.
>
> Uh... yes, you should /definitely/ see a reflection. You do have some
> surroundings to reflect in the cube, don't you?
>
> And I'm presuming you did specify "finish { reflection { 1.0 fresnel } }".
Does this look like a glass cube?
#version 3.6;
#include "colors.inc"
#include "CIE.inc"
global_settings {
max_trace_level 1024
ambient_light White
assumed_gamma 1.0
}
camera {
location <3.5,3.5,0>
//rotate <0,-clock*360,0>
look_at <0,0,0>
}
light_source {
<1000, 1000, 0>
color White
}
plane {
y, -10.0
pigment { checker Green, White }
}
box {
<-1,-1,-1>,<1,1,1>
pigment {
transmit 1
}
finish {
ambient 0
diffuse 0
conserve_energy
reflection {
1.0
fresnel on
}
specular 0
roughness 0.001
}
interior {
ior 1.5
}
}
As I said, something doesn't look right here. Thank you so much for your help!
- Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Chaanakya" <nomail@nomail> wrote:
> clipka <ano### [at] anonymousorg> wrote:
> > Am 17.07.2012 19:13, schrieb Chaanakya:
> >
> > >> If you have a scene with plenty of transparent stuff, you might want to
> > >> specify "default { pigment { rgbt 1 } }" at the beginning of your scene
> > >> file to save you a bit of typing.
> > >
> > > Something's not working correctly - if I make a cube with an IOR of 1.5
> > > (essentially a glass cube), I don't see a reflection. There should be a
> > > reflection at some point of the cube, but I don't see that.
> >
> > Uh... yes, you should /definitely/ see a reflection. You do have some
> > surroundings to reflect in the cube, don't you?
> >
> > And I'm presuming you did specify "finish { reflection { 1.0 fresnel } }".
>
> Does this look like a glass cube?
>
> #version 3.6;
> #include "colors.inc"
> #include "CIE.inc"
>
> global_settings {
> max_trace_level 1024
> ambient_light White
> assumed_gamma 1.0
> }
>
> camera {
> location <3.5,3.5,0>
> //rotate <0,-clock*360,0>
> look_at <0,0,0>
> }
>
> light_source {
> <1000, 1000, 0>
> color White
> }
>
> plane {
> y, -10.0
> pigment { checker Green, White }
> }
>
> box {
> <-1,-1,-1>,<1,1,1>
> pigment {
> transmit 1
> }
> finish {
> ambient 0
> diffuse 0
> conserve_energy
> reflection {
> 1.0
> fresnel on
> }
> specular 0
> roughness 0.001
> }
> interior {
> ior 1.5
> }
> }
>
> As I said, something doesn't look right here. Thank you so much for your help!
>
> - Chaanakya
Never mind....when I rerendered the 1/sqrt(2) IOR (mentioned in the thread I
linked to above), I got the expected result. Hence, this problem has been
solved. Thank you very much for bearing with me :D
Sincerely,
- Chaanakya
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|