This article provides a summary of the surface and bulk scattering models available in OpticStudio. It describes the bi-directional scattering distribution function (BSDF) used by different built-in scattering models as well as the DLL scattering models. It also provides a general guideline on when to use each scattering model.
Authored By Sanjay Gangadhara
Introduction
In any optical system, light may be scattered at a surface boundary (e.g., due to surface roughness) as well as within the bulk of a volume (e.g., due to light-particle interaction). Both scattering phenomena may be modeled in the Non-Sequential Mode of OpticStudio.
OpticStudio provides several models to describe surface and bulk scattering. This article is meant to provide a summary of these models. More details on each model may be found in the OpticStudio Help File section: “The Setup Tab>Editors Group (Setup Tab)>Non-sequential Component Editor>Non-sequential Overview>Scattering (non-sequential overview)>Available Scatter Models”, as well as in associated Knowledgebase articles.
Surface scattering models
A number of models are available to model surface scattering in OpticStudio. These include built-in models as well as user-defined DLL models. The models are generally described in terms of the bi-directional scattering distribution function (BSDF).
where dLs is the scattered radiance, dEi is the incident irradiance, θ is the polar angle as measured from the surface normal, ϕ is the azimuthal angle, and the subscripts i and s refer to the incident and scattered directions, respectively. The BSDF can also be defined in terms of the vector x rather than the polar coordinates θ and ϕ; x represents the vector displacement between the scattered ray and the specular ray in the projected plane:
More details on each model may be found in the OpticStudio help file entitled “Scattering”
Built-in surface scattering models
Model | BSDF | Description |
Lambertian | BSDF = 1/π |
The scattered ray projection vector has equal probability anywhere on the projected plane. This results in a scattered intensity variation of the form cos(θs). The scattered intensity is independent of the incident angle |
Gaussian | BSDF(x) = A*exp[-|x|2/σ2] |
The scattering distribution is symmetric in direction cosine space, and σ determines the width of the Gaussian distribution on the projected plane. Maximum value allowed for s is 5 (for σ > 5, distribution is nearly Lambertian) |
ABg | BSDF(x) = A/[B + |x|g] |
Widely used to model scattering due to random isotropic surface roughness. Input values for A, B, and g are provided in an ASCII file (in the <data>\ABg_Data\ directory). Input value limitations: A >= 0, B >= 1.0E-12 (unless g = 0, then B = 0 is allowed) |
DLL surface scattering models
Model | BSDF | Description |
Lambertian | BSDF = 1/π |
Same as built-in Lambertian model; used for illustrating how to write a DLL. |
TwoGaussian | Combination of Lambertian and Gaussian distributions |
User specifies fraction of energy in Lambertian and Gaussian scattering. Two Gaussian distributions are modeled, with independent inputs for the widths (s) and fractional energy. The user is responsible for checking those fractional energies sum to <= 1. |
Gaussian_XY |
Described in terms of a probability distribution, P, rather than a BSDF: P(p,q) = (4/(π*σp*σq))*exp[-((p/σp)2 + (q/σq)2)] |
Represents a Gaussian distribution along axes on the projected plane. p is in the plane of incidence (POI), and q is normal to the POI. The (p,q) axes do not correspond to the (x,y) axes of the system except for special cases. The vaiables σp, σq may be > 0 or < 1 (otherwise use a Lambertian). More details provided in the article, “How to create a user-defined scattering function." |
K-correlation | BSDF(x) = A*σ2*cos(θi)*cos(θs)/[1 + (B*|x|/λ)2](s/2) |
Characterizes scattering due to surface microroughness. Similar to ABg model, with an additional small angle roll-off useful for characterizing many surface finishes. The variable s represents the RMS surface roughness; other inputs described in the article, “How to model surface scattering via the K-correlation distribution." |
RI_BSDF | BSDF given by ASCII input |
Used to model surfaces whose scattering properties have been experimentally measured rather than fit to an analytic form. Input data format is described in the article, "BSDF data interchange file format specification." Application of the data in OpticStudio modeling is described in the article, “How to use tabular BSDF data to define the surface scattering distribution." |
If none of the distributions listed above is sufficient to model surface scattering in your system, you may construct your own DLL model, following the instructions provided in the article, “How to create a user-defined scattering function."
Bulk scattering models
A number of models are available to model bulk scattering in OpticStudio. These include a built-in model as well as user-defined DLL models. The models are generally described in terms of a probability distribution function (P) for the angle of scattering. In all cases, the probability of a scattering event occurring is given by an exponential.
p(x) = 1.0 - exp[-μ*x]
where x is the distance that light has travelled in the volume, μ = 1/M and M is the mean-free path for scattering in the volume. During a bulk scattering event, the wavelength may be also altered (in addition to the ray trajectory), allowing users to model fluorescence (see the article entitled "How to model fluorescence using bulk scattering" for a complete description). More details are provided in the OpticStudio help file under: “The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor."
Built-in bulk scattering models
Model | Probability Distribution | Description |
Angle | P(θ) = 1/2 |
The probability of scattering into any angle is constant. The maximum angle for scattering can be set as a user input (“Angle” parameter). |
DLL bulk scattering models
Model | Probability Distribution | Description |
Bulk_samp_1 | P(θ) = 1/2 | Same as built-in Angle model; used for illustrating how to write a DLL. |
Poly_bulk_scat | P(θ) = ∑ciθi |
Angular scattering distribution is represented by a polynomial. The range of summation represents a 12th order polynomial where 0 ≤ i ≤ 12. |
Henyey-Greenstein_bulk |
P(θ) = (1/4π)*(1 - g2)/[1 + g2 – 2g*cos(θ)]3/2 |
Characterizes scattering by small particles. This is useful for describing scattering in biological tissue and interstellar dust clouds. Input values for g range from 10-4 (uniform angular distribution) to 1.0 (highly peaked about θ = 0). More details are provided in the article, “Using the Henyey-Greenstein distribution to model bulk scattering." |
Rayleigh | P(θ,λ) = 0.375*(1 + cos2θ)/λ4 |
Characterizes scattering by small particles (particle size << wavelength). Mean-free path scaled by wavelength (~ λ4). More details are provided in the article, “Bulk scattering with the Rayleigh model." |
Mie | Probability distribution given by sum over spherical Bessel functions1. |
Characterizes scattering for arbitrary ratios of particle size to wavelength. Used to describe scattering in the atmosphere. More details are provided in the article, “How to simulate atmospheric scattering using a Mie model." |
If none of the distributions listed above is sufficient to model bulk scattering in your system, you may also construct your own DLL model, using the source code provided for the above DLLs as a starting point.
References
1. Craig F. Bohren and Donald R. Huffman, “Absorption and Scattering of Light by Small Particles”, John Wiley & Sons (1983).
KA-01415
评论
请登录写评论。