こんにちは。光学、光でのお困りごとがありましたか?
光ラーニングは、「光学」をテーマに様々な情報を発信する光源を目指しています。情報源はインターネットの公開情報と、筆者の多少の知識と経験です。このページでは、Zemaxコミュニティで注目されていた、マイクロレンズアレイの設定方法について説明します。
Zemaxコミュニティについては、こちらのページ で概略を説明しています。
結論
- シーケンシャルモードとノンシーケンシャルモードの両方でマイクロレンズアレイを設定できます。レンズアレイだけをノンシーケンシャルモードで作成することで、ミックスモードでも設定できます。
- シーケンシャルモードは、ユーザ定義面を選択して、us_array.dll などを使用します。アレイの数を奇数にする制約があります。
- ノンシーケンシャルモードは、レンズレットアレイオブジェクトがあります。しかし、ヘルプファイルではアレイオブジェクトの使用が推奨されています。
このページの使い方
このページでは、Zemaxコミュニティに投稿されたトピック中から、よく参照されているもの、コメントが多いもの、筆者が気になったものを取り上げて紹介します。よくある疑問や注目されているトピックについての情報を発信することで、何かしらの気づきとなれば幸いです。
マイクロレンズアレイの設定方法
トピックへのリンク:
同じ形状をしたレンズが複数配列したような光学部品があります。呼び方はいろいろあって、レンズアレイ、マイクロレンズアレイ、フライアイレンズなどです。光ラーニングでは、マイクロレンズアレイもしくはレンズアレイを名称として使用します。
用途も様々で、複数の像を結ぶ結像系や、均一照明を達成する照明系、受光効率を高めるためセンサの直近に配置する場合もあります。OpticStudioにもマイクロレンズアレイをモデル化する機能を搭載しており、シーケンシャルモード、ノンシーケンシャルモードの両方で設定できます。
シーケンシャルモードでのレンズアレイの設定
レンズアレイという名称の面タイプはありませんが、ユーザ定義面で使用できるDLLが用意されています。ちなみに、ユーザ定義面はProfessional以上のエディションでしか使えません。
面タイプで「ユーザ定義」を選択し、ドロップダウンリストから「us_array.dll」(標準面のアレイ)、「us_arrayeven.dll」(偶数次非球面のアレイ、次数は16次まで)、「us_arrayeven2.dll」(偶数次非球面のアレイ、次数は20次まで)を選択します。
「us_arrayeven2.dll」はヘルプファイルに記載はありませんが、us_arrayevenの次数が拡張された面でした。なお、偶数次非球面のどちらも正規化半径は使わないタイプの非球面です。正規化半径については、正規化半径(Normalization Radius)ってなに? を参照してください。
ヘルプファイルに記載されている通り、アレイ数は必ず奇数にします。偶数を入れても、エラーメッセージは出さず、一つ下の奇数に修正されます。例えば、4 x 4と入力したら3 x 3のアレイになります。
これは理解できる制約です。アレイ数を偶数にすると、レンズアレイの中心がレンズの境界になってしまいます。
このような境界やオブジェクトのエッジに光線が入射すると、反射や屈折が計算できずに、OpticStudioの光線追跡は停止します。
ノンシーケンシャルモードのように多量の光線を追跡するならば、少ないエラーは無視できます。しかし、シーケンシャルモードのもっとも重要な光線である、主光線は必ず光学系を通過できなければなりません。主光線は、近軸計算にも使用される、シーケンシャルモードの解析機能の根幹ともいえる光線です。
試したことはないですが、ユーザ定義面のソースコードの改修でこの制約を解消できるかもしれません。「光線がエッジに入射した場合は境界を形成するいずれかのマイクロレンズに入射したとみなす」ような判定を入れることで、偶数のレンズアレイを設定できるかもしれませんが、言うは易く行うは難しの気がします。
主光線については、主光線、マージナル光線_OpticStudioレイアウトでの瞳の表示 (2) を参照してください。
ノンシーケンシャルモードでのレンズアレイの設定
ノンシーケンシャルモードには、ずはりレンズアレイを設定するためのオブジェクトがあります。レンズレットアレイ1、レンズレットアレイ2を使用します。もしくは、ブーリアンで作成した親オブジェクトをアレイ化する方法も使用できます。
下図のサンプルファイルも、レンズレットアレイオブジェクトを使用しています。光学系の詳細な説明については、デジタル プロジェクタ光学系で均一な照明を実現するフライ アイ アレイ (Zemaz技術記事) を参照してください。
レンズレットアレイのヘルプファイルには、このオブジェクトはバージョンの後方互換性を保つために残されている、と記載されています。
効率的な光線追跡という観点で、アレイオブジェクトを使用した方が光線追跡が速いです。とはいえ、1行で簡単にレンズアレイを設定できるオブジェクトなので直観的にわかりやすく、ついつい継続して使ってしまいます。
筆者が個人的にレンズレットアレイ1を気に入っている点として以下の特徴を持っていることです。
- デフォルトで矩形開口を設定できる。
- 曲面の頂点の位置を矩形開口の中でシフトできる。
- 回折格子を設定できる。
- トーリック面の設定もサポートしている。
他のオブジェクトの特徴を多く兼ね備えた、名バイプレーヤーだったりします。ヘルプファイルでは後方互換性を保つためのオブジェクトとされていますが、なかなか侮れない実力を持っています。
ミックスモードでも使える
ノンシーケンシャルモードのオブジェクトで設定できるのであれば、ミックスモードを使用することができます。コミュニティの質問者も、ミックスモードを使ってレンズアレイをシーケンシャルモードに取り込んでいました。
ミックスモード(混合モード)については、混合(ミックス)モード_OpticStudioのノンシーケンシャルモードについて (3) を参照してください。
ミックスモードであれば、us_array.DLLにあったレンズアレイの数の制約がないので、偶数個のアレイも設定できます。ただ、「主光線は必ずエラーなしで追跡できなければいけない」という条件はクリアする必要があります。
そこで1つの方法として、主光線がレンズアレイの境界に入らないように、ちょっとだけずらしておくことができます。この方法であれば、シーケンシャルモードで偶数個のレンズアレイの解析が可能になります。ただ、主光線が光軸から外れて光学系を進んでいくので、シーケンシャル解析機能のうち、いくつかの機能がおかしな結果を出力する可能性があります。
まとめ
このページでは、Zemaxコミュニティに投稿された「マイクロレンズアレイ」を取り上げ、OpticStudioでの設定する機能について説明しました。フライアイ光学系で使われるような比較的大きなサイズから、センサの受光量改善に使われるような微小構造のレンズアレイまで、様々な応用先があります。後者の場合、サイズによっては幾何光学ではシミュレーションが難しくなります。レンズの開口による回折の影響が無視できなくなるためです。
コメント