3.5. Optical Surface Materials

3.5.1. Absorber

class raysect.optical.material.absorber.AbsorbingSurface

Bases: raysect.optical.material.material.NullVolume

A perfectly absorbing surface material.

3.5.2. Emitters

class raysect.optical.material.emitter.UnitySurfaceEmitter

Bases: raysect.optical.material.material.NullVolume

Uniform and isotropic surface emitter with emission 1W/str/m^2/ x nm, where x is the spectrum’s wavelength interval.

This material is useful for general purpose debugging and testing energy conservation.

class raysect.optical.material.emitter.UniformSurfaceEmitter

Bases: raysect.optical.material.material.NullVolume

Uniform and isotropic surface emitter.

Uniform emission will be given by the emission_spectrum multiplied by the emission scale.

Parameters:
  • emission_spectrum (SpectralFunction) – The surface’s emission function.
  • scale (float) – Scale of the emission function (default = 1 W/m^2/str/nm).

3.5.3. Lambertian

class raysect.optical.material.lambert.Lambert

Bases: raysect.optical.material.material.ContinuousBSDF

An ideal Lambertian surface material.

A Lambertian is a perfectly diffuse surface that scatters light equally in all directions. It is a good approximation to many real world surfaces.

Parameters:reflectivity (SpectralFunction) – Reflectance function which defines the fraction of light scattered at each wavelength.

3.5.4. Conductors

class raysect.optical.material.conductor.Conductor

Bases: raysect.optical.material.material.Material

Conductor material.

The conductor material simulates the interaction of light with a homogeneous conducting material, such as, gold, silver or aluminium.

This material implements the Fresnel equations for a conducting surface. To use the material, the complex refractive index of the conductor must be supplied.

Parameters:
  • index (SpectralFunction) – Real component of the refractive index - \(n(\lambda)\).
  • extinction (SpectralFunction) – Imaginary component of the refractive index (extinction) - \(k(\lambda)\).
class raysect.optical.material.conductor.RoughConductor

Bases: raysect.optical.material.material.ContinuousBSDF

This is implementing Cook-Torrence with conducting fresnel microfacets.

Smith shadowing and GGX facet distribution used to model roughness.

Parameters:
  • index (SpectralFunction) – Real component of the refractive index - \(n(\lambda)\).
  • extinction (SpectralFunction) – Imaginary component of the refractive index (extinction) - \(k(\lambda)\).
  • roughness (float) – The roughness parameter in range (0, 1]. 0 is perfectly specular, 1 is perfectly rough.

3.5.5. Dielectrics

class raysect.optical.material.dielectric.Sellmeier

Bases: raysect.optical.spectralfunction.NumericallyIntegratedSF

Material with refractive index defined by Sellmeier equation

Parameters:
  • b1 (float) – Sellmeier \(B_1\) coefficient.
  • b2 (float) – Sellmeier \(B_2\) coefficient.
  • b3 (float) – Sellmeier \(B_3\) coefficient.
  • c1 (float) – Sellmeier \(C_1\) coefficient.
  • c2 (float) – Sellmeier \(C_2\) coefficient.
  • c3 (float) – Sellmeier \(B_1\) coefficient.
  • sample_resolution (float) – The numerical sampling resolution in nanometers.
function()

Returns a sample of the three term Sellmeier equation at the specified wavelength.

Parameters:wavelength (float) – Wavelength in nm.
Returns:Refractive index sample.
Return type:float
class raysect.optical.material.dielectric.Dielectric

Bases: raysect.optical.material.material.Material

An ideal dielectric material.

Parameters:
  • index (SpectralFunction) – Refractive index as a function of wavelength.
  • transmission (SpectralFunction) – Transmission per metre as a function of wavelength.
  • external_index (SpectralFunction) – Refractive index of the external material at the interface, defaults to a vacuum (n=1).
  • transmission_only (bool) – toggles transmission only, no reflection (default=False).
class raysect.optical.material.debug.PerfectReflectingSurface

Bases: raysect.optical.material.material.Material

A material that is perfectly reflecting.

3.5.6. Modifiers

class raysect.optical.material.modifiers.Roughen

Bases: raysect.optical.material.material.Material

Modifies the surface normal to approximate a rough surface.

This is a modifier material, it takes another material (the base material) as an argument.

The roughen modifier works by randomly deflecting the surface normal about its true position before passing the intersection parameters on to the base material.

The deflection is calculated by interpolating between the existing normal and a vector sampled from a cosine weighted hemisphere. The strength of the interpolation, and hence the roughness of the surface, is controlled by the roughness argument. The roughness argument takes a value in the range [0, 1] where 1 is a fully rough, lambert-like surface and 0 is a smooth, untainted surface.

Parameters:
  • material – The base material.
  • roughness – A double value in the range [0, 1].

3.5.7. Debugging

This module contains materials to aid with debugging and creating test scenes.

class raysect.optical.material.emitter.Checkerboard

Bases: raysect.optical.material.material.NullVolume

Isotropic checkerboard surface emitter

Defines a plane of alternating squares of emission forming a checkerboard pattern. Useful in debugging and as a light source in test scenes.

Parameters:
  • width (float) – The width of the squares in metres.
  • emission_spectrum1 (SpectralFunction) – Emission spectrum for square one.
  • emission_spectrum2 (SpectralFunction) – Emission spectrum for square two.
  • scale1 (float) – Intensity of square one emission.
  • scale2 (float) – Intensity of square two emission.
width

The width of the squares in metres.

Return type:float
class raysect.optical.material.debug.Light

Bases: raysect.optical.material.material.NullVolume

A Lambertian surface material illuminated by a distant light source.

This debug material lights the primitive from the world direction specified by a vector passed to the light_direction parameter. An optional intensity and emission spectrum may be supplied. By default the light spectrum is the D65 white point spectrum.

Parameters:
  • light_direction (Vector3D) – A world space Vector3D defining the light direction.
  • intensity (float) – The light intensity in units of radiance (default is 1.0).
  • spectrum (SpectralFunction) – A SpectralFunction defining the light’s emission spectrum (default is D65 white).