Reflection vs specularity

Hi,

I have a problem modelling a reflective floor of a large museum hall. The specular and roughness components (0.08 and 0.01) in the material of the floor result in smooth reflections of the walls, paintings, windows etc.
The problem arises when adding some lightsources. The lightsources cause specular reflections with very bright specular spots (highlights) on the floor. These specular spots do not look realistic (better said: these highlights disturb in the image, because there are so many of them).
I have tweaked the specular, roughness and rendering parameters also, but I can't get rid of these specular reflection highlights, apart from making the roughnes very small or 0. But with low or zero rougness the relections of the other geometry become too sharp.
Is there a way to model a reflective material (or lightsource?) without a ( or a dimmed) specular reflection highlight ?
Or any other suggestion?

Iebele

Iebele,
have you tried with -sj, just to jitter the specular component?

an alternative trick is to generate just an image without specular
component
and another one with it (you may use lower settings for this, may be
just -av something something something -ab 0).
then photoshop will help doing the trick... but I wouldn't define it a
physically accurate technique :slight_smile:

ciao
giulio

···

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
atelier iebele abel
Sent: 20 July 2005 12:39
To: Radiance general discussion
Subject: [Radiance-general] Reflection vs specularity

Hi,

I have a problem modelling a reflective floor of a large museum hall.
The specular and roughness components (0.08 and 0.01) in the material of

the floor result in smooth reflections of the walls, paintings, windows

etc.
The problem arises when adding some lightsources. The lightsources cause

specular reflections with very bright specular spots (highlights) on the

floor. These specular spots do not look realistic (better said: these
highlights disturb in the image, because there are so many of them).
I have tweaked the specular, roughness and rendering parameters also,
but I can't get rid of these specular reflection highlights, apart from

making the roughnes very small or 0. But with low or zero rougness the
relections of the other geometry become too sharp.
Is there a way to model a reflective material (or lightsource?) without
a ( or a dimmed) specular reflection highlight ?
Or any other suggestion?

Iebele

_______________________________________________
Radiance-general mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/radiance-general

Hi Giulio,

Changing -sj did not resolve the problem (already tried that) , and photoshop is not a solution since it has to be an animation on video.
Plus it should be more or less physically correct...

I just return from an example site, where I have have seen an example of the floor material in a real situation (natural wood finished with a wax coating).
This floor type does reflect its environment really smoothly but does not reflect lightsources really hard. In other words, it seems that in the real life example there is never a direct reflection from the lightsources/lightbeam to the eye. The reflection seems too diffuse for that to happen.
So, in the real world the situation I like to simulate exists, now finding a way to simulate this in Radiance will be the challenge..

I am reading the book RWR now, chapter 12.1 on specular sampling in indirect calculations. However I have the feeling that the problem i am facing is in the direct calculation. It just seems that when I could control the highlight apart from the reflection , I could model my floor more accurate.
Or am I totaly lost here ?? Is specularity exactly the same as reflection in Radiance?? After 10 years I still have to learn soo much about Radiance. Ok, that's the fun and the power of Radiance... :slight_smile:
Any suggestions remain welcome.

Iebele

Giulio Antonutto wrote:

···

Iebele,
have you tried with -sj, just to jitter the specular component?

an alternative trick is to generate just an image without specular
component
and another one with it (you may use lower settings for this, may be
just -av something something something -ab 0).
then photoshop will help doing the trick... but I wouldn't define it a
physically accurate technique :slight_smile:

ciao
giulio

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
atelier iebele abel
Sent: 20 July 2005 12:39
To: Radiance general discussion
Subject: [Radiance-general] Reflection vs specularity

Hi,

I have a problem modelling a reflective floor of a large museum hall. The specular and roughness components (0.08 and 0.01) in the material of

the floor result in smooth reflections of the walls, paintings, windows

etc.
The problem arises when adding some lightsources. The lightsources cause

specular reflections with very bright specular spots (highlights) on the

floor. These specular spots do not look realistic (better said: these highlights disturb in the image, because there are so many of them).
I have tweaked the specular, roughness and rendering parameters also, but I can't get rid of these specular reflection highlights, apart from

making the roughnes very small or 0. But with low or zero rougness the relections of the other geometry become too sharp.
Is there a way to model a reflective material (or lightsource?) without a ( or a dimmed) specular reflection highlight ?
Or any other suggestion?

Iebele

_______________________________________________
Radiance-general mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/radiance-general

_______________________________________________
Radiance-general mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/radiance-general

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..

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

Hi Iebele,

I'm anything else than a BRDTF expert, so my answer is a bit short .. at least for the moment

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'

in other words. specular reflection increases with higher incidence angles (measured from the surface normal normal). ..sounds reasonable..

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) ?

the direction and value of the incident light as seen from the current ray hit is calculated within the program when stepping through the list
of sources and adding up their contributions, but this means of course that in general there is not one value and one direction which could be exported, but many.
Why do you need them? Normally they're dealt with internally, the BRTDF gets the direction to the source and then gives back the specular (and/or transmission) coefficient of your material for that incident angle and your current view ray angle.
(but I definitely need to have a closer look on how the BRDTF stuff is evaluated in Radiance before writing on further ..).

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) ;

The functional language defines a pure exponential funtion e^x ( or exp(x), as it is called). To calculate arbitray powers with it, proceed as follows:
  x^y = e^y*lnx or x^y = exp(y*log(x)) in the syntax of the functional language

-cb

Hi Carsten,

Thanks for pointing out the right direction again.
I replaced the line with:

refl = (1-multi)^9 ;

Works fine now, just a few days before my holidays :slight_smile:
Now I have it , it looks so simple, and the my question almost stupid.
Thanks!

Iebele

···

refl = (1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi)*(1-multi) ;

The functional language defines a pure exponential funtion e^x ( or exp(x), as it is called). To calculate arbitray powers with it, proceed as follows:
x^y = e^y*lnx or x^y = exp(y*log(x)) in the syntax of the functional language

-cb

_______________________________________________
Radiance-general mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/radiance-general