グローバルシンセシスで出てきたレンズタイプを確認したい!

現在設計されている光学系を最適化してもほとんど性能が上がらなくなってはいませんか?
性能は仕様を満たしているが、製造誤差に敏感だったり、製造コストが必要以上にかかる光学系となっていませんか?
その原因は光学系の構成にあるかもしれません。

光学系の構成、言い換えるとモデルのレンズタイプによっては、性能の向上にある程度の限界があることが知られています。
たとえば『トリプレットタイプは明るくするのには不向き』、『レトロフォーカスタイプはディストーションが大きい傾向がある』など、よく知られているシンプルな構成のものについては、ある程度予想ができます。
しかし光学系の構成が複雑になればなるほど、そういうわけにはいきません。

「今までの経験上こんな感じでうまくいくかも???」という勘だけで設計を進めていては、より良い光学系にはたどりつきにくいでしょう。
そこで皆様の経験をフルに活かすために「グローバルシンセシス(Global Synthesis、GS)」をお勧めします。
グローバルシンセシスとは現在の光学系とは異なるタイプのレンズを多数探索してくれる自動設計機能のアルゴリズムです。

グローバルシンセシスについて詳しくは『Global Synthesisを用いた設計解の生成』をご覧ください。
※このリンクを閲覧するには、ログインアカウントとパスワードが必要です。
   ユーザー登録がお済みでない方は、こちらから登録して下さい。

グローバルシンセシスで探索された多数のレンズタイプの中には、コンパクトなものや製造誤差に強いもの、性能が今以上に良くなる可能性のあるタイプが隠れていることがあります。
ここで探索された解はどれも設定した制約条件を満たしています。
ただし、そのレンズタイプの潜在能力、たとえば公差がゆるいなどはCODE Vには判別できません。
この「多くのレンズタイプの中からよりよいものを見つけ出す」ことに皆様の経験をお借りしたいのです。

ではよりよいレンズタイプをどのように探せばいいのでしょうか?

グローバルシンセシスは最大300タイプまで異なるレンズタイプを探索するとマニュアルでは説明されています。この無数のレンズタイプからお目当てのものを見つけ出すのは非常に困難です。
このレンズタイプを探しだす指標として評価関数があります。評価関数の値は光線が集光すればするほど小さくなります。
グローバルシンセシスを終了、もしくは中断すると、CODE Vは今まで探索したレンズタイプを評価関数でランキングします。
ここで注意してください。このランキングの1位、これが必ずしも一番いいレンズタイプとは限りません。
この評価関数は集光状態だけから計算されている値で、そのレンズタイプのコストや公差などの要素は考慮されていません。

さらにグローバルシンセシスの演算高速化のため、ある程度ざっくりとレンズタイプを探索しています。 極端な話、ランキング1位のレンズタイプとランキング10位のレンズタイプが通常の最適化をかけると性能が逆転してしまう場合もあります。

そのために皆様の経験を活かして、多くのレンズタイプの中からよりよいものを見つけ出さなければなりません。

では、この探索された多くのレンズタイプを簡単に確認して比較する方法はないのでしょうか?
これが今回、攻略すべきポイントです。

こんなときにはグローバルシンセシスで探索されたレンズタイプの断面図をプロットするマクロ“PLOT_GL.seq”が便利です。

攻略のポイント!

  • グローバルシンセシスで探索されたレンズタイプのうち評価関数の上限はいくらですか?
  • どんなレンズタイプが性能のよくなる可能性を秘めていそうですか?
  • どんなレンズタイプが設計する光学系の仕様にマッチしていますか?
まずはグローバルシンセシスを実行してください。
過去にグローバルシンセシスをした結果のレンズファイル群が作業フォルダに残っている場合には、その結果を利用することもできます。

グローバルシンセシスを終了すると、テキスト出力の最後に以下のようなランキングが表示されます。


※クリックで拡大します

この探索されたレンズタイプの中で評価関数の上限を適当に決めておきます。
今回の場合12程度でしょうか?
では評価関数が12未満のランキング33位までのレンズタイプを確認してみましょう。

メニューのツール>マクロマネージャからサンプルマクロのツリーの下の最適化のリストで
“C:\CODEV*****\macro\plot_gl.seq”を選択してください。
そして実行ボタンを押せばPLOT_GL設定画面が現れます。
(毎回この作業が面倒に感じる方は“お気に入りに追加”か“ツールバーに指定”、“メニューバーに追加”をすれば、次回からは簡単にこのマクロにアクセスできます。)

設定ダイアログのCore Lens nameにはレンズモデルのファイル名を入力してください。今回の場合telephot_gsです。
次にNumber of first solution toに1、Number of last solution toに300を指定してください。これでグローバルシンセシスで探索されたレンズタイプすべてが断面図プロットの候補となります。
Upper Limit of errorはプロットするレンズタイプの評価関数の上限です。今回の場合12です。
そのほかは特に変更する必要はありません。

OKをクリックしてください。

マクロの実行結果はファイル名がCore Lens nameのPLTファイルに保存されます。
次にこのPLTファイルを表示させます。
以下のコマンドを実行してください。(TOW DPL の後は出力されたPLTファイルの名前です)

TOW DPL "telephoto_gs.plt"

タブ付きウィンドウでPLOT_GLマクロで抽出されたグローバルシンセシスの結果が表示されます。


※クリックで拡大します

いかがですか?
こうあらためて見ると確かにいろいろなタイプのモデルがグローバルシンセシスから探索されていることがわかります。
これらのレンズタイプの中に今設計している光学系により適していそうなものはありますか?

例えば偏角が小さいと製造誤差による感度が大きくなりにくいです。極端な形状やありえない配置のレンズタイプは製造することができないので除外することができます。
通常はこの中から2、3タイプに絞ります。それらを平行してさらなる設計を行って、最終的に最も性能が良くなったものを採用するというプロセスが効率がよさそうです。

どうもお目当てのレンズタイプがない場合は、レンズタイプの中からかろうじて仕様に近いといえるタイプを使ってもう一度グローバルシンセシスをかけちゃいましょう!
グローバルシンセシスを一回ドンと長時間かけるより、グローバルシンセシスのスタートデータとなるレンズタイプを変化させながら何回もかけるとよりよい解が出る傾向があるということがわかっています。これはCODE Vの開発元、ORA社も光学系を設計するときに実践している方法です。

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

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

このマクロではグローバルシンセシスで探索されたレンズタイプを読みこんで、評価関数の値を確認した後プロットしています。

まず、ヘッダー情報とGUIダイアログのための記述があります。
次にCore lens nameの指定がなかった場合に必要なパラメータをコマンドラインから入力するよう促す処理があります。
そして各入力値を変数に格納しています。さらに使われていないバッファを3つ用意します。

ここで指定したCore lens nameのモデルでグローバルシンセシスが実行されたかどうか確認しています。もちろんなければマクロを終了します。

次に適切に断面図をプロットできるよう、各種値を調整しています。

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

Number of first solution toとNumber of last solution toで指定した範囲内でグローバルシンセシスの解であるレンズタイプが作業フォルダにあるかどうかひとつひとつチェックします。なければ、次のレンズタイプにスキップです。
レンズファイルがあれば読み込みます。

その読み込んだモデルの評価関数がUpper Limit of errorで指定した上限を超えていなければ断面図をプロットすることになります。
ここでこのプロットは一旦GRAコマンドを利用してファイルに出力しています。
このときプロットのタイトルやプロットする位置を調整し、さらに材質の設定されている面の番号を表示します。

実はこのプロットはテキストで定義されているため、ファイルの中身のテキストを「直接編集」することが出来ます。これを利用してプロットに材質のリストを追加します。
まずプロットファイルをバッファに読み込みます。
このプロットファイルのテキストの最後にプロットの終了を意味する2が記述されています。
その最後の2を削除して、材質のリストを表示する命令を追加していきます。
3から始まる命令でペンを移動し、8から始まる命令で面番号と材質名をプロットに追加していきます。
全ての材質をリストし終えたら命令2でプロットを終了します。

プロットファイルの描画コードの詳細は、CODE V リファレンスマニュアル日本語版を以下のキーワードで検索してご確認ください。
『ニュートラルプロットファイルフォーマット

このグローバルシンセシスの解であるレンズタイプのファイルを「確認」、「読み込み」、「プロット」、「材質リストの追加」を繰り返します。

そして最終的にひとつのプロットファイルとしてPLOT_GLマクロの結果が.PLTファイルに出力されます。

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

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

PLOT_GLマクロを応用すれば、下のようなことが出来ます。
  • グローバルシンセシスから得られたレンズタイプを評価関数のランキングにある順で確認したい!
  • 断面図以外にも近軸量なども一緒に確認したい!
  • 探索されたレンズタイプを全てひとつのウィンドウで確認したい!
  • レンズタイプの中でバックフォーカスが十分取れているモデルだけを確認したい!
CODE V のマクロ機能を利用すれば、「こんなことできないかなぁ」がほとんど実現できます。
やりたいことはあるけれど、「プログラミングしている時間がない」とか、「プログラムはどうも苦手で・・・」という方は、ぜひ「光学分野エンジニアリングサービス」をご活用ください。

その他の記事