Perforated Metal Shading

664 views
Skip to first unread message

Ben

unread,
Mar 9, 2012, 3:58:21 PM3/9/12
to DIVA for Rhino
I am trying to model an exterior shade that is a perforated metal
panel and I am not getting results that I would expect. If anyone has
any experience on this, your thoughts would be much appreciated.

I have previously seen mesh and perforated panels modeled as glass
with a visible transmittance according to the panels % of openness. So
if the perforated pattern is 30% open, the visible transmittance of
the glass would be set to 30%. The intention is to save computation
time over a model that has each perforation actually meshed into the
model.

It doesnt seem to be working though. I created a custom material in
the material.rad file at C:\DIVA\Daylight\material.rad. I applied it
to a mesh that that pretty much covers the whole window opening. At
70% open, the daylight autonomy is 89%. At 10% opening the daylight
autonomy is 84% and change. At 0% opening the daylight autonomy is 0%
(essentially an opaque shade) and the daylight autonomy is 84.49%.
However, if I then change the material of the shade to
OutsideFacade_35PercentReflectance, which I was hoping would be the
same as single pane glass with 0% transmittance, the daylight autonomy
dropped to 10.70%.

So it seems this method either doesnt work, or I am missing something
when I create my custom material. Anybody have any ideas? Is there
another way I should model this without creating a complex shading
mesh with all the perforations in it?

Thanks for your help.

Ben

Fabian Posadas

unread,
Mar 9, 2012, 5:03:43 PM3/9/12
to DIVA for Rhino
Hi Ben,

Here is a perforated material example by Georg Mischler

he first develops a .cal file (perforate.cal)

----------------------------------------------------------
{
perforate.cal
Perforation function for approximately horizontal sufaces,
for use in a mixfunc. Foreground is solid, background the holes.
Set background to empty for a true perforation, or to a different
material for polka dots.

Relative hole size is determined by A1.
Size of single circle is 1 - scale as required (eg. 0.05m).

x_hole cuts holes in x-direction (through the y-z plane)
y_hole cuts holes in y-direction (through the x-z plane)
z_hole cuts holes in z-direction (through the x-y plane)

Georg Mischler 30. 04. 1993
}

`xn = mod(Px, 1) - 0.5;
`yn = mod(Py, 1) - 0.5;
`zn = mod(Pz, 1) - 0.5;

`outofcirc(x, y, r) = if(sqrt(x*x + y*y) - r, 1, 0);

z_hole = `outofcirc(`xn, `yn, A1);
x_hole = `outofcirc(`yn, `zn, A1);
y_hole = `outofcirc(`zn, `xn, A1);

{ end of perforate.cal }
----------------------------------------------------------

Then he creates the radiance material .rad file

void mixfunc z_perforation
6 some_material void z_hole perforate.cal -s 0.05
0
1 0.4


I have not tried it yet myself, but let me know how it goes

Fabian

Max D

unread,
Mar 10, 2012, 8:52:20 AM3/10/12
to diva-fo...@googlegroups.com
Apart from the abovementioned material with the .cal file, something seems to be going seriously wrong in your previous validation tests anyhow- are you sure the plane geometry and materials have been defined properly? The switch from 70% to 10% open seems suspicious, unless you have a huge facade .. just saying that because before you assume your stand-in material logic is faulty, you should investigate whether the % results you get are even logically explainable; look at the other metrics besides the DA, too, esp. the UDIs!

Best,

Max

--
You received this message because you are subscribed to the Google Groups "DIVA for Rhino" group.
To post to this group, send email to diva-fo...@googlegroups.com.
To unsubscribe from this group, send email to diva-for-rhin...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/diva-for-rhino?hl=en.


Ben

unread,
Mar 12, 2012, 9:30:45 AM3/12/12
to DIVA for Rhino
Max,

I think my geometry is ok, because I do get expected results for the
shading geometry when I apply one of the preset DIVA materials. It is
definitely a possibility that I screwed up my custom material
definition however. I entered the glass to mimic perforated metal as:

# Single Pane as Perforated Metal
# visual transmittance: 70%
# visual transmissivity: 70%
void glass SinglePanePerforatedMetal
0
0
3 0.70 0.70 0.70

Does this look correct for a 70% open perforated metal screen.

Thanks,

Ben


On Mar 10, 9:52 am, Max D <max.f...@gmail.com> wrote:
> Apart from the abovementioned material with the .cal file, something seems
> to be going seriously wrong in your previous validation tests anyhow- are
> you sure the plane geometry and materials have been defined properly? The
> switch from 70% to 10% open seems suspicious, unless you have a huge facade
> .. just saying that because before you assume your stand-in material logic
> is faulty, you should investigate whether the % results you get are even
> logically explainable; look at the other metrics besides the DA, too, esp.
> the UDIs!
>
> Best,
>
> Max
>

Ben

unread,
Mar 12, 2012, 9:30:59 AM3/12/12
to DIVA for Rhino
Fabian,

Thanks for the response. Georg Mischler's method looks pretty foreign
to me. I am not aware of what a .cal file is. Does it need to just be
in the same folder as the material.rad file in order to be referenced?
I am also having trouble following the code:

`xn = mod(Px, 1) - 0.5;
`yn = mod(Py, 1) - 0.5;
`zn = mod(Pz, 1) - 0.5;

`outofcirc(x, y, r) = if(sqrt(x*x + y*y) - r, 1, 0);

z_hole = `outofcirc(`xn, `yn, A1);
x_hole = `outofcirc(`yn, `zn, A1);
y_hole = `outofcirc(`zn, `xn, A1);

Do you have an understanding of what these functions and variables
represent? It seems like it is creating holes in the 3 axial
directions, and there is some sort of flag if the circle is out of
bounds. Beyond that I am pretty confused about how it is selected
center points for the circles and it is cutting circles in three
directions.

I am also a bit lost when it comes to the material.rad part:

void mixfunc z_perforation
6 some_material void z_hole perforate.cal -s 0.05
0
1 0.4

Do you know of a good resource to read on what these values entered
correspond to?

Thanks for your help,

Ben

On Mar 10, 9:52 am, Max D <max.f...@gmail.com> wrote:
> Apart from the abovementioned material with the .cal file, something seems
> to be going seriously wrong in your previous validation tests anyhow- are
> you sure the plane geometry and materials have been defined properly? The
> switch from 70% to 10% open seems suspicious, unless you have a huge facade
> .. just saying that because before you assume your stand-in material logic
> is faulty, you should investigate whether the % results you get are even
> logically explainable; look at the other metrics besides the DA, too, esp.
> the UDIs!
>
> Best,
>
> Max
>

Max D

unread,
Mar 12, 2012, 11:01:45 AM3/12/12
to diva-fo...@googlegroups.com
Don't see anything wrong with the material definition.. of course it's an approximation of how a screen would behave, but the mat. itself is correctly defined. Does it make more sense when you look at the other metrics?

Ben

unread,
Mar 12, 2012, 12:04:48 PM3/12/12
to DIVA for Rhino
Fabian,

I have started to research and try to decode Georg Mischler's method.
What I've got so far:

`xn = mod(Px, 1) - 0.5;
`yn = mod(Py, 1) - 0.5;
`zn = mod(Pz, 1) - 0.5;

xn, yn, zn refers to the surface normal at the intersection point. Px
is the intersection point, but I dont get why they are taking the
modulus of (Px, 1) and then subtracting 0.5.

As for the material.rad file:

void mixfunc z_perforation
6 some_material void z_hole perforate.cal -s 0.05
0
1 0.4

A mixfunc combines foreground and background materials.
"some_material" is your foreground. For this case we "void" the
background and then we select use z_hole as the "vname" which is a
coefficient defined in the function file that determines the influence
of the foreground. So I believe that means that if z_hole is 0 then at
that point, you favor for the background material over the foreground,
or maybe its the opposite. Still a bit confused.

I am worried that this will ultimately not work for me however. This
method works for a panel that is primarily horizontal, which is why
they are referencing the z_hole, which is a perforation in the xy
plane, in the material definition. My panel is somewhat vertical and
will be changing angle and orientation, so I am not sure if this
method "as-is" would work. Maybe there is a way to make the coordinate
system local to my panel (ie. define my panel as the xy plane, so a z-
hole will always be normal to its surface).

Also I am wondering if this will actually reduce my simulation time.
Does anybody know?

Thanks,

Ben

J. Alstan Jakubiec

unread,
Mar 12, 2012, 12:15:00 PM3/12/12
to diva-fo...@googlegroups.com
Hi Ben,

There is a version of perforate.cal that actually works on the u-v's of
the surface, which should be applicable to your problem. I paste it at the
end of my post.

The material definition for it will look something like this (as you
already know),
void mixfunc perforation
6 open aluminum uv_hole perforate.cal -s 0.1
0
1 0.4

> Also I am wondering if this will actually reduce my simulation time.
> Does anybody know?

Compared to modeling an actual perforated panel with hundreds of thousands
of little holes, it should help a lot just because the octree will be so
much smaller. If you model a screen large enough and in enough detail,
your rad files can easily grow to several gigabytes! This keeps the size
of the file to be referenced by Radiance small at least.

On the other hand, I am afraid that having lots of small holes means your
Radiance parameters (ambient divisions, ad) will have to be rather large
for the rays to actually find the little holes.

Best,
Alstan


{


perforate.cal
Perforation function for approximately horizontal sufaces,
for use in a mixfunc. Foreground is solid, background the holes.
Set background to empty for a true perforation, or to a different
material for polka dots.

Relative hole size is determined by A1.
Size of single circle is 1 - scale as required (eg. 0.05m).

x_hole cuts holes in x-direction (through the y-z plane)
y_hole cuts holes in y-direction (through the x-z plane)
z_hole cuts holes in z-direction (through the x-y plane)

A1 is de schaal
A2 XY size of hole ( 0.2 is small, 0.5 big )
A3 YZ size of hole
A4 XZ size of hole

Abel Boerema 2004, n.a.v.Georg Mischler 30. 04. 1993
}

`xn = mod(Px, 1) - A2;
`yn = mod(Py, 1) - A3;
`zn = mod(Pz, 1) - A4;

{uv coordinate mapping}
`un = mod(U, 1) - 0.5;
`vn = mod(V, 1) - 0.5;

{uv mesh coordinate mapping}
`lun = mod(Lu, 1) - 0.5;
`lvn = mod(Lv, 1) - 0.5;

`outofcirc(x, y, r) = if( (if ( x-r, 0, 1 )) * (if (y-r, 0, 1)) , 0,
1 );

z_hole = `outofcirc(`xn, `yn, A1);
x_hole = `outofcirc(`yn, `zn, A1);
y_hole = `outofcirc(`zn, `xn, A1);

{uv coordinate mapping}
uv_hole = `outofcirc(`un, `vn, A1);

{uv mesh coordinate mapping}
luv_hole = `outofcirc(`lun, `lvn, A1);

Ben

unread,
Mar 12, 2012, 12:45:57 PM3/12/12
to DIVA for Rhino
Thank you Alstan,

The simulation runs, but I am not sure how to test whether its
working. Should the perforations show up in the visualizations?

From the code and the notes, the hole sizing seems to be relative to
the meshing. Is that correct? So if the size of the hole is 0.4 is
that 40% open?

Thanks,

Ben
> ...
>
> read more »

Ben

unread,
Mar 12, 2012, 1:48:58 PM3/12/12
to DIVA for Rhino
Alstan,

It turns out that its not actually working. I realized that I wasnt
even referencing the custom material when I wrote that last message.
Now that I am referencing it I get a "fatal error: undefined modifier
"perforation"". I am not sure if this has to do with the text in
the .rad file or the .cal file. Or could it be the location of the .
cal file? How does it know where to find the . cal file? Right now I
have it in the same folder as the .rad file.

Thanks,

Ben
> ...
>
> read more »

J. Alstan Jakubiec

unread,
Mar 12, 2012, 2:06:36 PM3/12/12
to diva-fo...@googlegroups.com
Hi Ben,

The cal file should be in C:\Radiance\lib\ and C:\DAYSIM\lib\. I may have
to consider your other questions a bit more, but calibrating the size of
the holes can be a largely guess-and-check system too.

Best,
Alstan

Ben Silverman

unread,
Mar 12, 2012, 2:32:34 PM3/12/12
to diva-fo...@googlegroups.com
Alstan,

I copied the perforate.cal text file into those locations, but still no luck. The errors are:


"fatal error: undefined modifier "perforation""
"fatal error: truncated octree"
"Warning: DGP Profile not found"

In regards to the hole sizing, I don't really know where to begin because I am having trouble figuring out how it even calculates the hole diameter from the variable we are feeding it. is that a ratio of the mesh width to the hole diameter?

Thanks,

Ben


--
You received this message because you are subscribed to the Google Groups "DIVA for Rhino" group.
To post to this group, send email to diva-for-rhino@googlegroups.com.
To unsubscribe from this group, send email to diva-for-rhino+unsubscribe@googlegroups.com.

J. Alstan Jakubiec

unread,
Mar 13, 2012, 6:40:43 AM3/13/12
to diva-fo...@googlegroups.com
Hi Ben,

I tested it out this morning and it works more or less.

My material.rad definition looks like,
void metal aluminum
0
0
5 0.8 0.8 0.8 0 0.0

void glass open
0
0
3 1.0 1.0 1.0

void mixfunc perforation
6 open aluminum uv_hole perforate.cal -s 0.1
0
1 0.4

and I have copies of the cal file in C:\Radiance\lib\ and C:\DAYSIM\lib\.

Alstan

On Mon, 12 Mar 2012 14:32:34 -0400, Ben Silverman <bhsil...@gmail.com>
wrote:

>>>> > >> > fabian.posa...@gmail.com>**wrote:


>>>>
>>>> > >> > > > Hi Ben,
>>>>
>>>> > >> > > > Here is a perforated material example by Georg Mischler
>>>>
>>>> > >> > > > he first develops a .cal file (perforate.cal)
>>>>
>>>> > >> > > >

>>>> ------------------------------**----------------------------

>>>> ------------------------------**----------------------------

>>>> > >> > > > > OutsideFacade_**35PercentReflectance, which I was hoping


>>>> would be
>>>>
>>>> ...
>>>>
>>>> read more »
>>>>
>>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups
>> "DIVA for Rhino" group.
>> To post to this group, send email to

>> diva-for-rhino@googlegroups.**com<diva-fo...@googlegroups.com>


>> .
>> To unsubscribe from this group, send email to

>> diva-for-rhino+unsubscribe@*
>> *googlegroups.com <diva-for-rhino%2Bunsu...@googlegroups.com>.
>> For more options, visit this group at http://groups.google.com/**
>> group/diva-for-rhino?hl=en<http://groups.google.com/group/diva-for-rhino?hl=en>
>> .

Ben

unread,
Mar 13, 2012, 9:28:08 AM3/13/12
to DIVA for Rhino
Thanks Alstan,

Unfortunately it still does not work. I have the material.rad file
located in C:\DIVA\Daylight\. Is that the correct material.rad file?
The cal file is in C:\DAYSIM\lib\ and C:\RADIANCE\lib\. The material
perforation shows up in my dropdown, but I am getting the same errors
as before. Could you send me copies of your files?

Thanks for all the help,

Ben





On Mar 13, 6:40 am, "J. Alstan Jakubiec" <als...@jakubiec.net> wrote:
> Hi Ben,
>
> I tested it out this morning and it works more or less.
>
> My material.rad definition looks like,
> void metal aluminum
> 0
> 0
> 5 0.8 0.8 0.8 0 0.0
>
> void glass open
> 0
> 0
> 3 1.0 1.0 1.0
>
> void mixfunc perforation
> 6 open aluminum uv_hole perforate.cal -s 0.1
> 0
> 1 0.4
>
> and I have copies of the cal file in C:\Radiance\lib\ and C:\DAYSIM\lib\.
>
> Alstan
>
> On Mon, 12 Mar 2012 14:32:34 -0400, Ben Silverman <bhsilver...@gmail.com>
> wrote:
>
>
>
>
>
>
>
> > Alstan,
>
> > I copied the perforate.cal text file into those locations, but still no
> > luck. The errors are:
>
> > "fatal error: undefined modifier "perforation""
> > "fatal error: truncated octree"
> > "Warning: DGP Profile not found"
>
> > In regards to the hole sizing, I don't really know where to begin
> > because I
> > am having trouble figuring out how it even calculates the hole diameter
> > from the variable we are feeding it. is that a ratio of the mesh width to
> > the hole diameter?
>
> > Thanks,
>
> > Ben
>
> > On Mon, Mar 12, 2012 at 2:06 PM, J. Alstan Jakubiec
> > <als...@jakubiec.net>wrote:
>
> >> Hi Ben,
>
> >> The cal file should be in C:\Radiance\lib\ and C:\DAYSIM\lib\. I may
> >> have
> >> to consider your other questions a bit more, but calibrating the size of
> >> the holes can be a largely guess-and-check system too.
>
> >> Best,
> >> Alstan
>
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages