# window glass modeling

Hi All,

Merry Christmas and Happy New Year!

I am a Master's thesis student and I am a beginner in Radiance. I would like to
thank Alex Jacobs for LEARNIX and tutorials, and Greg Ward for the effort he put
into Radiance. I apologize in advance if there is something wrong with my
English or if I wrote something stupid related to Radiance.
For the purposes of my work, I need to calculate illuminance level in one point
of working plane in a simple office (for clear sky and sunny day), for different
luminaires output levels, different slat angles of exterior venetian blinds, and
for different times of the day (i.e. for different solar angles). I am not
interested in for image rendering, just for the illuminance calculation. I am
stuck with window glass modeling. This is what I got from Optics5 for 2 layers
glazing system (1. clear glass 6mm ; AIR gap 12mm ; 2. clear glass 4mm):

void glass GlzSys1_glass
0
0
3 0.832 0.884 0.859

void BRTDfunc GlzSys1_front
10
0.136 0.147 0.146
0.764 0.811 0.789
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0

void BRTDfunc GlzSys1_back
10
0.139 0.148 0.148
0.764 0.811 0.789
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0

And this is what I got from Window6 for the same glazing system :

Angle 0 10 20 30 40 50 60 70 80 90 Hemis

Vtc : 0.798 0.798 0.796 0.791 0.779 0.748 0.675 0.521 0.261 0.000 0.695
Rf : 0.144 0.144 0.144 0.147 0.157 0.185 0.255 0.405 0.664 1.000 0.230
Rb : 0.146 0.146 0.146 0.149 0.159 0.188 0.258 0.411 0.674 1.000 0.233

When I make a model of complex fenestration system with exterior venetian
blinds, I have two different cases :

Case 1. When sun rays don't pass directly between the venetian blind slats,
just indirectly from slats (reflected from slats).

Question 1. Because sun rays don't pass directly trough window glass, I suppose
that all the light that reaches the window glass is diffuse (light is reflected
from ground, sky and slats). If this is so, which is the correct value for the
definition of window glass material? Is it perhaps Vtc (visible tansmittance)
value 0.695 for Hemis (hemispherical) multiplied by 1.09 to get the
transmissivity value, or maybe mean Vtc value for angles from 0 to 90
[(0.798+0.798)/2+(0.798+0.796)/2+...+(0.261+0.000)/2]/9=0.639 also multiplied
by 1.09 to get the transmissivity, or maybe some other value?

I have noticed the following :
The second row of the BRTDfunc has the values: 0.764 0.811 0.789.
If we multiply these values with 1.09, we get: 0.832 0.884 0.859,
which are the transmissivity values for glass. Also, if we put these values into
the expression:
0.265*R + 0.670*G + 0.065*B, we get:
0.265*0.832 + 0.670*0.884 + 0.065*0.859 = 0.868595. If we divide this value
with 1.09, we get value 0.797, which is the Vtc value at normal incidence (0).

Question 2. Let us assume that correct Vtc (transmittance) value is 0.695. Is
this the right way to calculate RGB transmissivity for glass:
0.832*(0.695/0.798) 0.884*(0.695/0.798) 0.859*(0.695/0.798),
which is equal to:
0.725 0.770 0.748

Question 3. This may be a stupid question. Theoretically, if I should get the
same results in the following two cases:
1. I create the distribution for the window with mkillum; window glass is
defined with transmissivity values:
0.725 0.770 0.748
I compile a new scene octree that includes the old one and adds the new illum
window (new .rad file) to it. Then, I calculate lux level on working plane with
rtrace.
2. I don't create window polygon (there's nothing, i.e. there is air). But
instead, I can scale RGB values for light solar with the glass transmissivity
values. For example:
void light solar
0
0
3 2.72e+06 2.72e+06 2.72e+06, I put:
void light solar
0
0
3 2.72e+06*0.725 2.72e+06*0.770 2.72e+06*0.748, i.e.:
void light solar
0
0
3 1.972e+06 2.094e+06 2.035e+06
I compile a scene with changed .mat file, and then I calculate lux level on
working plane with rtrace. Of course, I will try to calculate this, but I'm
definitely interested in the opinion of experts.

Question 4. How can I scale the material of sky, if it is defined with:

void brightfunc skyfunc
2 skybr skybright.cal
0
7 1 3.76e+00 3.72e+00 2.98e-01 -0.489041 -0.851114 0.190903
skyfunc glow skyglow
0
0
4 .85 1.04 1.2 0

I guess that is not allowed to scale the RGB values .85 1.04 1.2, because of
the equation: 1 = 0.265*R + 0.670*G + 0.065*B.
Maybe I can scale the values from skyfunc: 3.76e+00 (zenith brightness) and
3.72e+00 (ground plane brightness)?

Case 2. When one part of the sun rays pass directly between the venetian blind
slats, and the second part indirectly from slats.

This is perhaps the worst case for modeling. Let us assume that exterior
venetian blinds have 35 slats. If I want to make a proper model of window glass
polygon, I suppose that I need to replace one glass polygon with 69 glass
polygons. 34 are directly exposed to the sun and have some values for RGB
transmissivity (which depend from sun angle). Other 35 are in shade and have
some other values for RGB transmissivity (transmissivity for diffuse light). Of
course, I need to do some trigonometry calculations. This model of window glass
is valid only for one light source (solar source sun), but not for
skyglow source sky. This seems very complicated, and because of that would be
great if I could do what I asked in questions 3.2 and 4.

Queation 5. I just need a short comment of paragraph above.

Case 3. No venetian blinds - just window glass.

Let us assume that octree (scene) includes 3 light sources (sun, sky and
ground), and sun incidence angle is 70 degrees. If I make a model of window
glass with RGB transmissivity:
0.725 0.770 0.748 (transmittance=0.695),
the model will be correct for sky and ground, but not for sun, because of
transmittance for angle of 70 degrees is 0.521.
Thus, whatever value that I take for RGB transmissivity, I make a some mistake,
when I calculate illumination.

Question 6. Does this problem can be solved in one of two ways:

1. I scale values for sun, sky and ground, in the manner described in questions
3.2 and 4.
2. I compile an octree that includes an office, only one source of light (sun),
and a model of window glass with transmissivity that corresponding to the sun
angle. For this octree, I calculate illumination (I1).
Then, I compile a new octree that includes a same office, two sources of light
(sky and ground), and a model of window glass with transmissivity that
corresponding to the sky and ground. For this octree, I calculate illumination
(I2).
In the end, I calculate I = I1 + I2, which actually represents the total
illumination.

I apologize for the long mail.

Hi Milan!

Welcome onboard!

For the purposes of my work, I need to calculate illuminance level in
one point of working plane in a simple office (for clear sky and
sunny day), for different luminaires output levels, different slat
angles of exterior venetian blinds, and for different times of the
day (i.e. for different solar angles).

Hm, a lot of work. A first hint, think about how to organize that, so
that you can later repeat the renderings when you have to change
something. People have been using Makefiles, bash scripts, rad as a
specialized tool, ...

I am not interested in for image rendering, just for the illuminance
calculation.

It will still be useful to render some views (plan view, perspectives) to understand what is going on. Artefacts due to ambient settings not adapted to e.g. you fenestration become evident when you look at a splotchy image, but may be difficult to understand from some few illuminances.

stuck with window glass modeling. This is what I got from Optics5 for
2 layers glazing system (1. clear glass 6mm ; AIR gap 12mm ; 2. clear
glass 4mm):

void glass GlzSys1_glass 0 0 3 0.832 0.884 0.859

As far as I understand, for clear glass this is all you need.

When I make a model of complex fenestration system with exterior
venetian blinds, I have two different cases :

Case 1. When sun rays don't pass directly between the venetian blind
slats, just indirectly from slats (reflected from slats).

Question 1. Because sun rays don't pass directly trough window glass,
I suppose that all the light that reaches the window glass is diffuse
(light is reflected from ground, sky and slats). If this is so, which
is the correct value for the definition of window glass material?

You need the transmissivity for a material definition of a glass modifier. Calculating the transmissivity from visual light transmittance is discussed in Axel's Radiance tutorial, p. 47. The material properties of you glass pane are not depending on the shading system or incident light.

Question 3. This may be a stupid question. Theoretically, if I should
get the same results in the following two cases: 1. I create the
distribution for the window with mkillum; window glass is defined
with transmissivity values: 0.725 0.770 0.748 I compile a new
scene octree that includes the old one and adds the new illum window
(new .rad file) to it. Then, I calculate lux level on working plane
with rtrace. 2. I don't create window polygon (there's nothing, i.e.
there is air). But instead, I can scale RGB values for light solar
with the glass transmissivity values. For example: Istead: void light
solar 0 0 3 2.72e+06 2.72e+06 2.72e+06, I put: void light solar 0 0 3
2.72e+06*0.725 2.72e+06*0.770 2.72e+06*0.748, i.e.: void light solar
0 0 3 1.972e+06 2.094e+06 2.035e+06 I compile a scene with changed
.mat file, and then I calculate lux level on working plane with
rtrace. Of course, I will try to calculate this, but I'm definitely
interested in the opinion of experts.

The glass object is not only affecting the transmission through the window opening by simply multiplying, it is also reflective and depends on the angle of incidence. The sun close to the zenith would lead to large portions of irradiance on the glass pane be reflected for example.

Question 4. How can I scale the material of sky, if it is defined
with:

You can (if it makes sense) scale the brightness of the sky either by changing the return value or the glow material that is modified by the brightfunc. Scaling the zenith and ground plane brightnesses should work, but is little transparent (and in fact you change the input values here for the skybright.cal script). Instead, it would be better to scale the glow. Of course, if you scale by smaller then 1, you will find 0.265*R + 0.670*G + 0.065*B < 1 . Still I think you will need a glass pane in your model to care for angular dependance and reflection.

Case 2. When one part of the sun rays pass directly between the
venetian blind slats, and the second part indirectly from slats.

This is perhaps the worst case for modeling. Let us assume that
exterior venetian blinds have 35 slats. If I want to make a proper
model of window glass polygon, I suppose that I need to replace one
glass polygon with 69 glass polygons. 34 are directly exposed to the
sun and have some values for RGB transmissivity (which depend from
sun angle). Other 35 are in shade and have some other values for RGB
transmissivity (transmissivity for diffuse light). Of course, I need
to do some trigonometry calculations. This model of window glass is
valid only for one light source (solar source sun), but not for
skyglow source sky. This seems very complicated, and because of that
would be great if I could do what I asked in questions 3.2 and 4.

You need only one glass pane. Same as in real. The only pitfall is that, without mkillum, you would get a lot of noise at acceptable ambient settings, or never ending rendering times. So just use a mkillum surface at your glass pane, and on the inner side of the blinds.

Case 3. No venetian blinds - just window glass.

Let us assume that octree (scene) includes 3 light sources (sun, sky
and ground), and sun incidence angle is 70 degrees. If I make a model
of window glass with RGB transmissivity: 0.725 0.770 0.748
(transmittance=0.695), the model will be correct for sky and ground,
but not for sun, because of transmittance for angle of 70 degrees is
0.521. Thus, whatever value that I take for RGB transmissivity, I
make a some mistake, when I calculate illumination.

No. Radiance uses a built-in material model for glass. There is a file called materials.pdf as part of the Radiance distribution explaining how materials are modeled in Radiance.

Question 6. Does this problem can be solved in one of two ways:

1. I scale values for sun, sky and ground, in the manner described in
questions 3.2 and 4. 2.

You do not need all that. Try to model the scene as the real world is - and avoid scaling the universe just as you would not have this option in real life neither The only cheat here is that you can use a single surface in place of the window glass, which in fact consists of two glass bodies separated by air. This is the only optimization you need, together with helping out Radiance by pre-calculating the distribution behind the shading using mkillum.

I'd propose that you just start with a simple case, e.g. the glazing without blinds, set up the rendering procedure (e.g. a script or Makefile), render illuminance on a work plane (maybe you put a desk surface into your model) using rpict -i and get the sensor points' illuminances using rtrace -I. Once you have completed that, there will be a better understanding of the more complicated tasks, and you will know how Radiance works in your case. It is difficult to solve all questions in advance, better get the hands on this nice simulation toolbox and your model

And always feel free to ask if you face unexpected behaviour by the software.

Cheers, Lars.

Merry Christmas Milan.

For the purposes of my work, I need to calculate illuminance level in one point
of working plane in a simple office (for clear sky and sunny day), for different
luminaires output levels, different slat angles of exterior venetian blinds, and
for different times of the day (i.e. for different solar angles). I am not
interested in for image rendering, just for the illuminance calculation.

Just a comment here: You should calculate the illuminance
at a few points around your actual sample point and then
average the results, especially when you want to use blinds.
This will avoid peak values due to direct sunlight passing
between the slates and hitting your single measurement point.

I am stuck with window glass modeling.
his is what I got from Optics5 for 2 layers glazing system
(1. clear glass 6mm ; AIR gap 12mm ; 2. clear glass 4mm):

void glass GlzSys1_glass
0
0
3 0.832 0.884 0.859

void BRTDfunc GlzSys1_front
10
0.136 0.147 0.146
0.764 0.811 0.789
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0

void BRTDfunc GlzSys1_back
10
0.139 0.148 0.148
0.764 0.811 0.789
0 0 0
.
0
9 0 0 0 0 0 0 0 0 0

These are definitions you can use directly in Radiance. The first
four lines define the base glass material the second and third
group define separate materials for the front and back of the
sandwich which are different due to the glass pane thickness
and coatings (if there are any).

I have not used a BRTDfunc material so far, but I think you would
pick the right definition for your scene (GlzSys1_back probably)
and use it to define the window polygon. It is a very crude approach
and does not account for a number of effects. There have been
a couple of discussions on this here on the list which you can
research if you want.

And this is what I got from Window6 for the same glazing system :

Angle 0 10 20 30 40 50 60 70 80 90 Hemis

Vtc : 0.798 0.798 0.796 0.791 0.779 0.748 0.675 0.521 0.261 0.000 0.695
Rf : 0.144 0.144 0.144 0.147 0.157 0.185 0.255 0.405 0.664 1.000 0.230
Rb : 0.146 0.146 0.146 0.149 0.159 0.188 0.258 0.411 0.674 1.000 0.233

This is just a general representation of the angular dependent
transmission/reflection of the glazing. You would have to convert
the description above).

When I make a model of complex fenestration system with exterior
venetian blinds, I have two different cases :

Case 1. When sun rays don't pass directly between the venetian
blind slats, just indirectly from slats (reflected from slats).

Question 1. Because sun rays don't pass directly trough window glass,
I suppose that all the light that reaches the window glass is diffuse
(light is reflected from ground, sky and slats). If this is so, which is
the correct value for the definition of window glass material?

To define a basic glass material you would use the Vtc (visual
transmittance) for a 0 degree angle (orthogonal to surface). Some
of the angular dependence is accounted for in the material primitive
"glass" so we don't have to fuzz about with all the angles. It's not
very accurate but for a scene that includes blinds and artificial
lighting an accurate glazing representation is probably less important.

The transmittance(Tn) has to be converted to transmissivity(tn) via
this formula:

tn = (sqrt(.8402528435+.0072522239*Tn*Tn)-.9166530661)/.0036261119/Tn

With a base transmittance of 0.798 we get a transmissivity of 0.869 and
could define a simple glass material as

void glass GlzSys1_simple
0
0
3 0.869 0.869 0.869

This is not that far of from the GlzSys1_glass above.

Question 2. Let us assume that correct Vtc (transmittance) value is 0.695. Is
this the right way to calculate RGB transmissivity for glass:
0.832*(0.695/0.798) 0.884*(0.695/0.798) 0.859*(0.695/0.798),
which is equal to:
0.725 0.770 0.748

No. See above. If you only have one value for the transmittance and
no information on the spectral distribution you can use the same Tn
for the red, green and blue values. Using different R, G and B will
only give the glass a slight colour tint.

Question 3. This may be a stupid question. Theoretically, if I should get the
same results in the following two cases:
1. I create the distribution for the window with mkillum; window glass is
defined with transmissivity values:
0.725 0.770 0.748
I compile a new scene octree that includes the old one and adds the new illum
window (new .rad file) to it. Then, I calculate lux level on working plane with
rtrace.

If you use mkillum you have to replace the window material with
the definition created by mkillum. You also have to make sure that
the polygon normal points inwards or you won't get any light.

2. I don't create window polygon (there's nothing, i.e. there is air). But
instead, I can scale RGB values for light solar with the glass transmissivity
values.

That is a reasonable approach but only accounts for the light
contributed by the sun. (See below about the sky).

Question 4. How can I scale the material of sky, if it is defined with:

void brightfunc skyfunc
2 skybr skybright.cal
0
7 1 3.76e+00 3.72e+00 2.98e-01 -0.489041 -0.851114 0.190903
skyfunc glow skyglow
0
0
4 .85 1.04 1.2 0

I guess that is not allowed to scale the RGB values .85 1.04 1.2, because of
the equation: 1 = 0.265*R + 0.670*G + 0.065*B.

You can scale the values of the glow material. It only needs
average to 1 because the actual brightness of this particular
sky is already defined in the definition of "skyfunc". But you
want to reduce that brightness by 1/4 so you can apply the
transmittance values directly to the RGB values as above.

However, this will not take into account the specific angular
dependent transmission of glass for the light from the sky.
Therefore, light that hits the glass from the sides will be
equally reduced as the light from in front of the window.
This introduces some difference into the two calculation
results you have to be aware of.

Case 2. When one part of the sun rays pass directly between the venetian blind
slats, and the second part indirectly from slats.

This is perhaps the worst case for modeling. Let us assume that exterior
venetian blinds have 35 slats. If I want to make a proper model of window glass
polygon, I suppose that I need to replace one glass polygon with 69 glass
polygons. 34 are directly exposed to the sun and have some values for RGB
transmissivity (which depend from sun angle). Other 35 are in shade and have
some other values for RGB transmissivity (transmissivity for diffuse light). Of
course, I need to do some trigonometry calculations. This model of window glass
is valid only for one light source (solar source sun), but not for
skyglow source sky. This seems very complicated, and because of that would be
great if I could do what I asked in questions 3.2 and 4.

Queation 5. I just need a short comment of paragraph above.

Sounds incredibly complicated and is not at all necessary.
There is no difference in the definition for glass for sunlight and
glass for skylight. The various transmission values you have
in your Window6 output are approximated/accounted for in the
base primitive "glass" or the BRTDfunc definition.

I think this also deals with Case 3 and Question 6.

If you want to split you calculation into sun, sky and ground
you can do so in the scene definition and later add the individual
results. However, your scenario is not a good candidate for
that because the problem you see does not really exist.

Regards and enjoy the holidays/in-between-days.

Thomas

···

On Tue, Dec 28, 2010 at 12:17 PM, Milan Cakanovic <[email protected]> wrote:

Lars,
Thank you both for your fast reply. I'm in a hurry now, and I will reply to you
later or tomorrow.
Regards, Milan

Thomas,
Thank you both for your fast reply. I'm in a hurry now, and I will reply to you
later or tomorrow.
Regards, Milan

Hi Lars,

Hm, a lot of work. A first hint, think about how to organize that, so that
you can later repeat the renderings when you have to change something. People
have been using Makefiles, bash scripts, rad as a specialized tool, ...

My plan is to use a bash script.

It will still be useful to render some views (plan view, perspectives) to
understand what is going on. Artefacts due to ambient settings not adapted to
e.g. you fenestration become evident when you look at a splotchy image, but
may be difficult to understand from some few illuminances.

Thank you for advice. This is useful.

You need the transmissivity for a material definition of a glass modifier.
Calculating the transmissivity from visual light transmittance is discussed
in Axel's Radiance tutorial, p. 47.

Formula: tn=1.09*Tn (Axel's RADIANCE Cookbook, p. 21) is simplification of
formula on p.20.

The glass object is not only affecting the transmission through the window
opening by simply multiplying, it is also reflective and depends on the angle
of incidence. The sun close to the zenith would lead to large portions of
irradiance on the glass pane be reflected for example.

I agree with that.

You can (if it makes sense) scale the brightness of the sky either by
changing the return value or the glow material that is modified by the
brightfunc. Scaling the zenith and ground plane brightnesses should work, but
is little transparent (and in fact you change the input values here for the
skybright.cal script). Instead, it would be better to scale the glow. Of
course, if you scale by smaller then 1, you will find 0.265*R + 0.670*G +
0.065*B < 1 . Still I think you will need a glass pane in your model to care
for angular dependance and reflection.

Ok. Idea with scaling is obviously out.

You need only one glass pane. Same as in real. The only pitfall is that,
without mkillum, you would get a lot of noise at acceptable ambient settings,
or never ending rendering times. So just use a mkillum surface at your glass
pane, and on the inner side of the blinds.

I know that I have to use mkillum surface at my glass pane, I just forgot to
write it. Thank you anyway. But, how can I use mkillum surface on the inner side
of the blinds? I checked, when the blinds is down (angle=-90) the surface normal
of slats points into the office.
To create the distribution for the window:
Can I use this to create the distribution for the blinds:

No. Radiance uses a built-in material model for glass. There is a file called
materials.pdf as part of the Radiance distribution explaining how materials
You do not need all that. Try to model the scene as the real world is - and
avoid scaling the universe just as you would not have this option in real
life neither

The only cheat here is that you can use a single surface in place of the
window glass, which in fact consists of two glass bodies separated by air.

I plan to use a single surface in place of the window glass.

This is the only optimization you need, together with helping out Radiance by
pre-calculating the distribution behind the shading using mkillum.
I'd propose that you just start with a simple case, e.g. the glazing without
blinds, set up the rendering procedure (e.g. a script or Makefile), render
illuminance on a work plane (maybe you put a desk surface into your model)
using rpict -i and get the sensor points' illuminances using rtrace -I. Once
you have completed that, there will be a better understanding of the more
difficult to solve all questions in advance, better get the hands on this
nice simulation toolbox and your model
And always feel free to ask if you face unexpected behaviour by the software.

Please, can you explain me this: "render illuminance on a work plane (maybe you
put a desk surface into your model) using rpict -i".

Cheers, Milan

Hi,

This is the only optimization you need, together with helping out Radiance
by
> pre-calculating the distribution behind the shading using mkillum.
> I'd propose that you just start with a simple case, e.g. the glazing
without
> blinds, set up the rendering procedure (e.g. a script or Makefile),
render
> illuminance on a work plane (maybe you put a desk surface into your
model)
> using rpict -i and get the sensor points' illuminances using rtrace -I.
Once
> you have completed that, there will be a better understanding of the more
is
> difficult to solve all questions in advance, better get the hands on this
> nice simulation toolbox and your model
> And always feel free to ask if you face unexpected behaviour by the
software.

Please, can you explain me this: "render illuminance on a work plane (maybe
you
put a desk surface into your model) using rpict -i".

To render illuminance on a work plane, no need to input additional desk
geometry into the scene. Everything you add in the scene has influence on
light distribution and calculation time, so it is better to avoid adding of
furniture geometry.
You can define sensor point on the workplane area (for example on height
0.8m from the floor level), and all points should be oriented towards up in
format: xorg yorg zorg xdir ydir zdir, one point per line. Example:
0 0 0.8 0 0 1
0 1 0.8 0 0 1
...

Then for created octree and these set of points (save points in some file),
you use rtrace -I option to calculate illuminance.
Here is example command
rtrace -I+ -h- -oov -ab 3 -ad 2048 -as 512 -aa 0.05 -av 0 0 0 -ar 100
room.oct < sensors.txt | rcalc -e "\$1=\$1; \$2=\$2; \$3=\$3;
\$4=(0.67*\$4+0.265*\$5+0.065*\$6)*179" >illuminance.txt

So rtrace command above calculates irradiance for sensor points defined in
"sensors.txt". Then you pipe it to rcalc to convert it to illuminance.

You have similar method in dayfact.csh script (included in Radiance
distribution), so you can explore it.

Hope this helps,
Marija

Hi Milan

depending on your slat geometry be aware that practically no real-world venetian (slat type) blind closes "90°". Actually, quite typical products have a closing angle of approx. 75° at the most. And this leads to additional light transmission in the closed position, of course (for light colors, in any case).

write it. Thank you anyway. But, how can I use mkillum surface on the inner side
of the blinds? I checked, when the blinds is down (angle=-90) the surface normal
of slats points into the office.

Best
Achim

Thomas,

Just a comment here: You should calculate the illuminance at a few points
around your actual sample point and then average the results, especially when
you want to use blinds. This will avoid peak values due to direct sunlight
passing between the slates and hitting your single measurement point.

I know for this problem. I have done some preliminary calculations, and when I
use rtrace with -ab 8 (for more accuracy), calculation takes a long time (4 - 5
min). If I want to calculate illumination for few more points, I will increase
the calculation time for few times. For now, I will just avoid situations when
direct sunlight passing between the slats.

This is just a general representation of the angular dependent
transmission/reflection of the glazing. You would have to convert this to a
To define a basic glass material you would use the Vtc (visual transmittance)
for a 0 degree angle (orthogonal to surface). Some of the angular dependence
is accounted for in the material primitive "glass" so we don't have to fuzz
about with all the angles. It's not very accurate but for a scene that
includes blinds and artificial lighting an accurate glazing representation is
probably less important.

With this statement, you're opened my eyes. I did not know that, how you say,
some of the angular dependence is accounted for in the material primitive
"glass". I can live with "It's not very accurate".

If you use mkillum you have to replace the window material with the
definition created by mkillum. You also have to make sure that the polygon
normal points inwards or you won't get any light.

I know that, but thank you anyway.

Sounds incredibly complicated and is not at all necessary. There is no
difference in the definition for glass for sunlight and glass for skylight.
The various transmission values you have in your Window6 output are
approximated/accounted for in the base primitive "glass" or the BRTDfunc
definition.

Again, you're opened my eyes with this statement.

If you want to split you calculation into sun, sky and ground you can do so
in the scene definition and later add the individual results. However, your
scenario is not a good candidate for that because the problem you see does
not really exist.

Now, when I know all this, I have no need to split my calculation.
"...because the problem you see does not really exist." Well, because I have
bugs (or worms) in my head, the problem existed. If I had known that some of
the angular dependence is accounted for in the material primitive "glass", I
would not have written a bunch of nonsense.

Thank you for all.

Regards and Happy New Year! Milan

Hi Milan!

It will still be useful to render some views (plan view, perspectives) to
understand what is going on. Artefacts due to ambient settings not adapted to
e.g. you fenestration become evident when you look at a splotchy image, but
may be difficult to understand from some few illuminances.

Thank you for advice. This is useful.

As Marija wrote, you can also just put a grid of sensor points into the scene. The background of my proposal was that a rpict-generated image may be useful to track problems in the scene, even though the irradiance values you get would certainly be affected by the geometry added as a working plane (which is not necessary when using a grid as rtrace input). So if you take this approach, do not compare the results of a rendered image including work plane geometry to sensor point illuminances rendered without such geometry - they must be different. But look out for suspicous shadows, splotches, noise, gradients that look too smooth or not as smooth as you would expect it from the geometry. Do all the basic checks (Afternoon sun coming in from East...?) to find out whether the model is ok, this may help avoid a lot of trouble. For illuminance readings, you will have to remove the work plane geometry before running rtrace.

You need only one glass pane. Same as in real. The only pitfall is that,
without mkillum, you would get a lot of noise at acceptable ambient settings,
or never ending rendering times. So just use a mkillum surface at your glass
pane, and on the inner side of the blinds.

I know that I have to use mkillum surface at my glass pane, I just forgot to
write it. Thank you anyway. But, how can I use mkillum surface on the inner side
of the blinds?

As long as the blinds are outside the glass, everything is fine and you can use the glass surface as an mkillum input. If you ever should have to render a model with blinds on the inner side of the window, it is important to remember that the mkillum pane has to be inside the complicated geometry to precalculte.

Please, can you explain me this: "render illuminance on a work plane (maybe you
put a desk surface into your model) using rpict -i".

As you may already know, rpict per default gives you an image according to choosen projection, which means it results in an array of luminance values. You may however use the -i switch to get an image showing irradiance values on the visible surfaces. Using falsecolor, you can get a quick idea on how illuminance is distributed over the surfaces of your scene.

Cheers, Lars.

Hi Marija,

To render illuminance on a work plane, no need to input additional desk
geometry into the scene. Everything you add in the scene has influence on
light distribution and calculation time, so it is better to avoid adding of
furniture geometry.

Thank you for advice. I do not plan to add a furniture.

You can define sensor point on the workplane area.

My first plan was to define a few sensor points, but when I use rtrace with -ab
6 or 8 (for more accuracy), calculation takes a long time. For now, I will
define just one sensor point.

Then for created octree and these set of points (save points in some file),
you use rtrace -I option to calculate illuminance.
Here is example command
rtrace -I+ -h- -oov -ab 3 -ad 2048 -as 512 -aa 0.05 -av 0 0 0 -ar 100
room.oct < sensors.txt | rcalc -e "\$1=\$1; \$2=\$2; \$3=\$3;
\$4=(0.67*\$4+0.265*\$5+0.065*\$6)*179" >illuminance.txt
So rtrace command above calculates irradiance for sensor points defined in
"sensors.txt". Then you pipe it to rcalc to convert it to illuminance.
You have similar method in dayfact.csh script (included in Radiance
distribution), so you can explore it.

Everything you've written here is useful, and I think it will help me.

I am from Serbia. Where are you from? Because of your name and surname, I guess
that you are from Serbia, B&H or Croatia.
If I am right,
then Hvala i pozdrav,
if I wrong,
then Thanks and regards.

Milan

Hi Achim,

depending on your slat geometry be aware that practically no real-world
venetian (slat type) blind closes "90°". Actually, quite typical products have
a closing angle of approx. 75° at the most...

Thank you, I will turn my attention to it.

Best, Milan

Hi Marija,

To render illuminance on a work plane, no need to input additional desk
geometry into the scene. Everything you add in the scene has influence on
light distribution and calculation time, so it is better to avoid adding of
furniture geometry.

Thank you for advice. I do not plan to add a furniture.

Although it's not quite what you are concerned with right now
there is an alternative method to calculate illuminance values
on a (theoretical) surface thanks to Radiance's "lego bricks"
architecture:

(Warning: Content may not be suitable for beginners. Guru guidance advised.)

You can define sensor point on the workplane area.

My first plan was to define a few sensor points, but when I use rtrace with -ab
6 or 8 (for more accuracy), calculation takes a long time. For now, I will
define just one sensor point.

The value you choose for -ab depends on the complexity of your
scene geometry and lighting conditions. From what you have
written so far you have an empty room with one window and
exterior blinds. I assume there is no outside obstruction to the
window.

Without the blinds you can cover the light distribution within the
room accurately with an -ab value of 3 or 4. If you add the blinds
you will need additional "bounces" to account for the light reflected
from the blinds. I assume you will need at least a value of 6 to
achieve reasonable accurate results.

Before you do your evaluation calculations you should do some
tests to find parameters which are accurate enough for your situation:

1) Use one typical scene setup and a sky definition without sun (only
skylight and ground) and calculate the illuminance on one point with
increasing values for -ab. You can use the other parameters as given
by Marija in her email; it's a good start.
Your results should show smaller variations the higher -ab is set.

2) With a reasonably accurate setting for -ab use the same scene and
sky but define a sequence of 10 or more points from the window to
the back of the room. Calculate these points and make a diagram
of the results with the distance to the window on the x-axis and the
illuminance on the y-axis.
Your graph should show a smooth curve falling in illuminance with
increasing distance from the window. If you can't make out a clean
curve in your plot your "-ab" value is too low (or other values need

However, if you pass all the points to rtrace in one call rtrace will cache
intermediate results from the first point to calculate the next. This will
speed up your calculation time so you won't spend four times as much
time calculating four points. If you call a separate rtrace process for
each individual point you will see no speed up, though.

Regards,
Thomas

···

On Wed, Dec 29, 2010 at 10:23 AM, Milan Cakanovic <[email protected]> wrote:

Hi Lars,

As Marija wrote, you can also just put a grid of sensor points into the cene.
The background of my proposal was that a rpict-generated image may be useful
to track problems in the scene, even though the irradiance values you get
would certainly be affected by the geometry added as a working plane (which
is not necessary when using a grid as rtrace input). So if you take this
approach, do not compare the results of a rendered image including work plane
geometry to sensor point illuminances rendered without such geometry - they
must be different...

As long as the blinds are outside the glass, everything is fine and you can
use the glass surface as an mkillum input. If you ever should have to render
a model with blinds on the inner side of the window, it is important to
remember that the mkillum pane has to be inside the complicated geometry to
precalculte.

I am interested in only for exterior venetian blinds. In that case, I can use
the glass surface as an mkillum input, and no need for any intervention on
blinds (I leave them as they are). Is this OK?

Cheers, Milan

Hi Milan!

I am interested in only for exterior venetian blinds. In that case, I can use
the glass surface as an mkillum input, and no need for any intervention on
blinds (I leave them as they are). Is this OK?

Perfect. Plus: if most ambient bounces are expected to happen in between diffuse blinds, you need the high setting of -ab only for mkillum. When running rtrace, you can probably stay at ab set to about 2, and that means you can follow previous advices to calculate irradiance for more then one point.

By the way, you are looking at diffuse reflective blinds, right?

Cheers, Lars.

Hi Thomas,

...there is an alternative method to calculate illuminance values on a
(theoretical) surface thanks to Radiance's "lego bricks" architecture:
(Warning: Content may not be suitable for beginners. Guru guidance advised.)

I looked at this site and immediately got a headache. I still wrestling with
Basic Radiance, and at this moment, I have no strength for stencil. I am a
beginner and too far away guru.

The value you choose for -ab depends on the complexity of your scene geometry
and lighting conditions. From what you have written so far you have an empty
room with one window and exterior blinds. I assume there is no outside
obstruction to the window.

There is no outside obstruction to the window. I have an empty room with one
window and exterior blinds, plus four luminaires (but I think that they do not
affect to the complexity).

Without the blinds you can cover the light distribution within the room
accurately with an -ab value of 3 or 4. If you add the blinds you will need
additional "bounces" to account for the light reflected from the blinds. I
assume you will need at least a value of 6 to achieve reasonable accurate
results.

I have done some preliminary calculations for an empty room with blinds, but
without a window model, and when I use rtrace with -ab 1 to -ab 8 (for more
accuracy), I get larger and larger values for an illuminance. I assume that the
largest value for an illuminance (-ab 8) is close to correct value. (Similar
situation is explained on p.43, figure 33, Basic Radiance Tutorial, Axel Jacobs).

Before you do your evaluation calculations you should do some tests to find
parameters which are accurate enough for your situation:

1) Use one typical scene setup and a sky definition without sun (only
skylight and ground) and calculate the illuminance on one point with
increasing values for -ab...

2) With a reasonably accurate setting for -ab use the same scene and sky but
define a sequence of 10 or more points from the window to the back of the...

However, if you pass all the points to rtrace in one call rtrace will cache..

These are useful advices. I will do what did you say, but after a holiday.

Regards, Milan

Hi Lars!

Perfect. Plus: if most ambient bounces are expected to happen in between
diffuse blinds, you need the high setting of -ab only for mkillum.

Bravo Lars, I forgot to ask you about -ab for mkillum. But, when you say "high
setting of -ab", what is high? Is that maybe -ab 8, or maybe more?

When running rtrace, you can probably stay at ab set to about 2, and that means

I will do that.

By the way, you are looking at diffuse reflective blinds, right?

Yes.

Cheers, Milan

Hi Milan!

Perfect. Plus: if most ambient bounces are expected to happen in between
diffuse blinds, you need the high setting of -ab only for mkillum.

Bravo Lars, I forgot to ask you about -ab for mkillum. But, when you say "high
setting of -ab", what is high? Is that maybe -ab 8, or maybe more?

-ab sets the number of bounces in the diffuse indirect calculation after which Radiance will stop spawning further rays. When you run mkillum, this means that you need to set ab to a value that ensures that rays hit the sun or sky unless the number of reflections led to that little Radiance left that you can safely skip. I doubt that you will see much changes at ab higher then 3 in your case, but there is a safe way to find out. Run a couple of simulations varying -ab for mkillum, and plot irradiance against ab. Use a sunless sky for that. In the case of open blinds, this will lead to a very low requirement for ab. In the case of mostly closed blinds, where the sky cannot be seen from the glass pane, ab would lead to an irradiance reading of 0, but will stabilize at higher ab. So the requirement will change according to the blinds tilt angle, and you will probably have to go with the worst case of almost closed blinds to determine the ab for your scene. I still doubt that you will see much changes when reaching high values for ab such as 8.

When running rtrace, you can probably stay at ab set to about 2, and that means

Again, important to imagine what this means. The ab value used by rtrace after the mkillum surface has been generated needs to ensure that the mkillum-generated source is hit during diffuse indirect calculation. As it is probably directly visible from the sensor location, most of the irradiance received will be directly transported from the source to the sensor, and only a very little fraction by one or more bounces over walls and ceilings. You will also be able to use relaced ad and as here, if the source surface is rather large and not hidden behind geometry.

By the way, you are looking at diffuse reflective blinds, right?

Yes.

Important detail, all the responses you got would not be true for highly specular blinds...

Cheers, Lars.

Hi Lars!

...In the case of open blinds, this will lead to a very low requirement for
ab. In the case of mostly closed blinds, where the sky cannot be seen from
stabilize at higher ab. So the requirement will change according to the
blinds tilt angle, and you will probably have to go with the worst case of
almost closed blinds to determine the ab for your scene. I still doubt that
you will see much changes when reaching high values for ab such as 8.

Let us assume that for the worst case of almost closed blinds, requirement for
-ab is 8. Is it right to use this set to ab (-ab 8) for the open blinds, or I
have to adapt (decrease) value for -ab? I know that high value for -ab leads to
the longer time of calculation.

Again, important to imagine what this means. The ab value used by rtrace
after the mkillum surface has been generated needs to ensure that the mkillum
generated source is hit during diffuse indirect calculation. As it is
probably directly visible from the sensor location, most of the irradiance
received will be directly transported from the source to the sensor, and only
a very little fraction by one or more bounces over walls and ceilings. You
will also be able to use relaced ad and as here, if the source surface is
rather large and not hidden behind geometry.

I think that I understood this: If I use an appropriate high value of -ab for
mkillum, after that, I can use an appropriate low value of -ab for rtrace, and
thus, reduce a calculation time.
I have done some preliminary calculations for an empty room with completely
closed blinds, four luminaires turned on, and when I used rtrace with -ab 0 to
-ab 8 (for more accuracy), I got higher and higher values for an illuminance in
one sensor point (for -ab 0, illuminance~500 lux; for -ab 8 illuminance~800). I
assume that the higher value for an illuminance (-ab 8) is close to correct
value? (Similar situation is explained on p.43, figure 33, Basic Radiance
Tutorial, Axel Jacobs).

Important detail, all the responses you got would not be true for highly
specular blinds...

Material for the slats is define:

void plastic whit_0.9
0
0
5 .9 .9 .9 .015 .02

Specularity : 0 - matte; 0.07 - satin
Roughness : 0 - polished; 0.2 - low gloss
I used a value of .015 for specularity, but if you think that I need to use a
lower value, I will do that. Maybe a value of 0?

Cheers, Milan