POV-Ray : Newsgroups : povray.advanced-users : Diamond material Server Time
25 Nov 2024 07:26:41 EST (-0500)
  Diamond material (Message 1 to 10 of 14)  
Goto Latest 10 Messages Next 4 Messages >>>
From: Rebel^v^
Subject: Diamond material
Date: 1 Apr 2003 06:51:52
Message: <3e897d58$1@news.povray.org>
I need to help with my diamond material, I still
can not find the real looking values. (Those does not look well)

#declare M_Dia=    material {
  texture {
    pigment {rgbt 1}
    finish {
      ambient 0
      diffuse 0.05
      specular 0.5
      roughness 0.005
      reflection {
        0.03, 1.0
        fresnel on
      }
      conserve_energy
    }
  }
  interior {
    ior 2.17
    fade_power 1001
    fade_distance 0
   fade_color <10.,0.1,10>
  }
}


Post a reply to this message

From: Doctor John
Subject: Re: Diamond material
Date: 1 Apr 2003 07:35:00
Message: <3e898774$1@news.povray.org>
"Rebel^v^" <sku### [at] hotmailcom> wrote in message
news:3e897d58$1@news.povray.org...
> I need to help with my diamond material, I still
> can not find the real looking values.

Firstly, the correct ior of diamond is 2.47
Secondly, try increasing specular to about 0.75 and decrease roughness to
around 0.001.

I haven't tried these settings myself but I'd guess that they should give
you a better starting point for experimentation.

John
--
Run Fast
Run Free
Run Linux


Post a reply to this message

From: Matti Karnaattu
Subject: Re: Diamond material
Date: 1 Apr 2003 18:10:06
Message: <web.3e8a1b9287eb1c75bef0bd7d0@news.povray.org>
Rebel^v^ wrote:
>I need to help with my diamond material, I still
>can not find the real looking values. (Those does not look well)

Here is my diamond. I tried to make it physically accurate.

----------------------------------------------------------------------

#declare M_Diamond = material {
  texture {
    pigment {
      rgbf <0.95294, 0.95294, 0.90588, 1>
      quick_color rgb <0.95294, 0.95294, 0.90588>
    }
    finish {
      ambient 0
      diffuse 1
      //reflection 0.4011
      reflection { 1.0 fresnel }
    }
  }
  interior {
    ior 2.418
    //caustics 1
    dispersion 1.044
    dispersion_samples 7
  }
}

----------------------------------------------------------------------

I didn't write any highlight because highlights are dependent from
lightning.

Reflection 0.4011 is approximate reflection calculated from fresnel
reflection. You can use it instead of fresnel to get more speed.
Approximate reflection value is also useful when calculating highlight
specular values when using low intensities in lightsources.

Uncomment caustics 1 if you don't use photons. Default dispersion_samples is
7. You can multiply it to get better detail. For perfect dispersion
multiply it with contrast levels of the output image. Example 255 for 24bit
image.

I recommend you to use photons and set max_trace_level high. Please render
your diamond scene to us :)

Matti


Post a reply to this message

From: Retsam
Subject: Re: Diamond material
Date: 2 Apr 2003 18:50:05
Message: <web.3e8b767a87eb1c752a3ff2e70@news.povray.org>
>  interior {
>    ior 2.418
>    dispersion 1.044

Since the ior's range from about 2.407 to 2.452 (different charts have
different ranges), the ior should be set to (2.407+2.452)/2, or about
2.429, with a dispersion of (2.452/2.407), or about 1.0187.  If you're not
as picky about the precision, try 2.43 and 1.019.


Post a reply to this message

From: Matti Karnaattu
Subject: Re: Diamond material
Date: 10 Apr 2003 04:05:04
Message: <web.3e9524dc87eb1c75572284940@news.povray.org>
>>  interior {
>>    ior 2.418
>>    dispersion 1.044

>Since the ior's range from about 2.407 to 2.452 (different charts have
>different ranges), the ior should be set to (2.407+2.452)/2, or about
>2.429, with a dispersion of (2.452/2.407), or about 1.0187.  If you're not
>as picky about the precision, try 2.43 and 1.019.

Hmm.. I think that I should set more correct iors and dispersions to some of
my materials. I didn't compare my charts and dispersion value isn't
calculated. It was taken from chart. Because material ior depends on light
wavelength it can't be calculated averaging two ior values. I should take
many ior values with known light wavelength and weight them with human
luminance response curve to calculate exact value. Formula to calculate
material dispersion is different than (max_ior/min_ior). I don't remember
correct formula now.

Matti


Post a reply to this message

From: Retsam
Subject: Re: Diamond material
Date: 10 Apr 2003 15:05:07
Message: <web.3e95c02987eb1c752a3ff2e70@news.povray.org>
Matti Karnaattu wrote:
>Formula to calculate
>material dispersion is different than (max_ior/min_ior). I don't remember
>correct formula now.

Actually, if I read the source code for POV-Ray correctly, (max_ior/min_ior)
is the dispersion.  When POV-Ray calculates the dispersion, it starts with:
        ior = ior /sqrt(disp);
        ior_mult = pow(disp, 1.0/(disp_nelems-1));

Then, in the dispersion loop, it does this:

          ior *= ior_mult;

The net result is that the IOR will range from ior/sqrt(disp) to
ior*sqrt(disp).

Assuming max_ior = ior*sqrt(disp), min_ior = ior/sqrt(disp), then
max_ior/min_ior = ior*sqrt(disp) / (ior/sqrt(disp)) = sqrt(disp)*sqrt(disp)
= disp

It's not the most realistic, because dispersion for many substances tends to
be lower in the red-yellow range, then increase significantly in the
green-violet range.  I liked the MegaPov patch, because you could specify a
dispersion palette.  This way, you could keep the red-yellow range narrow
and bright, and the green-violet range wide and dimmer, for more realism.


Post a reply to this message

From: Matti Karnaattu
Subject: Re: Diamond material
Date: 15 Apr 2003 08:45:05
Message: <web.3e9bf89987eb1c75572284940@news.povray.org>
>Actually, if I read the source code for POV-Ray correctly, (max_ior/min_ior)
>is the dispersion.  When POV-Ray calculates the dispersion, it starts with:
>        ior = ior /sqrt(disp);
>        ior_mult = pow(disp, 1.0/(disp_nelems-1));

>Then, in the dispersion loop, it does this:
>
>          ior *= ior_mult;
>
>The net result is that the IOR will range from ior/sqrt(disp) to
>ior*sqrt(disp).

This is correct.

>Assuming max_ior = ior*sqrt(disp), min_ior = ior/sqrt(disp), then
>max_ior/min_ior = ior*sqrt(disp) / (ior/sqrt(disp)) = sqrt(disp)*sqrt(disp)
>= disp

And this is not. You forgot the light wavelenghts. Pov-Ray dispersion
calculation make simple rainbow for light which ior will range from
ior/sqrt(disp) to ior*sqrt(disp). To calculate correct dispersion value we
need several ior values and the light wavelenghts used to measure ior
values to approximate dispersion value.

Matti


Post a reply to this message

From: Ken
Subject: Re: Diamond material
Date: 15 Apr 2003 09:21:14
Message: <3E9C0759.5250B2D4@pacbell.net>
Matti Karnaattu wrote:

> And this is not. You forgot the light wavelenghts. Pov-Ray dispersion
> calculation make simple rainbow for light which ior will range from
> ior/sqrt(disp) to ior*sqrt(disp). To calculate correct dispersion value we
> need several ior values and the light wavelenghts used to measure ior
> values to approximate dispersion value.

It should be noted that the dipersion feature in POV-Ray is merely an
approximation and was not designed or intended to offer a scientifically
valid method of light visualization.

-- 
Ken Tyler


Post a reply to this message

From: Retsam
Subject: Re: Diamond material
Date: 21 Apr 2003 17:20:14
Message: <web.3ea45f5987eb1c7534dff4bb0@news.povray.org>
>And this is not. You forgot the light wavelenghts. Pov-Ray dispersion
>calculation make simple rainbow for light which ior will range from
>ior/sqrt(disp) to ior*sqrt(disp). To calculate correct dispersion value we
>need several ior values and the light wavelenghts used to measure ior
>values to approximate dispersion value.
>
>Matti
>

One problem.  POV-Ray 3.5 doesn't support that.  You simply specify an IOR
and a dispersion.  And as I said, and as you conceded, ior will range from
ior/sqrt(disp) to ior*sqrt(disp), which means disp = max_ior/min_ior.

If you want something more accurate, you have to either do multiple renders
with hand-tweaked iors/palettes, or you have to use something like MegaPOV.
 The last time I used MegaPOV was version 0.4, and it supported a
hand-configured palette for dispersion.


Post a reply to this message

From: Matti Karnaattu
Subject: Re: Diamond material
Date: 22 Apr 2003 11:35:11
Message: <web.3ea560dd87eb1c75bef0bd7d0@news.povray.org>
>>To calculate correct dispersion value we need several ior values and the
>>light wavelenghts used to measure ior values to approximate dispersion value.

>One problem.  POV-Ray 3.5 doesn't support that.

I know. But that doesn't take out wavelengths from Dispersion approximation.
Only calculation is more complex.

>You simply specify an IOR and a dispersion. And as I said, and as you
>conceded, ior will range from ior/sqrt(disp) to ior*sqrt(disp), which means
>disp = max_ior/min_ior.

No. What is max_ior? and what is min_ior? Is it infrared or what? POV-Ray
dispersion draws colors between ~400nm to ~800nm, so we must know IOR
values wavelengths to approximate dispersion and base ior values.

Correct way to do this is set base ior to 555nm because human eye is most
sensitive 555nm light. To approximate dispersion, we need two other known
IOR values to approximate shape of light spectrum. IOR at red light (700nm)
and IOR at blue light (435.8nm). Now we have to solve dispersion value
where red and blue light are near as possible their real position when
POV-Ray draws spectrum. The formula is:

  D = (3*I555^4 - 3*(IRed*I555)^2 + 4*(IBlue*IRed)^2) / (4*(IRed*I555)^2)

Where

D     = Dispersion value
I555  = Material IOR at 555nm light
IRed  = Material IOR at 700nm light
IBlue = Material IOR at 435.8nm light

This formula uses IOR 555nm as green light and this is approximation.
Problem is that it's very difficult to transform rgb values to wavelengths.
Green light (546nm) is very near 555nm so the formula is still usable.

Matti


Post a reply to this message

Goto Latest 10 Messages Next 4 Messages >>>

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