BRTDfunc to model angular dependent transmission

Hi Joe,

I should have thought of it earlier, as this is something I worked out with Jacob Jonsson @JCJonsson just recently. As luck would have it, there is a new script in the Radiance repertoire that takes tabulated isotropic measurements like those you describe and converts them into a Klems XML file suitable for use with the BSDF and aBSDF types (as well as matrix-based annual simulation methods). It takes as input a table of measurements in the following order:

th Ts Td Rs Rd
0 .07 .1 0 .15
25 .06 .11 0 .14
55 .05 .13 0 .12
80 .005 .08 0 .18
100 .005 .08 0 .25
125 .05 .13 0 .28
155 .06 .11 0 .32
180 .07 .1 0 .35

The header row is optional, but shows the expected data for each column. The first column should be theta, increasing values from 0 to 180°, followed by the corresponding specular transmission, diffuse hemispherical transmission, specular reflection, and diffuse hemispherical reflection. Diffuse hemispherical transmission plus specular transmission should add up to total hemispherical transmission, and the same holds for reflection. The new iso2klems script has the following usage:

Usage: iso2klems [-t][-f “x=string;y=string”][-u unit] [input.dat]

The theta spacing should be less than 10° or so, but you should not give a value at theta=90°. Spacing can be irregular.

The “-t” option reverses the notion of theta=0 from being incident on the “outside” face (towards exterior) to “inside” (towards interior). The other options follow those of wrapBSDF. The Klems XML file is produced on the standard output, which should be redirected to a file.

This will be by far simpler and more accurate than the other methods you’re looking at. It will probably also render more quickly.

Cheers,
-Greg