honeybee_radiance.modifier.material.brtdfunc module

Radiance BRTDfunc Material.

http://radsite.lbl.gov/radiance/refer/ray.html#BRTDfunc

class honeybee_radiance.modifier.material.brtdfunc.BRTDfunc(identifier, modifier=None, values=None, is_opaque=None, dependencies=None)[source]

Bases: 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.

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.

Parameters
  • 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

ToString()

Overwrite .NET ToString.

add_dependent(dep)

Add dependent.

duplicate()

Get a copy of this object.

static filter_dict_input(input_dict)

Filter a dictionary of a Primitive to get modifier and dependency objects.

classmethod from_dict(data)

Initialize the object from a dictionary.

Parameters

data – A dictionary in the format below.

{
"modifier": {},  # primitive modifier (Default: None)
"type": "",  # lowercase string for the primitive type
"identifier": "",  # primitive identifier
"display_name": "",  # primitive display name
"values": [],  # values
"dependencies": []
}
classmethod from_primitive_dict(primitive_dict)

Initialize the object from a primitive dict.

The primitive_dict is a dictionary following the base Primitive schema of a Radiance object. This base Primitive schema is the same for all Radiance Primitives (including Modifiers and Geometry) whereas the from_dict classmethod accepts a different schema that is customized to each subclass inheriting from the Radiance Primitive.

Parameters

data – A dictionary in the format below

{
"modifier": {},  # primitive modifier (Default: None)
"type": "",  # lowercase string for the primitive type
"identifier": "",  # primitive identifier
"display_name": "",  # primitive display name
"values": [],  # values
"dependencies": []
}
classmethod from_string(primitive_string)

Create a Radiance primitive from a string.

If the primitive modifier is not void or it has other dependencies, the modifier and/or dependencies must also be part of the input string.

lock()
to_dict()

Translate this object to a dictionary.

to_radiance(minimal=False, include_modifier=True, include_dependencies=True)

Return full radiance definition.

Parameters
  • minimal – Boolean to note whether the radiance string should be written in a minimal format (with spaces instead of line breaks). Default: False.

  • include_modifier – Boolean to note whether the modifier of this primitive should be included in the string. Default: True.

  • include_dependencies – Boolean to note whether the dependencies of this primitive should be included in the string. Default: True.

unlock()
GEOMETRYTYPES = {'bubble', 'cone', 'cup', 'cylinder', 'instance', 'mesh', 'polygon', 'ring', 'source', 'sphere', 'tube'}
MATERIALTYPES = {'BRTDfunc', 'BSDF', 'aBSDF', 'antimatter', 'ashik2', 'dielectric', 'glass', 'glow', 'illum', 'interface', 'light', 'metal', 'metal2', 'metdata', 'metfunc', 'mirror', 'mist', 'mixedfunc', 'plasdata', 'plasfunc', 'plastic', 'plastic2', 'prism1', 'prism2', 'spotlight', 'trans', 'trans2', 'transdata', 'transfunc'}
MIXTURETYPES = {'mixdata', 'mixfunc', 'mixpict', 'mixtext'}
MODIFIERTYPES = {'BRTDfunc', 'BSDF', 'aBSDF', 'antimatter', 'ashik2', 'brightdata', 'brightfunc', 'brighttext', 'colordata', 'colorfunc', 'colorpict', 'colortext', 'dielectric', 'glass', 'glow', 'illum', 'interface', 'light', 'metal', 'metal2', 'metdata', 'metfunc', 'mirror', 'mist', 'mixdata', 'mixedfunc', 'mixfunc', 'mixpict', 'mixtext', 'plasdata', 'plasfunc', 'plastic', 'plastic2', 'prism1', 'prism2', 'spotlight', 'texdata', 'texfunc', 'trans', 'trans2', 'transdata', 'transfunc'}
NONEOPAQUETYPES = {'BRTDfunc', 'BSDF', 'aBSDF', 'dielectric', 'glass', 'mist', 'mixfunc', 'prism1', 'prism2', 'trans', 'trans2', 'transdata', 'transfunc'}
PATTERNTYPES = {'brightdata', 'brightfunc', 'brighttext', 'colordata', 'colorfunc', 'colorpict', 'colortext'}
TEXTURETYPES = {'texdata', 'texfunc'}
TYPES = {'BRTDfunc', 'BSDF', 'aBSDF', 'antimatter', 'ashik2', 'brightdata', 'brightfunc', 'brighttext', 'bubble', 'colordata', 'colorfunc', 'colorpict', 'colortext', 'cone', 'cup', 'cylinder', 'dielectric', 'glass', 'glow', 'illum', 'instance', 'interface', 'light', 'mesh', 'metal', 'metal2', 'metdata', 'metfunc', 'mirror', 'mist', 'mixdata', 'mixedfunc', 'mixfunc', 'mixpict', 'mixtext', 'plasdata', 'plasfunc', 'plastic', 'plastic2', 'polygon', 'prism1', 'prism2', 'ring', 'source', 'sphere', 'spotlight', 'texdata', 'texfunc', 'trans', 'trans2', 'transdata', 'transfunc', 'tube'}
property dependencies

Get list of dependencies for this primitive.

Additional dependencies can be added with the add_dependent method.

property display_name

Get or set a string for the object name without any character restrictions.

If not set, this will be equal to the identifier.

property identifier

Get or set a text string for the unique primitive identifier.

property is_geometry

Get a boolean noting whether this object is a Radiance geometry.

property is_material

Get a boolean noting whether this object is a material modifier.

property is_mixture

Get a boolean noting whether this object is a mixture modifier.

property is_modifier

Get a boolean indicating whether this object is a Radiance modifier.

Modifiers include materials, mixtures, textures and patterns.

property is_opaque

Get or set a boolean to indicate whether this primitive is opaque.

This property is used to separate opaque and non-opaque geometries as well as modifiers.

property is_pattern

Get a boolean noting whether this object is a pattern modifier.

property is_texture

Get a boolean noting whether this object is a texture modifier.

property is_void

Only true for a void.

property modifier

Get or set an object for the primitive modifier.

property type

Get or set a string for the primitive type.

This should always be lower case in order to match the radiance convention.

property values

Get or set the values of the current primitive as a list of three lists.

Each sub-list represents a line of the primitive’s radiance representation and contain the properties that define the primitive.

Usage:

# This will erase all values except the first line, which has 9 custom items
primitive.values = [
    [0.5, 0.5, 0.5, "/usr/oak.pic", ".", "frac(U)", "frac(V)", "-s", 1.1667],
    [],
    []
]