CODE V > LECTURE > 知って得する!CODE Vマクロ > モデリングで悪いところ、教えて!
モデリングで悪いところ、教えて!
モデルのパラメータを変えて、解析を実行してみたら“Chief ray cannot intersect 〜” や “Ray tracing errors 〜” などのエラーメッセージが出て、解析がストップしてしまったことはありませんか?例えば こんなレンズの場合・・・

これはつまり、“光線追跡エラー” のようです。
エラーメッセージを読むとわかるのですが、光線が最後まで追跡できず途中で計算が止まっています。
CODE V では、全画角の光線が像面まで問題なく到達しなくてはなりません。
特に、参照光線と呼ばれる光線が追跡エラーを起こしていると、正しい結果を得ることができません。
たとえ、CODE Vが勝手に計算してしまうことがあっても・・・です。
ということは、光学系モデルの形状を見直す必要があります。
このエラーは、モデルのパラメータを調整すれば回避できます。
では、具体的にどのあたりの設定を修正したらいいのでしょうか。
光線追跡エラーが発生した原因はどの面にあるのでしょうか。
これが今回、攻略すべき問題点です。
このマクロを実行するのは非常に簡単で、コマンドウィンドウで IN CV_MACRO:refcheck と入力して、Enter を押すだけです。
これを実行すると以下のようなリストが出力されます。

攻略のポイント!
- 7面のパラメータ設定におかしなところはありませんか?
- さっき7面のパラメータを変更しませんでしたか?
- そのほかにも、7面の前の面の設定に無理がありませんか?

各パラメータを見直してから最適化を行って、よりよい光学モデルを目指してください。
REFCHECKマクロについて、詳しくはFAQをご覧ください。
※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
ユーザ登録がお済みでない方は、こちらから登録して下さい。
光線追跡エラーの原因をより詳しく知りたい場合、FAQをご覧ください。
※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
ユーザ登録がお済みでない方は、こちらから登録して下さい。
マクロの中身をちょっと覗いてみませんか?
REFCHECKマクロの中身を詳しく見てみると、光学系の設計に役立つこともあります。CODE V のインストールフォルダにある macroフォルダ内の refcheck.seq を開いてみてください。
まず、ヘッダー情報、GUIダイアログのための記述があります。
次に、各引数のチェックが行われます。

ここでいわゆる FORループ と呼ばれる 繰り返し構造が使われています。
ただ、実は RSIオプションより実光線追跡関数 RAYRSI() のほうが内部計算的には高速なので、そちらを使って光線追跡しています。
次に、RAYRSI()関数から得られた結果から、どの面で光線追跡が失敗しているかをチェックしています。
このとき同時に、光線追跡の失敗の原因も確認しています。
最後に、それぞれの光線がちゃんと追跡できたのか、どこかでエラーを起こしているのか、を判断してテキスト出力しています。
マクロプログラミングの中身に興味がある方は「アドバンスドセミナー」をお勧めします。
例えば、こんな使い方できませんか?
REFCHECKマクロを応用すれば、下のようなことができます。- それぞれの参照光線の経路を細かく見たい!
- 追跡エラーが起こっている光線が、光学系のどのあたりを通過したがっているのか知りたい!
- 参照光線が追跡エラーを起こしている。じゃあ、どの範囲までならちゃんと光線が通っているのか知りたい!
- いろいろな光線を1本1本 実光線追跡をしたいけど、設定が面倒なので自動化したい!





