ここ最近、出張だのなんだのとバタバタしていたため、更新が滞ってしまいました…すみません。しかしその間、次は何をしようかと模索は続けており、未完成のエントリ−もいくつか作ってあります。どれもイマイチの出来なので、今のままでは公開する気にはなれずお蔵入りしている次第です。
とはいえ、これまでもそんな大した記事は書いていない…ですけど。
さて、これまではシーケンシャルのみを扱っていましたが、「ノンシーケンシャル(いわゆる照明系)の習得もしたい!」と考えてもいるので、こちらにも手を出していくことにします。
ZEMAXのノンシーケンシャルの学習についての、良い資料があればそれを使いたいのですが、残念ながら持ち合わせていない(良い文献等があれば誰か教えて下さい!)ので、地道にZEMAXに付属しているサンプルデータを読み解きながら、使い方を学んで行こうと思います。
30 60 90 プリズム
今回は、サンプルデータ・ノンシーケンシャル・プリズムのフォルダの一番上に表示されていた「30 60 90 prism」をテーマとしてピックアップしました。サンプルデータは、ZEMAXの大好きな?マイドキュメントの下に入っています。
*.ses *.zmx でも同じファイルが開く模様
サンプルデータを開いて表示されるウィンドウ各種
おなじみLDEに目を向けると、STO面の次のサーフェスタイプが「Non-sequential」となっています。この部分がノンシーケンシャルの要素を含んでいるようです。
ZEMAXのモードの選択は「シーケンシャル」と「ノンシーケンシャル」ではなくて、下図のような表記になっています。
「シーケンシャルかミックス」のモード
ノンシーケンシャルの要素の記述は「Non-sequential Component Editor」(以下:NSCエディタ)で行います。このサンプルデータのこれ以外は、BK7の凸レンズが1枚あるだけです。
早速、プリズム部分がどのように記述されているのか見て行きましょう。
Non-sequential Component Editor
NSCEが、シーケンシャルでの「Lens Date Editor」(LDE)のように、ノンシーケンシャルの記述の肝になる部分だと思われますが、ここの記述は1行のみ。
シンプルなNSCエディタ
「Poly Object」を指定し、中身は別ファイル「30_60_90.POB」を参照
このNSCエディタでは別途形状が定義されたファイルを読み込んでいるだけのようです。プリズム形状を構成しているのはここで指定されている「POBファイル」。さっそくコレをエクスプローラーで探して、開いてみましょう。
POBファイルは、ZEMAXお馴染みマイドキュメント下に
マイドキュメントの下、「ZEMAX / Objects / Polygon Objects」の中にありました。
今回の対象POBファイルをメモ帳で開いてみると
独特のルールに基づいて記述されている
さすがに、これは解読不能です。マニュアル片手に解読に挑みました。
ポリゴンオブジェクトの記述ルール
V:頂点(Vertex) No、XYZ座標値
R:四角形(Rectangle) 頂点のNo、面の属性
T:三角形(Triangle) 頂点のNo、面の属性
面属性(−1:吸収、1:反射、0:屈折)
これらの情報を元にファイル「30_60_90_prism」を順に解読していくと、
プリズムの頂点10個の座標値を入力し、それらの頂点で構成される各面を順番に規定しているようです。

このプリズムはこのような10の頂点で構成されていることが判明
両サイドの五角形の面は三角形と四角形を組み合わせて記述されています。マニュアルによると、多角形の頂点の上限数はコンピュータのメモリに依存するようです。このように3,4角形を合わせて表現するようです。

赤線の三角形と緑の四角形の組み合わせで五角形を表現
各面の属性をみると反射面はTOP面だけに設定されていることになります。
ここで光線図(レイアウト)をもう一度確認してみましょう。

屈折面属性の底面でも1回反射あり
天面は2回とも反射していますが、底面は1回反射の1回透過(屈折)です。屈折面属性では、臨界角の判定が行われて、適宜全反射が生じるよう計算されているのでしょうか?
今回学んだ「POBファイルの記述ルール」を実際にトライしてみるついでに、この辺りの屈折面の挙動について確認すべく、練習として簡単なデータを作成してみます。
プリズムといえば、コレ
小学高(中学?)の理科の教科書にも載っている「虹色を作る」プリズムを演習として入力してみましょう。
これです(ウィキペディアよりパブリックドメイン画像)
まず、POBファイルを作成してみます。各頂点の座標値の算出がなかなかめんどくさいのですが、CADで作図して頂点の座標を読み取るのが良いと思います。
頂点の数は6個、面は5面
このPOBファイルの作成が、「今回の演習のポイントになるかな」と思っていましたが、POBを読み込んで、LDEに構成を入力してみると、思ったように光線が上手く表示されません。
これは「port」が正しく設定出来ていなかったためで、「シーケンシャル」と「ノンシーケンシャル」への光線の受け渡しをする際に、「entrance port と exit port」をしっかり規定してやる必要があるということがマニュアルよりわかりました。
ノンシーケンシャル光線追跡 →(入り口:entrance port)→ノンシーケンシャル→(出口:exit port)→ノンシーケンシャルに戻る
といったフローで処理しているようです。まだこの辺りはなんとなくしか理解できていませんが、今は先に進めます。
なんとか、イメージ通りの入力が完成
波長は、定番の3波長「F、d、C」を使用しています。
適当に表示してみたスポットダイアグラム
分散による色のズレが、この図より確認できます。もっと虹色みたいな表示ができるとインパクトがあるのでしょうが、どうやればよいか分からず今はコレが精一杯です。
また、「屈折属性の面では、臨界角の判定をしているのか?」と気になった点については、このLDEのノンシーケンシャルオブジェクトの前にコーディネートブレークをはさみ、適当に角度を振ってみた結果、全反射に切り替わることが判りました。
屈折の限界付近
臨界角を超えて、全反射に
本日の成果まとめ
サンプルデータ「30 60 90 prism」を参考に、簡単なプリズムを用いた光学系を作成してみた結果、以下のことを学びました。
・シーケンシャル⇔ノンシーケンシャル のデータの受け渡しには適切な「port」の設定が必要
・屈折面属性では全反射が起こりうる