こんにちは。光学、光でのお困りごとがありましたか?
光ラーニングは、「光学」をテーマに様々な情報を発信する光源を目指しています。情報源はインターネットの公開情報と、筆者の多少の知識と経験です。 このページでは、OpticStudioのクセあり機能、レイエイミングのオプションの1つ「瞳シフト」を取り上げます。レイエイミングに失敗する場合、瞳シフトが解決のカギになる場合もあります。
結論
- 瞳シフトが必要になるのは、軸外し系で近軸入射瞳と実際の入射瞳(絞り面)の位置に大きな差があるときと、極端な広角レンズの時です。
- レイエイミングをオンにすると、瞳シフトの自動計算が同時に有効になり、その結果は自動計算を無効にしないと確認できない仕様になっています。
- 軸対称系(広角レンズ)の瞳シフトの自動計算はブラックボックスになっていて詳細は不明です。条件によってはレイエイミングのエラーの要因にもなるので、確認してみましょう。
このページの使い方
このページで参考にした技術記事(ナレッジベース)は、瞳シフトとその計算方法 です。この記事は、OpticStudioで広角レンズや軸外し系を設計するときに使用するレイエイミングのオプションのうち、瞳のシフトの自動計算と、マニュアルで設定する方法を紹介しています。
このページでは、瞳シフトの計算をもう少し深堀していくので、参考になれば幸いです。
OpticStudioは”あたりをつけて”光線を出射する
OpticStudioは指定された視野点から近軸入射瞳にめがけて光線を出射します。近軸入射瞳は光軸上にあります。
物体から出射した光線は絞りより前の光学系を通過したのち、実絞りを満たします。これはOpticStudioが、「近軸入射瞳が光学系の入口として妥当だよね」と「あたり」をつけているとも言えます。この「あたり」のことをヘルプファイルでは、「最初の推定(the first guess)」と呼びます。
シーケンシャルモードの光線の生成については、レイエイミングがオフの場合_レイエイミングの使い方 (1) を参照してください。
近軸入射瞳を「あたり」にすると、光線が実絞りをうまく満たせないとき必要なのがレイエイミングです。瞳シフトとは、入射瞳の「あたり」の位置を移動させることです。
瞳シフトが必要なケース
レイエイミングが必要なケースである「光線が実絞りを満たさない状況」は、さらに2段階に分けられます。
1段階目は、近軸入射瞳の近くを探索していれば、主光線が実絞りに到達する経路を発見できるが、実絞り全体をうまく満たせない状況です。主光線さえ入ってしまえば、瞳収差を考慮するレイエイミングの探索によって、実絞りを満たすようにマージナル光線までの光線を定義できます。
瞳収差については、瞳収差ってなに?_レイエイミングの使い方 (2) を参照してください。
2段階目は、近軸入射瞳の近くを探索しても主光線すら実絞りに到達できないような状況です。この場合、実絞りを光線が満たすとか以前の問題で、実絞りに到達できる経路すら見つけられず光線が生成できない状況です。顕著な軸外し系、180度を超えるような超広角レンズで発生します。
瞳シフトが必要なケースとは、2段階目の状況です。要するに「どこに向けて光線を出射すればよいか分からない状況」なのですが、この時表示されるエラーメッセージが「Cannot determine object coordinate (物体の座標を定義できません)」です。
言わんとすることは分からなくもないですが、ちょっと分かりにくいような気も。「絞り面に到達する光線が見つけられません」でも良いかもしれません。
ヘルプファイルのエラーメッセージの説明には、「物体面を出発して絞り面を満たす光線をOpticStudioで正しく見つけることができないことを意味するエラーメッセージ」とあります。
瞳シフトはレイエイミングのデフォルトで有効になる
レイエイミングをオンにすると、「瞳のシフトを自動的に計算する」オプションが自動的に有効になります。実際の入射瞳の位置が近軸入射瞳と違うことを前提に、OpticStudioが「あたり」の位置を自動的に調整するオプションです。
自動計算の結果は非表示
このオプションが有効になっている場合、OpticStudioが推定した絞りの位置は非表示になります。チェックを外すと、OpticStudioが推定した値が表示されて、さらに数値をマニュアルで入力できるようになります。
自動計算した結果は、グレーアウトでもいいので表示してくれてると機能理解の助けになるかもしれません。後述しますが、レイエイミングがエラーになった場合の検証に役立つ場合があります。
軸外し系の瞳シフト推定は近軸入射瞳と実絞りの位置ズレ
技術記事にあるとおり、瞳シフトとの自動計算では「近軸入射瞳位置と実絞り位置の差分」を計算します。軸外し系の時、実絞り面の位置はOpticStudio内の3次元空間で簡単に特定できるので、この自動計算は有効だと思います。
実際の入射瞳の位置は実際の絞りの位置とは異なりますが、瞳シフトは「あたり」の精度を上げるのが目的なので、入射瞳と絞りの位置のズレ程度であれば、探索アルゴリズムで吸収できる場合がほとんどです。
広角レンズに対する瞳シフトの自動計算は詳細不明
では、広角レンズの場合の瞳シフトは、どのように推定されるのでしょうか?ヘルプファイルには、「実際の入射瞳の位置と近軸入射瞳の位置の差を計算する」とありますが、これ以上の説明はありません。あまり複雑な処理が行われているとは思いませんが、詳細はブラックボックスです。
軸対称系の瞳シフトの自動計算値は最大視野で決まる
何かしらの方法で自動計算される瞳シフトですが、ユーザが確認できるのは、瞳シフトの自動計算をオフにした時に表示される1点のみです。
軸対称系の場合、瞳シフト量は最大視野で決まります。この検証は、視野の値を変える > 瞳シフトの自動計算にチェックを入れる > 瞳シフトの自動計算のチェックを外す を繰り返すことで行えます。
「Scale Pupil Shift Factors By Filed」オプションが存在することからも、OpticStudioのレイエイミングが保持する瞳シフト量は最大視野で決まると考えられます。
広角レンズのように視野に応じて瞳シフト量の大きさが変わる場合であっても、ひとつの値、もしくは視野でスケーリングした値が使われることになります。その妥当性については、何とも言えません。最初の推定にすぎないので、あまり重要視する必要はないのかもしれません。
瞳シフトの値が異常になる具体例
最後に、瞳シフトがおかしな値になって物体座標が定義できないケースを1つ共有します。
- 全視野が180度を超える広角レンズのデータ
- 物体距離を有限距離にする
- 物体面に曲率半径をいれて曲面にする
この状態でレイエイミングを有効にすると、経路の探索に失敗する場合があります。デフォルトで有効になっている瞳シフトの自動計算をオフにすると、Zが大きな値になっている可能性があります。これは、「あたり」が光学系のはるか前方 or 後方にあると推定されたことを意味しており、その周囲を探索しても実絞りに到達できる主光線を発見できませんです。
このような場合、瞳シフトのZの値をゼロにして、ひとまず「あたり」の位置を近軸入射瞳の位置に戻してみたり、符号はそのままに値を小さくしてみることで、レイエイミングのアルゴリズムが経路を発見してくれるようになるかもしれません。
まとめ
ここでは、Zemaxのホームページからアクセスできる公開記事、瞳シフトとその計算方法 を取り上げ、OpticStudioが瞳シフトを自動計算する方法を説明しました。また、レイエイミングが失敗するとき、瞳シフトの自動計算結果がひとつの確認対象になることを説明しました。
ヘルプファイルや公開情報からは、OpticStudioが瞳シフト量を自動計算する方法をきっちりと把握できず、説明としてはやや消化不良なものになってしまいました。レイエイミングの機能をもっと勉強する中で、理解を深めていきたいと思います。
コメント