モデリングで悪いところ、教えて!

モデルのパラメータを変えて、解析を実行してみたら“Chief ray cannot intersect 〜” や “Ray tracing errors 〜” などのエラーメッセージが出て、解析がストップしてしまったことはありませんか?

例えば こんなレンズの場合・・・

断面図は描画できたものの、何か解析を走らせようとすると、“Ray tracing error”というエラー発生!
これはつまり、“光線追跡エラー” のようです。

エラーメッセージを読むとわかるのですが、光線が最後まで追跡できず途中で計算が止まっています。
CODE V では、全画角の光線が像面まで問題なく到達しなくてはなりません。
特に、参照光線と呼ばれる光線が追跡エラーを起こしていると、正しい結果を得ることができません。
たとえ、CODE Vが勝手に計算してしまうことがあっても・・・です。

もし、このモデルをそのまま製品化したとしても、不良品となる可能性が少なくありません。
ということは、光学系モデルの形状を見直す必要があります。

このエラーは、モデルのパラメータを調整すれば回避できます。
では、具体的にどのあたりの設定を修正したらいいのでしょうか
光線追跡エラーが発生した原因はどの面にあるのでしょうか
これが今回、攻略すべき問題点です。

こんな時は、光線追跡のエラーを確認できる “REFCHECK.seq ”が便利です。
このマクロを実行するのは非常に簡単で、コマンドウィンドウで IN CV_MACRO:refcheck と入力して、Enter を押すだけです
これを実行すると以下のようなリストが出力されます。

例えば、“Field 1”の”Ray 2”が”Surface 7”で光線追跡が失敗しているということが、この出力から読み取れます。 他の光線も 7面で 光線追跡がストップしているようです。

攻略のポイント!

  • 7面のパラメータ設定におかしなところはありませんか?
  • さっき7面のパラメータを変更しませんでしたか?
  • そのほかにも、7面の前の面の設定に無理がありませんか?
上のモデルの場合は、第7面の前の面、絞り面は飛ばして第5面 の曲率半径を ちょっと大きくすると光線は通りました。 もう一度、REFCHECKマクロを実行すると、今度は第6面のクリアアパチャーで光線がブロックされているようです。 第6面、絞り面のアパチャーを大きくすると、参照光線は全て像面まで追跡されました。

ただ、それぞれの光線は像面まで到達していますが、まったく結像していませんでした。
各パラメータを見直してから最適化を行って、よりよい光学モデルを目指してください。

REFCHECKマクロについて、詳しくはFAQをご覧ください。
   ※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
   ユーザー登録がお済みでない方は、こちらから登録して下さい。

光線追跡エラーの原因をより詳しく知りたい場合、FAQをご覧ください。
   ※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
   ユーザー登録がお済みでない方は、こちらから登録して下さい。

マクロの中身をちょっと覗いてみませんか?

REFCHECKマクロの中身を詳しく見てみると、光学系の設計に役立つこともあります。
CODE V のインストールフォルダにある macroフォルダ内の refcheck.seq を開いてみてください。

まず、ヘッダー情報、GUIダイアログのための記述があります。
次に、各引数のチェックが行われます。

ここからがマクロのコア部分です。

全ての画角の全ての参照光線を[実光線追跡](RSI)コマンドで追跡しています。
ここでいわゆる FORループ と呼ばれる 繰り返し構造が使われています。

ただ、実は RSIオプションより実光線追跡関数 RAYRSI() のほうが内部計算的には高速なので、そちらを使って光線追跡しています。

次に、RAYRSI()関数から得られた結果から、どの面で光線追跡が失敗しているかをチェックしています。
このとき同時に、光線追跡の失敗の原因も確認しています。

最後に、それぞれの光線がちゃんと追跡できたのか、どこかでエラーを起こしているのか、を判断してテキスト出力しています。

マクロプログラミングの中身に興味がある方は「機能別セミナー」をお勧めします。

例えば、こんな使い方できませんか?

REFCHECKマクロを応用すれば、下のようなことができます。

  • それぞれの参照光線の経路を細かく見たい!
  • 追跡エラーが起こっている光線が、光学系のどのあたりを通過したがっているのか知りたい!
  • 参照光線が追跡エラーを起こしている。じゃあ、どの範囲までならちゃんと光線が通っているのか知りたい!
  • いろいろな光線を1本1本 実光線追跡をしたいけど、設定が面倒なので自動化したい!

CODE V のマクロ機能を利用すれば、「こんなことできないかなぁ」がほとんど実現できます。 やりたいことはあるけれど、「プログラミングしている時間がない」とか、「プログラムはどうも苦手で・・・」という方は「光学分野エンジニアリングサービス」をご利用ください。


その他の記事