# 3.6. Optical Volume Materials¶

class raysect.optical.material.emitter.UnityVolumeEmitter

Bases: raysect.optical.material.emitter.homogeneous.HomogeneousVolumeEmitter

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

This material is useful for general purpose debugging and evaluating the coupling coefficients between cameras and emitting volumes.

class raysect.optical.material.emitter.UniformVolumeEmitter

Bases: raysect.optical.material.emitter.homogeneous.HomogeneousVolumeEmitter

Uniform, homogeneous and isotropic volume emitter.

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

Parameters: emission_spectrum (SpectralFunction) – The volume’s emission function. scale (float) – Scale of the emission function (default = 1 W/m^3/str/nm).
class raysect.optical.material.emitter.HomogeneousVolumeEmitter

Base class for homogeneous volume emitters.

Total power output of the light from each point is constant, but not necessarily isotropic.

The deriving class must implement the emission_function() method.

emission_function()

The emission function for the material.

This is a virtual method and must be implemented in a sub class.

Parameters: direction (Vector3D) – The emission direction vector in local coordinates. spectrum (Spectrum) – Spectrum measured so far along ray path. Add your emission

to this spectrum, don’t override it. :param World world: The world scene-graph. :param Ray ray: The ray being traced. :param Primitive primitive: The geometric primitive to which this material belongs

(i.e. a cylinder or a mesh).
Parameters: world_to_primitive (AffineMatrix3D) – Affine matrix defining the coordinate transform from world space to the primitive’s local space. primitive_to_world (AffineMatrix3D) – Affine matrix defining the coordinate transform from the primitive’s local space to world space.
class raysect.optical.material.emitter.InhomogeneousVolumeEmitter

Base class for inhomogeneous volume emitters.

The integration technique can be changed by the user, but defaults to a basic numerical integration scheme.

The deriving class must implement the emission_function() method.

Parameters: integrator (VolumeIntegrator) – Integration object, defaults to NumericalIntegrator(step=0.01, min_samples=5).
emission_function()

The emission function for the material at a given sample point.

This is a virtual method and must be implemented in a sub class.

Parameters: point (Point3D) – Requested sample point in local coordinates. direction (Vector3D) – The emission direction in local coordinates. spectrum (Spectrum) – Spectrum measured so far along ray path. Add your emission

to this spectrum, don’t override it. :param World world: The world scene-graph. :param Ray ray: The ray being traced. :param Primitive primitive: The geometric primitive to which this material belongs

(i.e. a cylinder or a mesh).
Parameters: world_to_primitive (AffineMatrix3D) – Affine matrix defining the coordinate transform from world space to the primitive’s local space. primitive_to_world (AffineMatrix3D) – Affine matrix defining the coordinate transform from the primitive’s local space to world space.
class raysect.optical.material.emitter.inhomogeneous.VolumeIntegrator

Bases: object

Base class for integrators in InhomogeneousVolumeEmitter materials.

The deriving class must implement the integrate() method.

integrate()

Performs a customised integration of the emission through a volume emitter.

This is a virtual method and must be implemented in a sub class.

Parameters: spectrum (Spectrum) – Spectrum measured so far along ray path. Add your emission

to this spectrum, don’t override it. :param World world: The world scene-graph. :param Ray ray: The ray being traced. :param Primitive primitive: The geometric primitive to which this material belongs

(i.e. a cylinder or a mesh).
Parameters: material (InhomogeneousVolumeEmitter) – The material whose emission needs to be integrated. start_point (Point3D) – The start point for integration in world space. end_point (Point3D) – The end point for integration in world space. world_to_primitive (AffineMatrix3D) – Affine matrix defining the coordinate transform from world space to the primitive’s local space. primitive_to_world (AffineMatrix3D) – Affine matrix defining the coordinate transform from the primitive’s local space to world space.
class raysect.optical.material.emitter.inhomogeneous.NumericalIntegrator

A basic implementation of the trapezium integration scheme for volume emitters.

Parameters: step (float) – The step size for numerical integration in metres. min_samples (int) – The minimum number of samples to use over integration range (default=5).