I have some questions about the utilization of rtrace to determine radiance & irradiance values within a scene. I greatly appreciate your responses and help. To give some context, I'm working on developing a virtual gonio-photometer in Radiance in order to obtain BRDFs of Radiance primitive materials and then export the BRDF data for analysis with other software. To do this I need a clear understanding of how Radiance measures radiance and irradiance with rtrace. First, I will explain my current methodology and please correct me if I'm wrong at any point.
A BRDF is a ratio of the reflected radiance of a material over the incident irradiance on the material surface, and this value is evaluated over four spherical angle ranges that define the orientation of the incident light and the orientation of the reflected light as captured by a radiance meter.
The units of a BRDF value is (1/steradian), since the units of radiance are (W*m^2/sr.) and the units of irradiance are (W*m^2). Also, radiance is independent of measurement distance unlike irradiance. Due to this the BRDF geometry is constrained to a unit meter hemisphere, with the material sample centered at the origin.
To compute the incident irradiance on the material sample I use rtrace with -I argument. I pass the position (0,0,0), the center of the material sample and the direction (x,y,z) that is a unit vector aligned with the optical axis of the light source that points to the center of the light source (ring surface). I'll call this irradiance value L1.
A second way to compute the incident irradiance is to use rtrace with the -i argument and pass position (x,y,z), the position of the light source, and direction (-x,-y,-z) that points toward the origin, which is the center of the sample. I'll call this irradiance value L2.
After looking at the irradiance values it seems like L2 is the Lambert's cosine corrected irradiance, meaning L2 = L1*cos(theta), where theta is the radial incident angle of the light source. Is this true? If not, can someone please explain the difference between these two irradiance measurements?
Also, in the rtrace help page could someone help explain this statement that concerns the -i argument: "This only affects the final result, substituting a Lambertian surface and multiplying the radiance by pi." I understand that a Lambertian surface is one that is purely diffuse and the radiance and luminance is constant in all directions, but I'm unsure of how this applies to irradiance.
Finally, I need to obtain reflected radiance from the material, and I want to make sure that my radiance measurement doesn't take into account the radiance emanating from the light source itself. To do this, given an arbitrary radiance meter positon along the unit hemisphere (x,y,z). I setup rtrace with no input arguments other than position (x,y,z) and direction (-x,-y,-z), a unit vector that points to the center of the material (0,0,0), from the radiance meter position (x,y,z).
My problem arises when I evaluate the BRDF at various locations. I see a radiance value that is about 3x-4x larger than my measured incident irradiance value, at the position of the specular reflection (mirror-like reflection). Of course, I will see the highest reflected radiance at the specular position, however it seems to be unrealistically large, since somehow more energy is reflected than emanating from the single light source itself. Is this type of behavior common for a metal Radiance primitive that follows the Ward BRDF scattering model? With my current observations, the conservation of energy is not maintained. Do I need to correct the radiance value by a steradian value to be able compare the two as apples to apples? Or am I missing something else.
I apologize for the long message, but I wanted to be as clear as possible with my questions. Thank you in advance for your time and help.

Best Regards,
Andrei Kolomenski

Nasa? Awesome... haha.

Anyway, I did not really finished reading, but I have some questions

easy yo use and, I would say, very optimized. Why is that you do not want
to use it?
2. Radiance also has some programs that allow you to give a BSDF
"function" into a BSDF matrix or tensor tree: bsdf2klems, bsdf2tensortree,
or something like that.

Were you aware of this? is there a reason not to use them?

Best,

Germán

2015-04-09 11:38 GMT-03:00 Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI.
& ENG.] <[email protected]>:

···

I have some questions about the utilization of rtrace to
your responses and help. To give some context, I’m working on developing a
primitive materials and then export the BRDF data for analysis with other
software. To do this I need a clear understanding of how Radiance measures
methodology and please correct me if I’m wrong at any point.

A BRDF is a ratio of the reflected radiance of a material over
the incident irradiance on the material surface, and this value is
evaluated over four spherical angle ranges that define the orientation of
the incident light and the orientation of the reflected light as captured

The units of a BRDF value is (1/steradian), since the units of
this the BRDF geometry is constrained to a unit meter hemisphere, with the
material sample centered at the origin.

To compute the incident irradiance on the material sample I
use rtrace with –I argument. I pass the position (0,0,0), the center of the
material sample and the direction (x,y,z) that is a unit vector aligned
with the optical axis of the light source that points to the center of the
light source (ring surface). I’ll call this irradiance value L1.

A second way to compute the incident irradiance is to use
rtrace with the –i argument and pass position (x,y,z), the position of the
light source, and direction (-x,-y,-z) that points toward the origin, which
is the center of the sample. I’ll call this irradiance value L2.

After looking at the irradiance values it seems like L2 is the
Lambert’s cosine corrected irradiance, meaning L2 = L1*cos(theta), where
theta is the radial incident angle of the light source. Is this true? If
measurements?

Also, in the rtrace help page could someone help explain this
statement that concerns the –i argument: “This only affects the final
result, substituting a Lambertian surface and multiplying the radiance by
pi.” I understand that a Lambertian surface is one that is purely diffuse
and the radiance and luminance is constant in all directions, but I’m
unsure of how this applies to irradiance.

Finally, I need to obtain reflected radiance from the
material, and I want to make sure that my radiance measurement doesn’t take
into account the radiance emanating from the light source itself. To do
this, given an arbitrary radiance meter positon along the unit hemisphere
(x,y,z). I setup rtrace with no input arguments other than position (x,y,z)
and direction (-x,-y,-z), a unit vector that points to the center of the
material (0,0,0), from the radiance meter position (x,y,z).

My problem arises when I evaluate the BRDF at various
locations. I see a radiance value that is about 3x-4x larger than my
measured incident irradiance value, at the position of the specular
reflection (mirror-like reflection). Of course, I will see the highest
reflected radiance at the specular position, however it seems to be
unrealistically large, since somehow more energy is reflected than
emanating from the single light source itself. Is this type of behavior
common for a metal Radiance primitive that follows the Ward BRDF scattering
model? With my current observations, the conservation of energy is not
maintained. Do I need to correct the radiance value by a steradian value to
be able compare the two as apples to apples? Or am I missing something else.

I apologize for the long message, but I wanted to be as clear
as possible with my questions. Thank you in advance for your time and help.

Best Regards,

Andrei Kolomenski

_______________________________________________
[email protected]

Hello,

Thank you for the response. Yes I do know of these programs (genBSDF,bsdf2kelms,bsdf2tensortree). But we need our own version because I need direct control of exporting BRDF data, also I want a clear understanding how rtrace should be used for radiance and irradiance measurements. My question is directed toward the proper use of rtrace.

Regards,
Andrei Kolomenski

···

From: Germán Molina Larrain [mailto:[email protected]]
Sent: Thursday, April 09, 2015 9:54 AM

Nasa? Awesome... haha.
Anyway, I did not really finished reading, but I have some questions

1. Radiance already has a virtual photogoniometer... genBSDF program. easy yo use and, I would say, very optimized. Why is that you do not want to use it?
2. Radiance also has some programs that allow you to give a BSDF "function" into a BSDF matrix or tensor tree: bsdf2klems, bsdf2tensortree, or something like that.

Were you aware of this? is there a reason not to use them?

Best,

Germán

2015-04-09 11:38 GMT-03:00 Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI. & ENG.] <[email protected]<mailto:[email protected]>>:
I have some questions about the utilization of rtrace to determine radiance & irradiance values within a scene. I greatly appreciate your responses and help. To give some context, I’m working on developing a virtual gonio-photometer in Radiance in order to obtain BRDFs of Radiance primitive materials and then export the BRDF data for analysis with other software. To do this I need a clear understanding of how Radiance measures radiance and irradiance with rtrace. First, I will explain my current methodology and please correct me if I’m wrong at any point.
A BRDF is a ratio of the reflected radiance of a material over the incident irradiance on the material surface, and this value is evaluated over four spherical angle ranges that define the orientation of the incident light and the orientation of the reflected light as captured by a radiance meter.
The units of a BRDF value is (1/steradian), since the units of radiance are (W*m^2/sr.) and the units of irradiance are (W*m^2). Also, radiance is independent of measurement distance unlike irradiance. Due to this the BRDF geometry is constrained to a unit meter hemisphere, with the material sample centered at the origin.
To compute the incident irradiance on the material sample I use rtrace with –I argument. I pass the position (0,0,0), the center of the material sample and the direction (x,y,z) that is a unit vector aligned with the optical axis of the light source that points to the center of the light source (ring surface). I’ll call this irradiance value L1.
A second way to compute the incident irradiance is to use rtrace with the –i argument and pass position (x,y,z), the position of the light source, and direction (-x,-y,-z) that points toward the origin, which is the center of the sample. I’ll call this irradiance value L2.
After looking at the irradiance values it seems like L2 is the Lambert’s cosine corrected irradiance, meaning L2 = L1*cos(theta), where theta is the radial incident angle of the light source. Is this true? If not, can someone please explain the difference between these two irradiance measurements?
Also, in the rtrace help page could someone help explain this statement that concerns the –i argument: “This only affects the final result, substituting a Lambertian surface and multiplying the radiance by pi.” I understand that a Lambertian surface is one that is purely diffuse and the radiance and luminance is constant in all directions, but I’m unsure of how this applies to irradiance.
Finally, I need to obtain reflected radiance from the material, and I want to make sure that my radiance measurement doesn’t take into account the radiance emanating from the light source itself. To do this, given an arbitrary radiance meter positon along the unit hemisphere (x,y,z). I setup rtrace with no input arguments other than position (x,y,z) and direction (-x,-y,-z), a unit vector that points to the center of the material (0,0,0), from the radiance meter position (x,y,z).
My problem arises when I evaluate the BRDF at various locations. I see a radiance value that is about 3x-4x larger than my measured incident irradiance value, at the position of the specular reflection (mirror-like reflection). Of course, I will see the highest reflected radiance at the specular position, however it seems to be unrealistically large, since somehow more energy is reflected than emanating from the single light source itself. Is this type of behavior common for a metal Radiance primitive that follows the Ward BRDF scattering model? With my current observations, the conservation of energy is not maintained. Do I need to correct the radiance value by a steradian value to be able compare the two as apples to apples? Or am I missing something else.
I apologize for the long message, but I wanted to be as clear as possible with my questions. Thank you in advance for your time and help.

Best Regards,
Andrei Kolomenski

_______________________________________________
[email protected]<mailto:[email protected]>

I won't try to answer all of your questions, and my answer is based only on reading documentation rather than close knowledge of the actual code... but I'll try to comment related to the difference between the uppercase and lowercase -I and -i options. When using uppercase -I rtrace will inherently offset your x,y,z meter position slightly in the direction of your measurement vector in case you've given a coordinate that is coplanar with the surface (I forget the distance used but with my clues and a little searching this should be found somewhere in the mailing list archives). When using the lowercase -i rtrace will trace a ray along the given vector, calculate the luminance at the point of intersection with a surface, then determine illuminance by correcting the luminance with factors of pi and reflectance at the intersection point. I've never investigated if non-Lambertian materials actually do impact this value, but if so the -I option would better serve your purpose for non-lambertian materials, but you may have to scale your model or edit the code to have the offset of measurement coordinates become negligible.
I wouldn't consider myself an authority on the topic, but I want to try to respond with the hope that others will better explain my understanding if it deserves clarification.

···

From: Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI. & ENG.] [mailto:[email protected]]
Sent: Thursday, April 09, 2015 10:38 AM
To: [email protected]

I have some questions about the utilization of rtrace to determine radiance & irradiance values within a scene. I greatly appreciate your responses and help. To give some context, I'm working on developing a virtual gonio-photometer in Radiance in order to obtain BRDFs of Radiance primitive materials and then export the BRDF data for analysis with other software. To do this I need a clear understanding of how Radiance measures radiance and irradiance with rtrace. First, I will explain my current methodology and please correct me if I'm wrong at any point.
A BRDF is a ratio of the reflected radiance of a material over the incident irradiance on the material surface, and this value is evaluated over four spherical angle ranges that define the orientation of the incident light and the orientation of the reflected light as captured by a radiance meter.
The units of a BRDF value is (1/steradian), since the units of radiance are (W*m^2/sr.) and the units of irradiance are (W*m^2). Also, radiance is independent of measurement distance unlike irradiance. Due to this the BRDF geometry is constrained to a unit meter hemisphere, with the material sample centered at the origin.
To compute the incident irradiance on the material sample I use rtrace with -I argument. I pass the position (0,0,0), the center of the material sample and the direction (x,y,z) that is a unit vector aligned with the optical axis of the light source that points to the center of the light source (ring surface). I'll call this irradiance value L1.
A second way to compute the incident irradiance is to use rtrace with the -i argument and pass position (x,y,z), the position of the light source, and direction (-x,-y,-z) that points toward the origin, which is the center of the sample. I'll call this irradiance value L2.
After looking at the irradiance values it seems like L2 is the Lambert's cosine corrected irradiance, meaning L2 = L1*cos(theta), where theta is the radial incident angle of the light source. Is this true? If not, can someone please explain the difference between these two irradiance measurements?
Also, in the rtrace help page could someone help explain this statement that concerns the -i argument: "This only affects the final result, substituting a Lambertian surface and multiplying the radiance by pi." I understand that a Lambertian surface is one that is purely diffuse and the radiance and luminance is constant in all directions, but I'm unsure of how this applies to irradiance.
Finally, I need to obtain reflected radiance from the material, and I want to make sure that my radiance measurement doesn't take into account the radiance emanating from the light source itself. To do this, given an arbitrary radiance meter positon along the unit hemisphere (x,y,z). I setup rtrace with no input arguments other than position (x,y,z) and direction (-x,-y,-z), a unit vector that points to the center of the material (0,0,0), from the radiance meter position (x,y,z).
My problem arises when I evaluate the BRDF at various locations. I see a radiance value that is about 3x-4x larger than my measured incident irradiance value, at the position of the specular reflection (mirror-like reflection). Of course, I will see the highest reflected radiance at the specular position, however it seems to be unrealistically large, since somehow more energy is reflected than emanating from the single light source itself. Is this type of behavior common for a metal Radiance primitive that follows the Ward BRDF scattering model? With my current observations, the conservation of energy is not maintained. Do I need to correct the radiance value by a steradian value to be able compare the two as apples to apples? Or am I missing something else.
I apologize for the long message, but I wanted to be as clear as possible with my questions. Thank you in advance for your time and help.

Best Regards,
Andrei Kolomenski

____________________________________________________________
Electronic mail messages entering and leaving Arup business
systems are scanned for acceptability of content and viruses

Comments inline, but I agree with the general sentiment that it's simpler (and more accurate) to apply genBSDF and other tools already suited to the purpose. (Note that the "bsdfquery" program can be used to extract any desired BSDF angles.) The genBSDF program employs rcontrib, which is much more powerful (and efficient) than using rtrace. For single materials with no texture and no geometry, what you are doing should work.

From: "Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI. & ENG.]" <[email protected]>
Date: April 9, 2015 7:38:05 AM PDT

I have some questions about the utilization of rtrace to determine radiance & irradiance values within a scene. I greatly appreciate your responses and help. To give some context, I’m working on developing a virtual gonio-photometer in Radiance in order to obtain BRDFs of Radiance primitive materials and then export the BRDF data for analysis with other software. To do this I need a clear understanding of how Radiance measures radiance and irradiance with rtrace. First, I will explain my current methodology and please correct me if I’m wrong at any point.

A BRDF is a ratio of the reflected radiance of a material over the incident irradiance on the material surface, and this value is evaluated over four spherical angle ranges that define the orientation of the incident light and the orientation of the reflected light as captured by a radiance meter.

The units of a BRDF value is (1/steradian), since the units of radiance are (W*m^2/sr.) and the units of irradiance are (W*m^2). Also, radiance is independent of measurement distance unlike irradiance. Due to this the BRDF geometry is constrained to a unit meter hemisphere, with the material sample centered at the origin.

You should actually point the direction vector "straight up" along the normal of your surface, not towards the light source. This is the cause of your discrepancy between L1 and L2. Illuminance is measured at the surface, and should account for the cosine angle to the light source(s).

To compute the incident irradiance on the material sample I use rtrace with –I argument. I pass the position (0,0,0), the center of the material sample and the direction (x,y,z) that is a unit vector aligned with the optical axis of the light source that points to the center of the light source (ring surface). I’ll call this irradiance value L1.

A second way to compute the incident irradiance is to use rtrace with the –i argument and pass position (x,y,z), the position of the light source, and direction (-x,-y,-z) that points toward the origin, which is the center of the sample. I’ll call this irradiance value L2.

After looking at the irradiance values it seems like L2 is the Lambert’s cosine corrected irradiance, meaning L2 = L1*cos(theta), where theta is the radial incident angle of the light source. Is this true? If not, can someone please explain the difference between these two irradiance measurements?

See above. L2 should match L1 when L1's vector matches surface normal, provided your other calculation options match.

Also, in the rtrace help page could someone help explain this statement that concerns the –i argument: “This only affects the final result, substituting a Lambertian surface and multiplying the radiance by pi.” I understand that a Lambertian surface is one that is purely diffuse and the radiance and luminance is constant in all directions, but I’m unsure of how this applies to irradiance.

Illuminance = Irradiance convolved with Vlambda using a peak efficacy of 683 lumens/watt at 555 nm. Same for luminance and radiance.

Finally, I need to obtain reflected radiance from the material, and I want to make sure that my radiance measurement doesn’t take into account the radiance emanating from the light source itself. To do this, given an arbitrary radiance meter positon along the unit hemisphere (x,y,z). I setup rtrace with no input arguments other than position (x,y,z) and direction (-x,-y,-z), a unit vector that points to the center of the material (0,0,0), from the radiance meter position (x,y,z).

My problem arises when I evaluate the BRDF at various locations. I see a radiance value that is about 3x-4x larger than my measured incident irradiance value, at the position of the specular reflection (mirror-like reflection). Of course, I will see the highest reflected radiance at the specular position, however it seems to be unrealistically large, since somehow more energy is reflected than emanating from the single light source itself. Is this type of behavior common for a metal Radiance primitive that follows the Ward BRDF scattering model? With my current observations, the conservation of energy is not maintained. Do I need to correct the radiance value by a steradian value to be able compare the two as apples to apples? Or am I missing something else.

Since the BRDF is a differential quantity, it can evaluate to greater than 1.0. Theoretically, it can even be infinite if the surface is purely specular, although the integrated value will be less than 100%

···

I apologize for the long message, but I wanted to be as clear as possible with my questions. Thank you in advance for your time and help.

Best Regards,

Andrei Kolomenski

_______________________________________________
[email protected]

Hello,

Thank you for your input. I was not aware of the bsdfquery program, I looked in my Radiance/bin folder & couldn't locate this program in my Windows or Linux installs. I'm using Radiance 4.2. Can you please tell me the location of the bsdfquery program?

Thank you for explaining the difference between -i & -I rtrace input args. The values L1 and L2 are now equal, and I feel like I have a better understanding of rtrace.

Best Regards,
Andrei Kolomenski

···

-----Original Message-----
From: Greg Ward [mailto:[email protected]]
Sent: Thursday, April 09, 2015 11:45 AM

Comments inline, but I agree with the general sentiment that it's simpler (and more accurate) to apply genBSDF and other tools already suited to the purpose. (Note that the "bsdfquery" program can be used to extract any desired BSDF angles.) The genBSDF program employs rcontrib, which is much more powerful (and efficient) than using rtrace. For single materials with no texture and no geometry, what you are doing should work.

From: "Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI. & ENG.]" <[email protected]>
Date: April 9, 2015 7:38:05 AM PDT

I have some questions about the utilization of rtrace to determine radiance & irradiance values within a scene. I greatly appreciate your responses and help. To give some context, I'm working on developing a virtual gonio-photometer in Radiance in order to obtain BRDFs of Radiance primitive materials and then export the BRDF data for analysis with other software. To do this I need a clear understanding of how Radiance measures radiance and irradiance with rtrace. First, I will explain my current methodology and please correct me if I'm wrong at any point.

A BRDF is a ratio of the reflected radiance of a material over the incident irradiance on the material surface, and this value is evaluated over four spherical angle ranges that define the orientation of the incident light and the orientation of the reflected light as captured by a radiance meter.

The units of a BRDF value is (1/steradian), since the units of radiance are (W*m^2/sr.) and the units of irradiance are (W*m^2). Also, radiance is independent of measurement distance unlike irradiance. Due to this the BRDF geometry is constrained to a unit meter hemisphere, with the material sample centered at the origin.

You should actually point the direction vector "straight up" along the normal of your surface, not towards the light source. This is the cause of your discrepancy between L1 and L2. Illuminance is measured at the surface, and should account for the cosine angle to the light source(s).

To compute the incident irradiance on the material sample I use rtrace with -I argument. I pass the position (0,0,0), the center of the material sample and the direction (x,y,z) that is a unit vector aligned with the optical axis of the light source that points to the center of the light source (ring surface). I'll call this irradiance value L1.

A second way to compute the incident irradiance is to use rtrace with the -i argument and pass position (x,y,z), the position of the light source, and direction (-x,-y,-z) that points toward the origin, which is the center of the sample. I'll call this irradiance value L2.

After looking at the irradiance values it seems like L2 is the Lambert's cosine corrected irradiance, meaning L2 = L1*cos(theta), where theta is the radial incident angle of the light source. Is this true? If not, can someone please explain the difference between these two irradiance measurements?

See above. L2 should match L1 when L1's vector matches surface normal, provided your other calculation options match.

Also, in the rtrace help page could someone help explain this statement that concerns the -i argument: "This only affects the final result, substituting a Lambertian surface and multiplying the radiance by pi." I understand that a Lambertian surface is one that is purely diffuse and the radiance and luminance is constant in all directions, but I'm unsure of how this applies to irradiance.

Illuminance = Irradiance convolved with Vlambda using a peak efficacy of 683 lumens/watt at 555 nm. Same for luminance and radiance.

Finally, I need to obtain reflected radiance from the material, and I want to make sure that my radiance measurement doesn't take into account the radiance emanating from the light source itself. To do this, given an arbitrary radiance meter positon along the unit hemisphere (x,y,z). I setup rtrace with no input arguments other than position (x,y,z) and direction (-x,-y,-z), a unit vector that points to the center of the material (0,0,0), from the radiance meter position (x,y,z).

My problem arises when I evaluate the BRDF at various locations. I see a radiance value that is about 3x-4x larger than my measured incident irradiance value, at the position of the specular reflection (mirror-like reflection). Of course, I will see the highest reflected radiance at the specular position, however it seems to be unrealistically large, since somehow more energy is reflected than emanating from the single light source itself. Is this type of behavior common for a metal Radiance primitive that follows the Ward BRDF scattering model? With my current observations, the conservation of energy is not maintained. Do I need to correct the radiance value by a steradian value to be able compare the two as apples to apples? Or am I missing something else.

Since the BRDF is a differential quantity, it can evaluate to greater than 1.0. Theoretically, it can even be infinite if the surface is purely specular, although the integrated value will be less than 100%

I apologize for the long message, but I wanted to be as clear as possible with my questions. Thank you in advance for your time and help.

Best Regards,

Andrei Kolomenski

_______________________________________________
[email protected]

_______________________________________________
[email protected]

The bsdfquery program is one of a small number of debugging/hacker tools that you have to build manually, since it isn't fully supported. If you are on a Unix installation, you can use "make bsdfquery bsdf2rad pabopto2rad" in the ray/src/cv directory to build these, then copy the tools to your executable directory.

Cheers,
-Greg

···

From: "Guglielmetti, Robert" <[email protected]>
Date: April 9, 2015 2:45:28 PM PDT

On 4/9/15, 3:26 PM, "Kolomenski, Andrei (JSC-SF311)[WYLE INTEG. SCI. & > ENG.]" <[email protected]> wrote:

Hello,

Thank you for your input. I was not aware of the bsdfquery program, I
looked in my Radiance/bin folder & couldn't locate this program in my
Windows or Linux installs. I'm using Radiance 4.2. Can you please tell me
the location of the bsdfquery program?

Oops, looks like this one isn't making it into the NREL Radiance
installers. Sorry about that! We'll correct this for the next release; in