Source code for honeybee_radiance.modifier.material.brtdfunc
"""Radiance BRTDfunc Material.
http://radsite.lbl.gov/radiance/refer/ray.html#BRTDfunc
"""
from .materialbase import Material
# TODO: Implement the class. It's currently only a generic Radiance Primitive
[docs]
class BRTDfunc(Material):
"""Radiance BRTDfunc Material.
The material BRTDfunc gives the maximum flexibility over surface reflectance and
transmittance, providing for spectrally-dependent specular rays and reflectance and
transmittance distribution functions.
.. code-block:: shell
mod BRTDfunc id
10+ rrefl grefl brefl
rtrns gtrns btrns
rbrtd gbrtd bbrtd
funcfile transform
0
9+ rfdif gfdif bfdif
rbdif gbdif bbdif
rtdif gtdif btdif
A10 ..
The variables rrefl, grefl and brefl specify the color coefficients for the ideal
specular (mirror) reflection of the surface. The variables rtrns, gtrns and btrns
specify the color coefficients for the ideal specular transmission. The functions
rbrtd, gbrtd and bbrtd take the direction to the incident light (and its solid angle)
and compute the color coefficients for the directional diffuse part of reflection and
transmission. As a special case, three identical values of '0' may be given in place
of these function names to indicate no directional diffuse component.
Unlike most other material types, the surface normal is not altered to face the
incoming ray. Thus, functions and variables must pay attention to the orientation of
the surface and make adjustments appropriately. However, the special variables for
the perturbed dot product and surface normal, RdotP, NxP, NyP and NzP are reoriented
as if the ray hit the front surface for convenience.
A diffuse reflection component may be given for the front side with rfdif, gfdif and
bfdif for the front side of the surface or rbdif, gbdif and bbdif for the back side.
The diffuse transmittance (must be the same for both sides by physical law) is given
by rtdif, gtdif and btdif. A pattern will modify these diffuse scattering values, and
will be available through the special variables CrP, CgP and CbP.
Care must be taken when using this material type to produce a physically valid
reflection model. The reflectance functions should be bidirectional, and under no
circumstances should the sum of reflected diffuse, transmitted diffuse, reflected
specular, transmitted specular and the integrated directional diffuse component be
greater than one.
Args:
identifier: Text string for a unique Material ID. Must not contain spaces
or special characters. This will be used to identify the object across
a model and in the exported Radiance files.
modifier: Modifier. It can be primitive, mixture, texture or pattern.
(Default: None).
values: An array 3 arrays for primitive data. Each of the 3 sub-arrays
refer to a line number in the radiance primitive definitions and the
values in each array correspond to values occurring within each line.
is_opaque: A boolean to indicate whether this primitive is opaque.
dependencies: A list of primitives that this primitive depends on. This
argument is only useful for defining advanced primitives that are
defined based on other primitives. (Default: []).
Properties:
* identifier
* display_name
* values
* modifier
* dependencies
* is_modifier
* is_material
* is_opaque
"""
__slots__ = ()
pass