表形式の BSDF データを使用して面散乱分布を定義する方法

多くの場合、散乱データは容易にモデル化できない実験値のテキストファイルとして提供されます。この記事では、表形式の双方向散乱分布関数 (BSDF) データを使用して、OpticStudio に組み込まれているランバティアン、ガウス、または ABg モデルでは記述できない表面散乱特性を定義する方法について説明します。

著者 Sanjay Gangadhara; updated by Alissa Wersal

Downloads

添付ファイル

Introduction

はじめに

面散乱は、システムの照明および迷光特性を分析する際に考慮すべき重要な効果です。OpticStudio はランバティアン、ガウシアン、および ABg モデルを提供しますが、多くの場合、希望の分布は単に双方向散乱分布関数 (BSDF) の測定データの表として提供されます。

表形式の BSDF データを使用して表面散乱特性を生成するモデルが構築されました。この記事では、モデルについて説明し、このモデルを使用して OpticStudio のノンシーケンシャルで任意のオブジェクト表面の散乱分布を指定する方法の例を示します。

 

BSDF モデル : 説明

多くの場合、双方向散乱分布関数 (BSDF) の実測データの表という形態で目的の分布が用意されています。その一例が、Radiant Vision Systems (RVS) LLC が開発した散乱外観測定システム (IS-SA) で測定した BSDF データです。

OpticStudio に組み込まれた BSDF 散乱モデルでは、表形式の BSDF データを使用してオブジェクト面の散乱特性を定義できます。
データはテキスト ファイルでプログラムに渡します。そのファイルは、Radiant Vision Systems (RVS) 社が開発した BSDF データ交換ファイル フォーマットに準拠している必要があります。このフォーマットに関する詳細は、記事「BSDF データ交換ファイル フォーマットの仕様」を参照してください。この記事を読み進める前に、上記の記事の内容を十分に理解してください。

このモデルにアクセスするには、オブジェクト プロパティ ダイアログ ボックスの [コーティング/散乱] (Coat/Scatter) タブを使用します。これは、標準装備の解析モデルへのアクセスとまったく同様です。このモデルで使用できるすべての入力ファイルは、[反射 :] (Reflect:) オプションと [透過 :] (Transmit:) オプションに一覧表示されます。これら一覧のいずれかにファイルが表示されるようにするには、ファイル フォーマットを説明する記事にあるとおり、ファイル拡張子を .BSDF として、<Scatter> フォルダに保存する必要があります (このフォルダの場所は、[設定] (Setup) → [プロジェクト環境設定] (Project Preferences) → [フォルダの設定] (Folders) タブで確認できます)。ファイル名は、拡張子 .BSDF も含めて 60 文字以下とする必要があります。

このモデルの散乱光線の方向余弦は、入力ファイルで提供される BSDF 測定データを積分することで求めます。その際に必要な積分およびその積分と散乱光線ベクトルとの関係は、記事「ユーザー定義の散乱関数の作成方法」に記載されているものと同じです。BSDF は解析的な関数ではなく表形式のデータで記述されているため、この例の場合は解析的積分ではなく、数値積分が必要になります。それ以外の点では、どちらの積分でも手順は同じです。

いずれの場合も、積分が必要となるのは、ファイルを最初に OpticStudio に読み込んだ際の 1 回だけです。積分されたデータはメモリに保存され、光線追跡に何度でも使用できます。データはメモリに保存されることから、光線追跡の実行に必要な計算時間は、OpticStudio に標準付属の散乱モデルの場合と基本的には同じです。したがって、複数の入力ファイルを使用して設計のさまざまな面に各種の散乱分布を定義しても、計算時間が著しく長くなることはありません。なお、メモリに保存できるファイルの数は、現在のところ 最大 200 に設定されています。さまざまな散乱分布を指定するために 200 を超える入力ファイルを設定した設計の場合、制限の 200 を超える分布が設定された面では光線が散乱しなくなり、正反射光線の光路をたどるだけになります。このファイル数の制限を大きくする必要がある場合は、Zemax のテクニカル サポートまでお問い合わせください。

このモデルを使用する場合、[散乱割合] (Scatter Fraction) パラメータを 1 に設定することが重要です。

NSCE

この設定により、OpticStudio では TIS (Total Integrated Scatter) の値に基づいて散乱に割り当てるパワー量を適切に判断できます。TIS は入力データ ファイルから直接読み取られます (記事「BSDF データ交換ファイル フォーマットの仕様」にあるとおり、この値は該当の入力光線が成す入射角度に依存します)。他のあらゆる散乱モデルと同様に、散乱するパワーは [光線数] (Number Of Rays) パラメータで定義した数の散乱光線に均等に分配されます。散乱しないパワーは、面吸収などにより面上で失われたと見なされます。つまり、入力光線はすべて散乱しますが、散乱光線へのパワーは該当の TIS 値によってスケーリングされます (当然のことながら、入力光線の入射角ごとに異なる TIS 値が使用されます)。

最後に、このモデルは重要度サンプリングもサポートしています。その優れた例として、ファイル Tabular BSDF scattering surface with Importance Sampling.ZMX がフォルダ <Data>\Samples\Non-sequential\Scattering\ に保存されています (この記事の例で使用する入力 BSDF ファイルについては後述します)。重要度サンプリングを使用する場合も、目的の物体に伝搬するエネルギーを正規化するために必要な TIS 値は入力データ ファイルから直接読み取られ、特定の散乱光線に使用する TIS 値は、該当の入力光線の入射角に関連付けられたものになります。

BSDF モデル : 固有の注意事項

この散乱モデルに固有の注意事項がいくつかあります。

1. RVS ファイル フォーマットでは、サンプルにさまざまな回転を適用した測定が可能です。
これは、異方性の散乱特性を示す面を考慮するために必要な測定法です。
回転角の値はすべて 0 ~ 360 度の範囲とします。ゼロ以外の値を指定すると、+X 軸方向から見て反時計方向の回転がサンプルに適用されます。現在、このモデルで使用できる回転角の数は最大 50 に制限されています。この数の制限を大きくする必要がある場合は、Zemax のテクニカル サポートまでお問い合わせください。測定時の方向と異なる方向を向いた光学系の面をモデル化する場合、[角度 :] (Angle: ) 入力にゼロ以外の値を指定します。角度の値は度単位で入力し、こちらも 0 ~ 360 度の範囲で指定する必要があります。この場合も、ゼロ以外の角度値を指定すると、+X 軸方向から見て反時計方向の回転が面に適用されます。

 

NSCE_2

2. このモデルでは、入力の *.BSDF ファイルに指定できる入射角の数が最大 100、方位角の数が最大 1000、極角の数が最大 1000 にそれぞれ制限されています。これらの数の制限を大きくする必要がある場合は、Zemax のテクニカル サポートまでお問い合わせください。

3. RVS ファイル フォーマットは SpectralContent の値として Monochrome (単色) と XYZ (三刺激値) の 2 つの入力をサポートしています。一方、現在の OpticStudio の BSDF モデルは単色の散乱計算のみをサポートしています。したがって、三刺激値の BSDF データを記述した入力ファイルは、3 つの独立した単色の散乱分布を記述した入力ファイルと見なされます。三刺激値の入力ファイルを使用すると、現在の BSDF モデルでは、OpticStudio で面の BSDF を記述するために 2 番目のデータ セット (三刺激値 Y) が選択されます。

4. RVS ファイル フォーマットは ScatterType の値として BRDF と BTDF の 2 つの入力をサポートしています。ただし、現在のモデルではこれらのデータを使用していません。反射および透過での光の散乱分布は、それぞれ [反射 :] (Reflect: ) および [透過 :] (Transmit: ) の入力フィールドでモデル化の対象として選択したファイルによって決まります。

NSCE_3

したがって、透過と反射の両方への同時散乱でも BSDF モデルを使用でき、方向ごとに異なる散乱分布を指定できます。各方向への散乱パワーの合計は、反射と透過の各散乱に使用する TIS 値および面のコーティング特性に基づいて計算されます。

最後に、BSDF 値または TIS 値の補間は、異なるサンプル回転角に対するデータ間のみで実行される点に注意が必要です。このように補間することで、OpticStudio でサンプルを回転したときに、異なる角度で得られた結果間での変化が滑らかになります。どのサンプル回転角でも、アルゴリズムで選択した乱数と散乱角との間に相関関係を設定するために補間が実行されます。これは、記事「ユーザー定義の散乱関数の作成方法」で解説している散乱角の決定方法に類似しています。

散乱角を乱数に相関付ける際に補間が実行されることから、データ ファイルに記述された入力方位角および極角とは異なる値の散乱角になる可能性があり、また一般的にはそうなります。一方で、この相関には積分したデータ セット (上記記事の Iθ および IN に相当) が必要ですが、そのデータ セットは、離散的な入射角、方位角、極角についてのみ存在しています。そのような離散的な角度に対してのみ入力データが用意されているからです。BSDF モデルでは、散乱角の計算に使用する適切なデータ セットを判断する際に、互いに一番近い角度値が選択されます。つまり、適切なデータ セットを選択する際に補間が実行されません。したがって、このモデルを使用する際は、BSDF データの重要な変化をすべて記述できる十分な角度解像度 (具体的には入射角、方位角、極角について) が入力データに必要です。

実例

RVS (以前の Radiant Imaging) でIS-SA測定装置で実測した BSDF データを使用した簡単な例を検討してみます。このデータは、Brown Vinyl (ブラウン ビニール) と呼ばれる自動車のダッシュボード用ビニール素材に関するものです。この材料の BSDF データはテキスト ファイル BrownVinyl.BSDF に記述されており、OpticStudio のインストール時に付属ファイルとして Zemax/Scatter フォルダに保存されています。ファイルの内容は単色の BSDF データで、以下のように 13 の入射角、19 の方位角、11 の極角が定義されています。

#Data Generated by Radiant Imaging's 'Imaging Sphere'
#3/11/2008 9:37:42 AM
Source  Measured
Symmetry  PlaneSymmetrical
SpectralContent  Monochrome
ScatterType  BRDF
SampleRotation  1
0
AngleOfIncidence  13
15    20    25    30    35    40    45    50    ...
ScatterAzimuth 19
0    10    20    30    40    50    60    70    ... 
ScatterRadial 11
0   5    10    15    20    30    40    50    ....

Monochrome
DataBegin
TIS 0.134506
6.375E-02    6.180E-02    5.879E-02    5.529E-02 ...
6.375E-02    6.199E-02    5.886E-02    5.563E-02 ...
6.375E-02    6.215E-02    5.940E-02    5.591E-02 ...
6.375E-02    6.217E-02    5.975E-02    5.624E-02 ...
6.375E-02    6.246E-02    6.003E-02    5.674E-02 ...
6.375E-02    6.255E-02    6.036E-02    5.707E-02 ...
6.375E-02    6.264E-02    6.070E-02    5.720E-02 ...
6.375E-02    6.303E-02    6.078E-02    5.772E-02 ...
6.375E-02    6.314E-02    6.126E-02    5.895E-02 ...
6.375E-02    6.302E-02    6.136E-02    5.852E-02 ...
6.375E-02    6.343E-02    6.182E-02    5.889E-02 ...
6.375E-02    6.363E-02    6.182E-02    5.916E-02 ...
6.375E-02    6.366E-02    6.210E-02    5.947E-02 ...
6.375E-02    6.371E-02    6.210E-02    5.975E-02 ...
6.375E-02    6.372E-02    6.238E-02    6.003E-02 ...
6.375E-02    6.390E-02    6.248E-02    6.028E-02 ...
6.375E-02    6.404E-02    6.289E-02    6.061E-02 ...
6.375E-02    6.410E-02    6.277E-02    6.124E-02 ...
6.375E-02    6.406E-02    6.266E-02    6.103E-02 ...
TIS 0.1321704
6.501E-02    6.262E-02    5.909E-02    5.513E-02 ...
6.501E-02    6.299E-02    5.950E-02    5.554E-02 ...
.
.
.

 

このデータを使用して、ノンシーケンシャル モードで矩形オブジェクト上の散乱分布を定義します。

NSCE_4

 

主旨に従って [散乱割合] (Scatter Fraction) が 1 に設定され、各入力光線が 5 本の散乱光線 ([光線数] (Number OF Rays) = 5) に分割されます。

次に、光源 (光線) オブジェクトを使用して入射角 30 度で矩形オブジェクトの方向に光線を発射します。矩形オブジェクトの前方にディテクタ (矩形) オブジェクトを配置して、反射方向の散乱に起因する放射を確認します。
 

NSC_Shaded_model

 

矩形オブジェクトに対してディテクタ (矩形) オブジェクトを 180 度回転させ、[前面のみ] (Front Only) フラグを 1 に設定することで、反射光線のみがディテクタに記録されるようにします。この簡単な設定は OpticStudio 付属のレンズ設計ファイル (Tabular BSDF scattering surface.zmx) に記述されています。このファイルは、OpticStudio インストール時に <Data>\Samples\Non-sequential\Scattering\ フォルダに保存されています。

光源から 100 万本の解析光線を発射すると、ディテクタ上で次のようなインコヒーレント放射照度分布が得られます。
放射強度分布は次のとおりです。

Detector_viewer

 

ディテクタに到達する全パワーは 0.1229 W です。
 

Detector_viewer_2

 

これは、予想と良好に一致する結果です。この条件下では、全パワーはミラーの反射率と入射角 30 度における散乱での TIS 値との積に等しくなるからです。コーティングされていないミラーの反射率は 94.555% です。この値は、サンプル ファイルで散乱をオフにして光線追跡を実行すれば簡単に確認できます。(OpticStudio では、コーティングを設定していないミラーには厚いアルミニウムのコーティングが施されているものと見なします。詳細は記事「コーティングのないミラーの扱い」を参照してください。)Brown Vinyl のデータ ファイルによると、入射角 30 度における TIS 値は 0.1371577 です。したがって、ミラーの反射率と TIS 値の積は、0.94555 * 0.1371577 = 0.1297 となります。実際にディテクタに達するパワーは 1% 以内の精度でこの値に一致しています。ディテクタのサイズを大きくして、散乱分布の端の放射まで検出できるようにすれば、この一致度はさらに高くなります。

放射強度分布のプロットの端近くにアーチファクトが認められます。プロットの下部近くにある「階段」状のパターンです。このパターンは入力データの粗さに起因して発生しています。今回の入力データの角度解像度は、方位角方向および極角方向のほとんどで 10 度です。このアーチファクトを除去するには、入力データの角度解像度を高くする必要があります。たとえば、方位角と極角方向の解像度をどちらも 2 度とした入力ファイルを使用すると、次のようなインコヒーレント放射照度分布が得られます。
 

Detector_viewer_3

 

放射強度分布は次のとおりです。

Detector_viewer_4

解像度を高くしたことで放射強度分布の変化がより滑らかになっています。また、BSDF ファイル フォーマットでは角度空間のデータが等間隔である必要がないので、アーチファクトが発生する領域のみでデータの解像度を高くすれば十分です。したがって、光線追跡の結果の精度向上を図りながら、ファイル サイズを小さく維持できます。より高解像度の BSDF ファイルを、このページの添付ファイル セクションからダウンロードできます。

KA-01520

この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています

コメント

0件のコメント

サインインしてコメントを残してください。