レンズごと回転させたい !

モデルの中の1枚のレンズをそのレンズごと傾けたいとき、どのような設定にしていますか?

例えば、このように真ん中のレンズだけ回転させる場合・・・

偏心タイプを“普通”にして“アルファ回転”で回転させると・・・

後ろの面全部傾きます。
これは“普通”タイプの偏心の特徴です。

では偏心タイプを他のものに変えたらどうでしょう。
“ディセンターアンドリターン”はその面だけ傾けることになります。

偏心タイプはいろいろ用意されていますが、どれを使ったらいいのかイマイチわかりません。

“普通”偏心は偏心光学系などのように光軸が途中で折れ曲がる光学系をモデリングするのに便利です。
“ディセンターアンドリターン”は面の中心軸と光軸が傾くような特殊な面や製造誤差をモデリングするのに有効です。
“ディセンターアンドベンド”は平面ミラーがモデルの途中にある場合使えます。

ただし、どの偏心タイプも1枚のレンズエレメントだけを回転してくれるものはありません。
レンズ1枚傾けるだけなのに“ディセンターアンドリターン”で前面を傾けて、後面を傾ける前のレンズ形状と同じになるように計算して“ディセンターアンドリターン”させるという手順が必要です。
実際やってみるとわかるのですが、これが意外と厄介なんです。
傾きが変わればまた計算し直しですし・・・

では、このレンズの回転を簡単に行いたい場合はどうしたらいいのでしょうか? もっと直感的に1枚のレンズだけを回転させることはできないのでしょうか? これが今回、攻略すべきポイントです。

そんな時は、グローバル偏心に変換するマクロ“MAKEGLBS.seq”が便利です。
これはメニューからツール>マクロマネージャから、サンプルマクロの下のユーティリティの中で
“C:\CODEV*****\macro\makeglbs.seq”を選択して実行ボタンを押せば下のような設定画面が現れます。

毎回この作業が面倒に感じる方は“お気に入りに追加”か“ツールバーに指定”、“メニューバーに追加”をすれば、次回からは簡単にこのマクロにアクセスできます。

早速レンズ1枚を回転させてみましょう。

攻略のポイント!

  • 回転するレンズの前の面は第何面ですか?
  • 回転するレンズの後ろの面は第何面ですか?
  • レンズの回転に関係しない、モデルの基準となる面は第何面ですか?
回転させたいレンズは3面から4面までのレンズエレメントだとします。
モデルの基準は第1面にします。

MAKEGLBSマクロの各パラメータを設定します。
Beginning surface of rangeとLast surface of rangeに5、つまり回転させたいレンズのすぐ後ろの面の番号を指定します。
Global reference surfaceには1、つまり基準面を指定します。
そしてOKをクリックするだけです。
コマンドではIN CV_MACRO:makeglbs 5 5 1となります。

これだけではモデルは何も変わっていないように見えます。
実際は3面から4面のレンズが5面以降の面から独立します。

たとえば、第3面を“普通”偏心で回転させてみてください。

真ん中のレンズだけ回転しました!
先ほどは第3面につられて回転していた5面以降の面が今回は回転していません。
もちろん回転したレンズは回転前の形状を崩していません。

光学系の一部のエレメントのみをティルトさせる方法が、FAQに紹介されています。
   ※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
   ユーザー登録がお済みでない方は、こちらから登録して下さい。

さて、突然ですが問題です。
例えばこんなちょっと複雑な光学系の場合・・・

左から入射した光が一旦プリズム内(第5面)で反射し、下のレンズに進んでいます。
その後ミラー面(第11面)で反射し、プリズムを通り抜けて像面に到達しています。

このような光学系モデルのプリズムだけを回転させたい場合は、どうしたらいいのでしょうか?

ここでネックになるのは、プリズムが4面、5面、6面、15面、16面で構成されていることです。
何も考えずに4面を偏心させると・・・どうなるかわかりません。
うまく回転できないことだけは確かです。

ではどうすればいいでしょう?
こんなときもMAKEGLBSマクロを使ってください。

まず15面を4面基準のグローバル偏心に変換します。
IN CV_MACRO:makeglbs 15 15 4

続いて7面を1面基準のグローバル偏心に変換します。
IN CV_MACRO:makeglbs 7 7 1

さらに17面も1面基準のグローバル偏心に変換します。
IN CV_MACRO:makeglbs 17 17 1

何をしたかわかりますよね?
プリズムだけを他の面から独立させました。
15面を4面基準にしているので、4面の偏心が15面以降にも利いてきます。
さらに7面と17面を1面基準にすることで、上下のレンズが4面の偏心から開放されています。

第4面を偏心させると簡単にプリズムだけ回転できます。
試しにプリズムを3度傾けて、ビネッティングを再設定すると・・・

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

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

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

ここからがマクロのコア部分です。
繰り返しますが、マクロは指定した範囲の面を指定した面を基準とする“グローバル座標”偏心に変換します。

まず、Global reference surfaceで指定した第2面のローカル座標系で、第5面のローカル座標原点のX/Y/Z座標位置とα/β/γ回転角度を調べています。

次に第2面を参照座標として第5面に“グローバル座標”偏心を設定しています。

同時に先ほど調べた第5面の第2面から見たずれ(X/Y/Z方向の平行移動とα/β/γ回転)を設定し、変換前の光学配置を保持します。

こうすることで第3面の“普通”偏心の影響を第4面で一旦閉じてしまいます。
つまり、第3面と第4面の一塊だけ他の面とは独立して偏心が利きます。

このような設定を施すと、第3面を普通偏心させても第4面までしか影響されず、第5面以降の配置は変化しません。
当然第2面を普通偏心させるとそれに併せて第5面以降は偏心します。

グローバル座標、グローバル偏心の概念について詳しく知りたい場合、FAQをご覧ください。
   ※FAQを閲覧するには、ログインアカウントとパスワードが必要です。
   ユーザー登録がお済みでない方は、こちらから登録して下さい。

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

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

MAKEGLBSマクロを応用すれば、下のようなことが出来ます。
  • いっそモデル全体を自動的にレンズ単位でばらばらにしたい!
  • 回転の基準軸を面とは関係なく自分で決めたい!
  • 往路と復路が別々に設定されているエレメントの公差を設定したい!
  • いろんなタイプの偏心を設定しすぎて、わけがわからん!すっきりさせたい!
CODE V のマクロ機能を利用すれば、「こんなことできないかなぁ」がほとんど実現できます。
やりたいことはあるけれど、「プログラミングしている時間がない」とか、「プログラムはどうも苦手で・・・」という方は、ぜひ「光学分野エンジニアリングサービス」をご活用ください。

その他の記事