Hi Carsten,
Many thanks for your reply, I am happy to hear that at least the problem I am facing is something that is recognized.
Alhough you clearly described why the material I work on is hard (or even impossible) to model in Radiance, I continued searching for a solution.
First let me list all the 'requirements' for the material of the floor:
1. Distant objects seem to reflect more as nearby objects, in term of renderings: the reflection changes as a funtion of the angle between ray direction ad surface normal
2. Some roughness/noise is visible at a distance, while nearby the surface is just dull.
3. The color changes somehow as a funtion of the distance to a bit more blue/less saturation
4. Specular highlights are very soft and relative to the 'eye-position'
I tried to put these requirements in a BRTDfunc. This is my first(!) BRTDfunc and my first .cal file I ever wrote from scratch, and I have some questions about it.
1.
The first question of all is how I could possibly find the ray-direction and value of incident light within a brtdf. Are there globally defined variables for these (like Dx, Dy, Dz) ?
Ok, I clearly can't solve the specular highlight thing yet, so I forgot about specular highlights for a moment and figured out the brtdf and .cal file like below, for the 'requirements' 1, 2 and 3.
2.
My general question is: are there any smart remarks on this brtdf an cal file, is there anything very stupid in this material that I should know? ( I am not a real math guru )
3.
The last question is: can I change the line below in a more elegant way, like the pow(base,exp) function in c: :
refl = (1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi) ;
{
reflection.cal
add reflection relative of angle between ray direction and surface normal
arg10 red reflection value
arg11 green reflection value
arg12 blue reflection value
arg13 noise grain
arg14 noise value
}
{ RGB values for the reflection }
valr = arg(10);
valg = arg(11);
valb = arg(12);
noisegrain= arg(13);
noisevalue= arg(14);
{ dot product of ray direction and normal }
DdN = (-Dx*Nx)+(-Dy*Ny)+(-Dz*Nz);
{ always return a positive value }
multi = if(DdN, DdN, -DdN) ;
{ replace with a pow( base, exp ) alike function }
refl = (1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi) ;
{ noise }
noise = 1 - ( noisevalue * fnoise3(Px/noisegrain, Py/noisegrain, Pz, noisegrain ) );
{ add noise to reflection value }
mult = refl + (refl*noise) ;
reflr = CrP * mult * valr * noise ;
reflg = CgP * mult * valg * noise ;
reflb = CbP * mult * valb * noise ;
{
{ bfloor is the name of a pattern }
usage:
bfloor BRTDfunc LAYER114
10
reflr reflg reflb
0 0 0
reflection.cal
0
12
1 1 1
0 0 0
R_REFLVALUE G_REFLRVALUE B_REFLVALUE
NOISE_SIZE NOISE_VALUE
}
Carsten Bauer wrote:
···
Hi Iebele
AFAIK, for a view ray hit, Radiance checks if the current view ray direction lies in the'highlight cone' of any light source.
E.g. for a point source and a perfect zero roughness reflector this 'highlight cone' would just be a delta peak, i.e. the mirror direction, if you start to add microscopic roughness to the surface your highlight will start to spread, you'll receive reflection also if you don't look exactly in the mirror direction.
Ok, so far you probably know that yourself, I just repeated it to emphasis which effects you control with the mentioned parameters: the roughness
parameter determines how much the highlight will spread out, and the -sj setting determines how much of this spread will actually be sampled, (-st as threshold finally decides if it will be considered specular at all or just added to the diffuse component.) So the sense of -sj lies more in setting values < 1 to produce sharper highlights also for rough surfaces to reduce noise in the image, -- whereas you're looking for the opposite, a way to make them appear more diffuse.
Now it might be that the problem in your case lies in the method being to limited to describe the floor material adequately
As mentioned above, you can tweak the amout of spreading for the highlight, but you cannot consider e.g. materials whose specular reflection coefficient itself changes with the incident angle, which might be the reason in your case for the highlights being less apparent in the direction you're looking.
And even if you provide BRTDF data for the floor material, it would be rather tedious as they would have to be inverted during this calculation which is -again AFAIK -currently not possible in Radiance.
-cb
PS you might still revert to Giulios Photoshop idea, you could also do it in Radiance, i.e. make a pic form two base pics with pcomb (I hope I name the correct one here, I always mix them up, pcomb, pcompos, pcond, pwhatever....), then write a script for that purpose to convert all your frames automatically..
_______________________________________________
Radiance-general mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/radiance-general