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.

>>> from raysect.primitive import Sphere
>>> from raysect.optical import World
>>> from raysect.optical.material import UnityVolumeEmitter
>>>
>>> # set-up scenegraph
>>> world = World()
>>> emitter = Sphere(radius=0.01, parent=world, material=UnityVolumeEmitter())
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).

>>> from raysect.primitive import Sphere
>>> from raysect.optical import World, ConstantSF
>>> from raysect.optical.material import UniformVolumeEmitter
>>>
>>> # set-up scenegraph
>>> world = World()
>>> emitter = Sphere(radius=0.01, parent=world)
>>> emitter.material=UniformVolumeEmitter(ConstantSF(1.0))
class raysect.optical.material.emitter.HomogeneousVolumeEmitter

Bases: raysect.optical.material.material.NullSurface

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.

  • world (World) – The world scene-graph.

  • ray (Ray) – The ray being traced.

  • primitive (Primitive) – The geometric primitive to which this material belongs (i.e. a cylinder or a mesh).

  • 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

Bases: raysect.optical.material.material.NullSurface

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.

  • world (World) – The world scene-graph.

  • ray (Ray) – The ray being traced.

  • primitive (Primitive) – The geometric primitive to which this material belongs (i.e. a cylinder or a mesh).

  • 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

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.

  • world (World) – The world scene-graph.

  • ray (Ray) – The ray being traced.

  • primitive (Primitive) – The geometric primitive to which this material belongs (i.e. a cylinder or a mesh).

  • 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

Bases: raysect.optical.material.emitter.inhomogeneous.VolumeIntegrator

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).

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.

  • world (World) – The world scene-graph.

  • ray (Ray) – The ray being traced.

  • primitive (Primitive) – The geometric primitive to which this material belongs (i.e. a cylinder or a mesh).

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