[Radiance-general] Re: usage of plasdata material

Greg Ward gregoryjward at gmail.com
Sat Aug 16 23:03:42 PDT 2008


Dear Uta,

You may be a newbie or "noob," but your question is fairly advanced.   
Not many people have used the plasdata type, and you have gotten most  
of the specification correct.  Well done.  My additional comments are  
inline, below:

> From: "Uta Poppe" <uta.poppe at yahoo.de>
> Date: August 12, 2008 12:27:03 PM PDT
>
> Hello,
>
> I have some questions regarding the plasdata material. I couldn' t  
> find a documentation about it, thats why i must ask you.
> The material definition is:
>
> void plasdata blue
> 6 noop daten2.dat blue.cal sigma phi theta
> 0
> 4 0.1973 0.35612 0.6353 1
>
> The unit of the values is (1/sr), I think no further computation is  
> needed in this case, thats why I took the "noop"-Argument.
>
> the cal-file contains only the three angles:
> sigma(x,y,z) = acos(x*Nx+y*Ny+z*Nz)*180/PI;

This is correct, but I recommend using Acos() rather than cos()  
because it avoids problems when the dot product is epsilon greater  
than 1.0.
> phi(x,y,z) = acos( -(x*Dx+y*Dy+ z*Dz));
>
Are you sure about this one?  You seem to be computing the angle  
between incoming and outgoing vectors (in radians), rather than the  
azimuthal angle between projected vectors that most radially  
symmetric BRDFs require.  I think you want an atan2() expression.
> theta(x,y,z) = acos(Dx*Nx+Dy*Ny+Dz*Nz)*180/PI;
>
A shortcut for this is:

theta(x,y,z) = 180/PI * Acos(Rdot);

Putting the 180/PI out front (and/or enclosing it in parens) saves  
evaluation, since constant subexpressions are replaced by their values.
> sigma should define the angle between incoming light and surface  
> normal, theta is the one between leaving light and normal and phi  
> is the one between theta and sigma ... and I'm not sure, wheter the  
> above calculation is right.
>
> The next thing is, that I'm a little confused about  the meaning of  
> the last argument in the last line of the plasdata material. The  
> materials describtion says, that it is a parameter for defining  
> specularity (?). But when I have a huge amount of reflectance data,  
> why do i need another parameter? In which way does it influence the  
> computation of my reflectance values? In the current material  
> definition it is set to one because, setting it to zero I have a  
> plastic material as it seems. How can I obtain the right value?
>
The difference between plasdata and metdata is that metdata uses the  
first three real arguments for the RGB color of the specular  
highlight as well as the diffuse component, whereas plasdata only  
uses it for the diffuse.  Note that the diffuse component is the  
fraction of the BRDF that is constant in all directions.  If you have  
not subtracted this constant (Lambertian) reflection from your BRDF,  
then you need to give the specularity as 1, and your surface will in  
fact be white, no matter what you have for the first three arguments.

Please note that none of the BRDF types in Radiance offers a complete  
solution to the global illumination equation.  Only highlights from  
light sources will use this data properly.  Interreflections will  
consider the entire BRDF to be "diffuse" rather than directional.   
This is a limitation of the software.

Best,
-Greg
> Please take the noob out of the dark :)
>
> Cheers,
>
> Uta



More information about the Radiance-general mailing list