[Radiance-general] Calculating diffuse component in a BRTDfunc

atelier iebele abel atelier at iebele.nl
Sat Oct 1 01:16:52 CEST 2005


Hi Greg,

Thanks for your response. So, what I tried does not work with BRTDfunc 
at all... I used more or less the same cal file in combination with 
colorfunc and brightfunc, which works  fine for the moment.
Just for understanding more of it: according to the documentation args 
7-9 are functions. Are there any examples of how to use a function in 
BRTDfunc ?

-Iebele




Greg Ward wrote:

> Hi Iebele,
>
> You are correct that the real arguments cannot be expressions.  The  
> definition of a diffuse component is one that does not change with  
> angle, so there should be no need to define these parameters as  
> variables.  If you have some varying portion to your BRDF, then put  
> this in the directional-diffuse component, which are string arguments  
> 7-9 for BRTDfunc.
>
> -Greg
>
> P.S.  On my mailer, the first message came through better than the  
> second.
>
>> From: atelier iebele abel <atelier at iebele.nl>
>> Date: September 30, 2005 7:10:17 AM PDT
>>
>> Hi all,
>>
>> I am writing a BRTD material which I want to use to change the  
>> diffuse component of a surface, related to a certain direction an  
>> the surface normal.
>> Radiance reports: error bad arguments for BRTDfunc
>> What am I doing wrong here?
>>
>> I get the impression that the rfdif, gfdif, bfdif, rbdif, gbdif and  
>> bbdif are not variables ???
>> If these are not variables, how can I change/calculate/define the  
>> diffuse component in a BRTDfunc?
>> See the bold lines of the example in my cal file.
>>
>> I appreciate any suggestions !
>>
>> Iebele
>>
>>
>> <--- snip  ---->
>>
>>
>> {
>>    directional.cal
>>
>>    arg10 red diffuse
>>    arg11 green diffuse
>>    arg12 blue diffuse
>>    arg13 direction x    arg14 direction y
>>    arg15 direction z
>> }
>>
>> { RGB values for the reflection  }
>> valr  = arg(10);
>> valg  = arg(11);
>> valb  = arg(12);
>> xdir = arg(13);
>> ydir = arg(14);
>> zdir = arg(15);
>>
>> { dot product direction and normal }
>> DdN = (xdir*Nx)+(ydir*Ny)+(zdir*Nz);
>>
>> { always return a positive value }
>> multi = if(DdN, DdN, -DdN) ;
>>
>> *reflr = CrP + (multi*valr)  ;
>> reflg = CgP + (multi*valg)  ;
>> reflb = CbP + (multi*valb)  ;*
>>
>>
>> {
>>    example usage:
>>        void BRTDfunc LAYER114
>>        10
>>        0 0 0                          / reflection
>>        0 0 0                          / specular
>>        0 0 0                 directional.cal
>>        0
>>        15
>>       * reflr reflg reflb              */ diffuse front*
>>        reflr reflg reflb  *            / diffuse back
>>        0 0 0                          / trans
>>        0.8 0.7 0.6                    / color of surface
>>        0.57735 0.57735 0.57735        / vector defining bright side  
>> of surface
>> }
>>
>
> _______________________________________________
> Radiance-general mailing list
> Radiance-general at radiance-online.org
> http://www.radiance-online.org/mailman/listinfo/radiance-general
>
>



More information about the Radiance-general mailing list