ZOS-API ユーザー解析によるホログラム構成干渉縞の解析

この記事は ホログラムの設計 フリーチュートリアルです。
光学ホログラムを設計する場合、製造性を確保するために、部品上の干渉縞周波数の分析が重要になることが少なくありません。この記事では、シーケンシャル面タイプのホログラム 1、ホログラム 2、光学合成ホログラムの干渉縞を評価するユーザー解析を紹介します。ZOS API によるユーザー解析の作成方法を示すためにソース コードが添付されています。また、ユーザー解析の設定を対話方式でカスタマイズできるように、設定ダイアログも作成します。

著者 Zachary Derocher

ダウンロード

添付ファイル

イントロダクション

OpticStudio のシーケンシャル モードに用意されているツールを使用すると、2 つの構成ビームの干渉によってホログラムを定義できます。これらのツールは柔軟な定義が可能であるものの、干渉縞パターンが過密なために生産できないホログラムをシミュレートしてしまうという状況を防ぐ機能は備えていません。この記事では、ホログラム干渉縞の構造と密度を表示する ZOS-API 解析を紹介します。
例として、このユーザー解析のソース コードも提供しています。解析では、UserAnalysisSettings モードを使用し、完全な代替案ではないものの、API 解析で値を初期化し、設定ウィンドウから取り込む方法を示します。

解析の準備と実行

解析を実行するために、記事の添付資料をダウンロードして解凍します。ソリューション ファイルと関連する付属ファイル (ソースなど) がプロジェクト フォルダに収められています。ユーザー解析の実行可能ファイル "Hologram Construction Interference.exe" は、ディレクトリ …\Documents\Zemax\User Analysis\ に保存する必要があります。実行可能ファイルを保存したら、OpticStudio を一度終了して、再起動すると、[プログラミング] (Programming) タブ → [ユーザー解析] (User Analyses) → [Hologram Construction Interference] から、ユーザー解析 "HologramFringes" を使用できるようになります。

ホログラムの干渉縞データの計算

ホログラム面上の任意の点における干渉データは、相対経路長と、2 つの構成光源からその点に向けて照射された光線のエネルギー伝搬方向の違いに基づいて計算できます。このユーザー解析は 2 つの部分に分けられます。第 1 の部分はホログラム 1 面とホログラム 2 面の場合、第 2 の部分は光学合成ホログラム面の場合に使用します。前者は、純粋な幾何光学的処理であるのに対し、後者では構成ファイルを開いて、構成光学系を考慮した実光線追跡を実行する必要があります。
光学合成ホログラムまたはホログラム 1 や 2 の面タイプのいずれの場合も、2 つの構成光源からホログラム面まで光線を追跡し、両光線の相対経路長を確認するだけで干渉縞パターンは計算できます。ユーザー解析におけるこの計算は、経路長の差に基づく干渉図形計算の手法に似ています。干渉縞の密度は、ホログラム面上の特定の点における、構成ビームの波動ベクトル (光線の方向余弦) の差に基づいて計算します。自由空間の干渉は次式で表されます。

 

この式で Λ は干渉縞間の間隔 1 つ (密度の逆数)、ro と rr は構成ビーム ベクトル、f は干渉縞面に直交する方向です。これを図示したのが、次の図です。赤の点線は自由空間における干渉縞を表しています。

ただし、OpticStudio ではホログラムを薄膜としてモデル化するため、干渉縞はホログラム面上以外には存在できません。面のプロファイルを考慮するには、面法線を使用します。

f' は薄膜の面内に含まれます。したがって、σ こそが実際に必要な値であり、ホログラム面内の干渉縞の間隔になります。この値の逆数を取れば、干渉縞の密度が得られます。これらの計算はすべて純粋にローカルなものであり、ホログラム面全体に広がるグリッド点上で実行し、任意の位置における干渉縞密度を判断できます。

ホログラム 1、ホログラム 2 面のホログラム干渉縞周波数の計算

ホログラム 1 および 2 面の場合、構成光源は XYZ で指定する点として定義され、構成点とホログラム面の間の光線の経路には、光学系が一切介在しません。したがって、ホログラム面の各点では、2 つの点光源からの光線ベクトルの差を、光線を追跡することなく、純粋な幾何光学的処理によって計算できます。今回の例では、ホログラム面上の各サンプリング点で、構成光源とその点の間のベクトルを描画します。これを両方の構成光源について行います。次に、2 つのベクトルの差と波長に基づいて、ホログラム面上の干渉縞周波数を決定します。

光学合成ホログラム面のホログラム干渉縞周波数の計算

光学合成ホログラムの場合、計算は若干複雑になります。2 つの独立した光学系が存在することから、特性が収差の影響を受けるからです。OFH が解析対象である場合、構成 ZMX ファイルをそれぞれ個別に開き (新しい IOpticalSystem インスタンスによりバックグラウンドで実行します)、バッチ光線追跡を実行して、ホログラム面のグリッドにおける各光線の方向余弦を取得する必要があります。光線追跡から、各点における面法線ベクトルも取得し、干渉縞密度の計算に使用します。

解析の設定

ここで紹介するホログラム解析を使用すると、干渉縞周波数 (レンズ ユニットあたりの干渉縞の数) をプロットするか、正規化したスケールで構成ビームの干渉縞を直接表示できます。解析の設定は次のとおりです。

  • [面番号] (Surface Number) : 解析するホログラム面の面番号。オプションには、有効な面 (ホログラム 1、ホログラム 2、光学合成ホログラム) のみが表示されます。光学系内に有効な面が見つからない場合、解析を読み込んだ時点でエラー メッセージが表示されます。
  • [サンプリング] (Sampling) : 干渉を計測するために使用する光線グリッドのサンプリング密度。実際に追跡されるサンプリング光線の本数は、ここで指定した値の 2 倍になります。両方の構成ビームについて光線グリッドが必要であるためです。
  • [干渉縞倍率] (Fringe Scale) : [干渉縞周波数をプロット] (Plot Fringe Frequency) を有効にした場合は、無効となり使用しません。干渉をプロットするように解析を設定した場合、この縮尺比でプロットされる縞 1 本あたりの物理干渉縞数が決まります。たとえば、10 という値を設定した場合、プロットに表示される各縞に対して、ホログラム面上には 10 本の物理的な干渉縞が存在することを意味します。高倍率のホログラムの場合、完全な干渉縞パターンをエイリアシングの効果が現れないように表示するには、極めて多くのサンプリング必要になる可能性があります。この倍率を大きくすることで、サンプリング数を比較的低く抑えたまま、エイリアシングの効果を除去できます。
  • [干渉縞周波数をプロット] (Plot Fringe Frequency) : 解析の実行モードを決定します。チェックすると、解析によって干渉縞周波数 (縞の数/レンズ ユニット) が表示されます。チェックを外すと、正規化された単位で干渉縞パターンが表示されます。
  • [テキスト データを保存] (Save Text Data) : 計算で得られた生データをテキスト ファイルとして保存できるオプションです。ファイルは、現在のレンズ ファイルと同じディレクトリに保存されます。ここで入力するテキスト ファイルの名前はパスなしで、末尾に拡張子 ".txt" を付加してください (例 : "analysis.txt")。

API によるユーザー解析設定のプログラミング

ユーザー解析を開くと、実行可能ファイルが UserAnalysis モードで呼び出されます。つまり、単に RunUserAnalysis() を呼び出して、終了するだけです。その場合、RunUserAnalysis() 関数内で定義されたデフォルト値が使用されます。解析の読み込み後、ユーザーは UI から解析の設定を開いてカスタム オプションを選択できます。
UI では、ZOS-API ユーザー解析の設定ダイアログが、他の解析ウィンドウとまったく同じように、ウィンドウの左上隅にある [設定] (Settings) ドロップダウンによって初期化されます。このボタンはユーザー解析の .exe ファイルを初期化しますが、呼び出し時の Mode フラグが異なります。これによって RunUserAnalysis 関数ではなく ShowUserAnalysisSettings 関数が呼び出されます。添付のソース コードでは、この 2 次的な関数はファイルの末尾付近にあります。この関数で、新しい設定フォームを初期化します。Visual Studio の場合、[ソリューション エクスプローラー] (Solution Explorer) の AnalysisSettingsForm.cs を右クリックして、[開く] (Open) を選択すると、設定フォームが表示されます。

ここで、定義した設定をすべて確認できます (ボタン、コンボボックスなど)。個々のボタンをクリックすると、[プロパティ] (Properties) ペインに名前、型、その他の情報など、ボタンに設定されたプロパティが表示されます。この画面では、フォームにその他の設定エンティティを追加することもできます。
これらの設定がコード内で実際に使用されるのは AnalysisSettingsForm() 関数を呼び出したときです。
設定フォームの定義は、AnalysisSettingsForm() 関数を右クリックして、[定義へ移動] (Go to Definition) を選択することで確認できます。この定義部分には、設定フォームのコンポーネントがいくつかあります。
  • AnalysisSettingsForm_Load() 関数は、設定ウィンドウが最初に読み込まれるときに呼び出されます。この部分では、ユーザーに提示するオプションを設定し、設定フォームの各フィールドにあらかじめ入力するデフォルト値や前回選択した値を設定します。
  • b_OK_Click() 関数は、設定フォームの [OK] (OK) ボタンをクリックしたときに呼び出されます。ユーザーが選択した設定が実際に適用されるのは、この時になります。設定をグローバル変数に代入した後、RunUserAnalysis() 関数が呼び出され、これらのグローバル設定変数から値が取得されます。
  • 他の関数は、ユーザーが他の設定フィールドと対話できるように定義されたものです。

設定ウィンドウで [OK] (OK) ボタンがクリックされると、Program.cs の ShowUserAnalysisSettings() 関数に戻り、API の SetIntegerValue()、SetDoubleValue() などの関数によって設定値を取得します。最後に、これらの所望の設定に基づいて、RunUserAnalysis() 関数を呼び出し、解析を再計算します。RunUserAnalysis() 関数を見ると、最初の動作がいくつかのデフォルト値の設定であることがわかりますが、その後に設定ウィンドウが前もって呼び出されたかどうかを確認しています。呼び出されていた場合は、代わりに GetDoubleValue()、GetIntegerValue() などの関数でユーザー設定を取得します。以上で、設定ダイアログとユーザー解析の計算の間の通信は完了します。

ホログラム解析における仮定

  • この前提は光学合成ホログラムの場合にも適用され、ホログラムのサイズは再生ホログラム面のクリア半径で定義されます。混乱を避けるため、ホログラム面の [アパチャー タイプ] (Aperture Type) には [浮動アパチャー] (Floating Aperture) または [なし] (None) を使用することを推奨します。
  • 光学合成ホログラムの場合、3 つのファイル (2 つの構成ファイルと再生ファイル) のすべてで光学系の単位が同じであると仮定しています。

  • 解析は湾曲したホログラム面についても有効であり、結果は湾曲したホログラム面に対して計算されます。干渉縞密度の計算では、どのホログラム タイプでも干渉縞の間隔がサンプル点でホログラム面に接するローカル接平面上で計算されます。干渉図形の表示では、構成点からの経路長が、実際の面座標 (サグを含む) までの経路長に基づいて計算されます。ただし、結果は 2 次元のデータ グリッドに投影されるため、出力を解析する際は注意が必要です。特に、ホログラム 1 と 2 では、面のクリア半径にわたって、光線グリッドが等間隔に配置されます。光学合成ホログラムの場合、光線は瞳内で等間隔に配置されます。この解析は、現状では円錐形状のホログラム基板にしか有効でないことにも注意してください。つまり、光学合成ホログラムの複雑な面のサグ オプションには対応していないということです (光学合成ホログラムの [形状] (Shape) パラメータは 0 に設定する必要があります)。
  • 光学合成ホログラムの場合、再生ホログラムの形状は、構成ファイルの絞り面の形状に厳密に一致させる必要があります。

  • 構成ファイルはミラーに対応しています。光学合成ホログラムの構成ファイルの絞り面がミラー空間にある場合 (奇数個のミラーによって光線が反射される場合)、光線は -z 軸方向に伝搬するものの、絞り面の「前面」に入射するものと考えます。

 

参考文献

1. Welford, W. T. Aberrations of the symmetrical optical system Aberrations of optical systems. A. Hilger, Bristol ; Boston, 1986.

2. Welford, W. T. “A Vector Raytracing Equation for Hologram Lenses of Arbitrary Shape.” Optics Communications, vol. 14, no. 3, 1975, pp. 322–323., doi:10.1016/0030-4018(75)90327-2.

KA-01791

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

コメント

0件のコメント

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