|  |  | Bruno Cabasson wrote:
> I started the TerraPOV series with a preliminary article in 
> povray.binary.tutorials. Hope it is the right place for that. Following: 
> TerraPOV's sky system/Atmosphere.
> 
This is really very much appreciated, thanks a lot. I'm already waiting 
for the next episode ;)
Just one point: The rgb color calculation for the Rayleigh scattering is 
a bit, hmm, let's say problematic. Color conversion from wavelength 
values to any rgb color space should always done by using color 
transformation through the CIE xyz space.
I've quickly implemented it by using a Gaussian distribution around
the wavelength peak values and for the spectrum conversion my old CIE 
include file (part of Jaime's lightsys).
//-----------------------------------------------------
// Atmosphere: scattering color
#declare TP_LAMBDA_RED   = 650; // nanometres
#declare TP_LAMBDA_GREEN = 555; // nanometres
#declare TP_LAMBDA_BLUE  = 460; // nanometres
#include "CIE.inc"
#local TP_FACT_RED   = pow(TP_LAMBDA_BLUE/TP_LAMBDA_RED, 4);
#local TP_FACT_GREEN = pow(TP_LAMBDA_BLUE/TP_LAMBDA_GREEN, 4);
#local TP_FACT_BLUE  = 1;
#local TP_STEP = 5;          // integral step width for spline creation
#local TP_GAUSS_BELL = 45;   // get 95% distribution +/- 45nm around the 
peak value
#macro Gauss(Peak, Value, Fact)
   #local E = 2.7182818284;
   #local D = abs(Peak - Value) / TP_STEP;
   pow(E, -(D*D) / TP_GAUSS_BELL) * Fact
#end
#local TP_RALEIGH_SPECTRUM = spline
{  linear_spline
#local WL = 380;
#while (WL <= 760)
   WL, Gauss(TP_LAMBDA_RED,   WL, TP_FACT_RED) +
       Gauss(TP_LAMBDA_GREEN, WL, TP_FACT_GREEN) +
       Gauss(TP_LAMBDA_BLUE,  WL, TP_FACT_BLUE)
   #local WL = WL + TP_STEP;
#end
}
#declare TP_RAYLEIGH_SCATTERING_COLOR = 
EmissiveSpectrum(TP_RALEIGH_SPECTRUM);
//-----------------------------------------------------
Your calculation
#declare TP_RAYLEIGH_SCATTERING_COLOR = rgb 
<pow(TP_LAMBDA_BLUE/TP_LAMBDA_RED, 4), 
pow(TP_LAMBDA_BLUE/TP_LAMBDA_GREEN, 4),
1>;
gives
rgb <0.2508, 0.4719, 1.0000>
and my version
rgb <0.2625, 0.4436, 1.0000>
so the difference is subtle - but especially when the sun altitude is 
very low - noticeable. It looks slightly less 'greenish'.
Anyway, as said, I can hardly wait for the next part of your tutorial
-Ive
Post a reply to this message
 |  |