バルク散乱

オブジェクトのバルク散乱方法は、[オブジェクト プロパティ] (Object Properties) ウィンドウの [バルク散乱] (Bulk Scatter) セクションで設定します。  バルク (体積) 散乱モデルでは、ソリッド オブジェクトの中を伝播する光線のランダムな散乱をモデル化します。OpticStudio では、ソリッド オブジェクトのバルク散乱で、バルク散乱なし ([なし] (None))、[角度散乱] (Angle Scattering)、[DLL 定義の散乱] (DLL Defined Scattering) の 3 つのモードがサポートされています。

[バルク散乱なし] (No Bulk Scattering)

[バルク散乱なし] (No Bulk Scattering) を選択した場合、光線は散乱せずに、ソリッド内を伝播します。

[角度散乱] (Angle Scattering)

角度散乱では、ソリッド内部での散乱を実現するためにシンプルなモデルが使用されます。媒質内部で距離 x を伝播した光線が散乱する統合確率は、以下の式で求められます。

ここで

記号 M は、 レンズ ユニット で表した平均自由経路です。x が増加するにつれて、光線が散乱する確率は、1.0 に漸近します。この式を 0.0 と 1.0 の間でランダムに選択した値に設定して x を算出すると、正確な統計でランダムに生成された経路長が示されます。この経路長が、光線とオブジェクトの次の交差までの伝播距離よりも長いと散乱は発生しません。それ以外の場合、光線は、その伝播方向上の指定された位置で散乱します。

位置を決定すると、散乱は、選択された新しい光線の方向に沿ってモデル化されます。角度散乱の場合、現在の光線の方向に対して角度をなす円錐内で、新しい光線の方向が均一な分布になるように、ランダムな角度が選択されます。円錐の半角はこのモデルのパラメータの 1 つであり、このパラメータは 0.0°と 180°の間で設定する必要があります。後者の値に設定した場合、光線はあらゆる方向にランダムに散乱します。光線が散乱した後、OpticStudio では、偏光ベクトルが自動的に調整され、散乱光線の位相がランダム化されます。

[DLL 定義の散乱] (DLL Defined Scattering)

角度散乱モデルが不十分な場合、ダイナミック リンク ライブラリ (DLL) と呼ばれる外部プログラムを利用して、より複雑なバルク散乱関数を定義できます。OpticStudio に付属するサンプル DLL にはソース コードが用意されています。新しい DLL は、適切なコンパイラを使用すれば簡単に作成できます。「DLL に関するコメント」も参照してください。

DLL 定義のバルク散乱を使用するオブジェクトの定義

オブジェクトで DLL 定義のバルク散乱関数を使用するには、[オブジェクト プロパティ] (Object Properties) ダイアログ ボックスで [バルク散乱] (Bulk Scattering) タブを選択し、[DLL 定義の散乱] (DLL Defined Scattering) モデルを選択します。利用可能な DLL 関数のリストが、[DLL] (DLL) コントロールに表示されます。

DLL ごとに入力データと出力データを確認するには、バルク散乱 DLL、回折 DLL、面の散乱 DLL の data[] 値を確認します。

DLL のパラメータ

媒質プロパティの計算時には、各 DLL で 0 ~ 16 個のユーザー定義のデータ値をパラメータとして使用する場合があります。これらの値は DLL で定義され、その DLL でのみ使用されます。

新規 DLL の作成

DLL には、次の 2 つの関数が含まれている必要があります。

  • UserBulkDefinition
  • UserParamNames

DLL 定義のバルク散乱を使用して、ソリッド内で光線を追跡する際に、OpticStudio は、光線に沿った現在の伝播長、さまざまな光線データの値、ユーザーによって定義されるその他の パラメータ データ を UserBulkDefinition 関数に渡します。次に、UserBulkDefinition は、伝播長の特定のポイントで光線が散乱するかどうかを判断する必要があります。光線が散乱する場合、UserBulkDefinition は次の値を決定する必要があります。

光線が散乱する位置光線の新しい方向余弦る場合はその減衰率応じて新しい電界ベクトル (この値が得られない場合は、OpticStudio 側で合理的に推定されます)

これらの値は OpticStudio に返された後、追跡を継続するために使用されます。UserParamNames 関数は、使用するすべてのパラメータの名前の定義に使用されます。これらの名前は、[オブジェクト プロパティ] (Object Properties) ダイアログ ボックスの [バルク散乱] (Bulk Scatter) タブに表示されます。バルク散乱 DLL は、<data>\DLL\BulkScatter フォルダに配置する必要があります。「[フォルダの設定] (Folders)」を参照してください。

バルク散乱のサンプル : Poly_bulk_scat.DLL

サンプル バルク散乱ファイル poly_bulk_scat では、次のように散乱確率が定義されています。

ここで θ は、散乱していない光線方向に対する散乱光線の極角度です。ソース コード ファイル poly_bulk_scat.c は、サンプル ファイルとして OpticStudio に付属しています。

バルク散乱のサンプル : Henyey-Greenstein-bulk.DLL

Henyey-Greenstein バルク散乱モデルでは、次のように散乱確率が定義されています。

ここで θ は、散乱していない光線方向に対する散乱光線の極角度です。パラメータ g は、-1 ~ 0.9999 の任意の値にすることができます。g の入力値が -1 よりも小さい場合、g は -1 に設定されます。g の入力値が 0.9999 よりも大きい場合、g は 0.9999 に設定されます。|g| の入力値が 1.0e-4 4 よりも小さい場合、g は 1.0e-4 に設定されます。ソース コード ファイル Henyey-Greenstein-bulk.c は、サンプル ファイルとして OpticStudio に付属しています。

バルク散乱のサンプル : Rayleigh.DLL

レイリー バルク散乱モデルでは、非偏光入力ビームに対するレイリー理論に従って、散乱確率が定義されます。

ここでθは、散乱していない光線の方向に対する散乱光の極角度、λは波長です。(散乱が発生するたびに、エネルギーが失われる状態を表現できるようにする値) です。詳細は、OpticStudio ナレッジ ベースの『Bulk Scattering with the Rayleigh Model』というタイトルの記事を参照してください。ソース コード ファイル Rayleigh.c は、サンプル ファイルとして OpticStudio に付属しています。

バルク散乱のサンプル : Mie.DLL

ミー バルク散乱モデルでは、ミー理論に従って、散乱確率が定義されます。OpticStudio で使用されるアルゴリズムは、Craig F. Bohren 氏と Donald R. Huffman 氏による書籍『Absorption and Scattering of Light by Small Particles』 (John Wiley & Sons, 1983) から引用したものです。DLL に対する入力には、粒子屈折率、粒子サイズ (μm 単位)、粒子密度 (cm-3 単位) などがあります。詳細は、OpticStudio ナレッジ ベースの『How to Simulate Atmospheric Scattering using a Mie model』というタイトルの記事を参照してください。ソース コード ファイルは、OpticStudio に付属していません。

バルク散乱のサンプル : Phosphor.DLL

燐光バルク散乱モデルは、蛍光と散乱の両方が発生する可能性がある燐光材質を表現することを目的としています。「青」として定義される特定範囲の波長の光が、DLL の適用対象である媒質に入射すると、その光に対して別の波長への変換 (蛍光発光) または単なるバルク散乱が発生します。入射光が蛍光に変換されると、その光は、180 度の円錐角の範囲に均一な確率で放射されます (つまり、入射光は、角度散乱モデルに従って「散乱」します)。入射光が蛍光を伴って散乱する場合は、ミー分布に従います。蛍光 (または「青」の波長範囲以外のあらゆる入射光) も、ミー分布に従って散乱する可能性があります。DLL への入力には、蛍光の平均自由経路、「青」を定義する波長範囲、ミー分布に関連する粒子パラメータなどがあります。詳細は、OpticStudio ナレッジ ベースの『Modeling a White Light Source using a Phosphor』というタイトルの記事を参照してください。ソース コード ファイルは、OpticStudio に付属していません。

次へ :