ブール CAD オブジェクト、ブール ネイティブ オブジェクト、複合レンズ オブジェクトと、オブジェクトの組み合わせツールの使用方法

OpticStudio は、他のノンシーケンシャル コンポーネント (NSC) オブジェクトおよび面から複雑なオブジェクトを作成する機能をサポートしています。

著者 Mark Nicholson & Sandrine Auriol

Introduction

ブール ネイティブ オブジェクト、ブール CAD オブジェクト、複合レンズ オブジェクトを使用して、ノンシーケンシャル モードの他のオブジェクトや面から複雑なオブジェクトを作成できます。

ブール オブジェクトはブール演算で体積オブジェクトを参照しますが、複合レンズ オブジェクトはノンシーケンシャル面を使用して、レンズの前後の形状を構成および結合します。どちらのオブジェクト タイプでも、ノンシーケンシャル コンポーネント エディタ上でその前の行に記述されたオブジェクトを参照します。

この記事では、ブール オブジェクトの使用方法と、各面で散乱と回折のプロパティを定義する方法について説明します。また、オブジェクト結合ツールを使用して 2 つのオブジェクトを結合し、得られたオブジェクトを CAD ファイル形式で保存する方法についても示します。

ブール ネイティブ オブジェクト

OpticStudio を起動し、ユーザー データ フォルダ {Zemax}¥Samples¥Non-sequential¥Geometry Creation 内の "Boolean Example 1 - basic operations.zmx" ファイルを開きます。このファイルはオブジェクト番号 1 と 2 に 2 つの球体オブジェクトと、オブジェクト番号 3 にあるブール ネイティブ オブジェクトで構成されています。ノンシーケンシャル コンポーネント エディタを右方向にスクロールして、ブール ネイティブ オブジェクトのプロパティを表示します。

 

NSCE

 

ブール ネイティブ オブジェクトには最大で 10 個の「親」オブジェクトを設定できますが、この例で使用するのは 2 つのオブジェクトのみです。ブール ネイティブ オブジェクトは、以下の任意の演算を実行できます :

 

+ : 2 つのオブジェクトを結合します (論理 A OR B)

- : 1 番目のオブジェクトから 2 番目のオブジェクトを引きます (論理 A AND NOT B)

& : 2 つのオブジェクトの共通部分を計算します (論理 A AND B)。

^ : 一方のオブジェクトのみおよび他方のオブジェクトのみに属する部分を取得し、両方のオブジェクトが重複する部分を除外します (論理 A XOR B)。

$ : 2 番目のオブジェクトから 1 番目のオブジェクトを引きます (論理 NOT A AND B)。

 

これらの演算を組み合わせて使用することもできます。実行するブール演算は、ブール オブジェクトのコメント フィールドに入力します :

 

Boolean object

 

つまり上記の演算では、オブジェクト A OR オブジェクト B に等しい体積が得られます。

 

Layout_1

 

上の図では、オブジェクト A と B が下部に表示され、ブール ネイティブ オブジェクト A+B がそのすぐ上に表示されています。親オブジェクトがパラメトリックなのでブール ネイティブ オブジェクトもパラメトリックです。どちらかの球の半径を変更すると、ブール ネイティブ オブジェクトも更新されます。親オブジェクトは任意のガラスで作成できます。親オブジェクトのガラスは無視され、ガラスまたは屈折率分布のプロパティが、ブール ネイティブ オブジェクトそのものに追加されるからです。

ブール ネイティブ オブジェクトの面のプロパティは、親から継承されます。球体オブジェクトはオブジェクトあたり 1 つのフェイスで構成されるので、これらのオブジェクトのブールである a+b は 2 つのフェイスで構成されます。

 

Object_3_face_0

 

どちらのフェイスも親オブジェクトから継承されます。

 

Both_faces_parent_objects

 

球体オブジェクト 1 の [コーティング/散乱] (Coat/Scatter) プロパティに移動して、 AR コーティングを追加します。ブール ネイティブ オブジェクト 3 の [コーティング/散乱] (Coat/Scatter) プロパティを確認します。ブール ネイティブ オブジェクトのフェイス 0 は、親オブジェクト 1 から面のプロパティを継承します。

 

Coat_scatter

 

親オブジェクトの形状によってブール ネイティブ オブジェクトの体積が定義され、親オブジェクトの [コーティング/散乱] (Coat/Scatter) プロパティによってブール ネイティブ オブジェクトの [コーティング/散乱] (Coat/Scatter) プロパティが定義されます。この関係においては、ブール オブジェクトに対する親オブジェクトの相対的な位置は独立しています。したがって、親オブジェクトは光学系の任意の場所に配置可能で、非表示にして無視することもできます。親オブジェクトをブール ネイティブ オブジェクトから遠ざけたり、非表示にして無視したりしない場合、光線はブール オブジェクトとその親オブジェクトの両方と相互作用しますが、通常この状態では目的の用途を実現できないので、親オブジェクトは移動するか無視することをお勧めします。

親オブジェクトを右クリックして、[オブジェクトを非表示にし無効にする] (Ignore and Hide Object) を選択できます。

 

Ignore_and_hide_object

 

これにより、[光線はこのオブジェクトを無視] (Rays Ignore Object) が [常時] に設定され、 [オブジェクトの非表示] (Do Not Draw Object) がチェックされた状態になります。

[光線はこのオブジェクトを無視] (Rays Ignore This Object) はオブジェクト プロパティの [タイプ] (Type) タブにあり、オブジェクトと光線が相互作用しないようにする場合に使用します。

 

Rays_Ignore_Object

 

[オブジェクトの非表示] (Do Not Draw Object) はオブジェクト プロパティの [描画] (Draw) タブにあり、オブジェクトを画面に描画しない場合に使用します。

 

Do_not_draw_object

 

ブール演算

OpticStudio は、すべてのブール演算のほか、ブール演算の組み合わせもサポートしています。基本的な演算は以下の図のとおりです。親オブジェクト A と B が各ウィンドウの下部に参考として描画しています。

 

   A OR B : 構文 A+B

 

Layout_2

 

          A AND B : 構文 A&B

 

Layout_3

 

AND と OR は混乱しやすい演算です。OR はどちらかのオブジェクトが占める体積を示し、AND は両方のオブジェクトが重複して占める体積を示すことに注意してください。

 

A XOR B : 構文 a^b

 

Layout_4

 

どちらかのオブジェクトに属し、両方が重複する分は除外した体積を求めます。この例では、ブール オブジェクトがガラス製の場合、 2 つの親オブジェクトが重複する領域にはガラスが存在しません。

 

A AND NOT B : 構文 a-b

 

Layout_5

 

これは事実上の減算で、オブジェクト A と B の重複部分が A から削除されます。

 

NOT A AND B : 構文 a$b

 

Layout_6

 

生成される体積は B AND NOT A、b-a と同じですが、わずかな違いがあります。演算で得られるブール オブジェクトは、先にリストされたオブジェクトと同じ座標系を持ちます。したがって、a $ bは、オブジェクトaと同じ空間内の点を基準にして配置されたオブジェクトを生成し、b-aは、オブジェクトbと同じ空間内の点を基準として配置された同じボリュームを生成します。

1 つのブール CAD オブジェクトまたはブール ネイティブ オブジェクトには、最大で 10 個のオブジェクトを親として設定できます。また、ブール オブジェクトを他のブール オブジェクトの親オブジェクトにすることもできます。これにより、きわめて複雑なオブジェクトを作成できます。唯一の制約は、エディタでは親オブジェクトをブール オブジェクトよりも前に定義する必要があり、すべての演算は、左から右の順に実行されます。

ここで、やや複雑なブール オブジェクトの例を示します。これは、ユーザー データ フォルダ {Zemax}¥Samples¥Non-sequential¥Geometry Creation にあるサンプル ファイル "Boolean Example 4- a lens mount.ZMX" にあるものです。

 

NSC_Shaded_model

 

このブール ネイティブ オブジェクトは文字列 a-b-c-d で作成できます。これにより、簡潔で完全にパラメトリックなレンズ マウント オブジェクトを容易に作成できます。

 

回折と散乱

親オブジェクトの回折と面の散乱プロパティも、ブール オブジェクトによって継承されます。たとえば、ユーザー データ フォルダ {Zemax}¥Samples¥Non-sequential¥Geometry Creation にあるファイル "Boolean Example 3- a diffractive scattering Boolean object.ZMX" を開きます。

今回の場合、親オブジェクトは回折グレーティング オブジェクトと、LETTERC.UDA サンプル ファイルに基づく押し出しオブジェクトです

 

NSC_Shaded_model_2

 

このファイルでは、これらのオブジェクトに [オブジェクトの非表示] (Do Not Draw This Object) が設定されています。この設定を変更しない限り、これらはレイアウトに表示されません。このブール オブジェクトはこれらのオブジェクトの重複 A AND B を取得することで形成されます。

 

NSC_Shaded_model_3

 

いま、回折オブジェクトは放物面形状であり、以下の面のプロパティがフェイス 1 に設定されます。

 

Coat_scatter_2

 

Diffraction

 

この面は反射面であり、ランバーシアン散乱関数により、40% の確率で光線が散乱すると設定されています。コーティングは定義されていない場合 OpticStudio では、無垢のアルミニウムの反射性があると想定されます。また、散乱しない光の 40% が -1 次に、40% が +1 次に、20% が 0 次方向に開設されるように設定されています。これらすべてのプロパティが、ブール オブジェクトに継承されます。

 

NSC_Shaded_model_4

 

光線は、ブール オブジェクトによって反射、回折、散乱します。押し出しオブジェクトで定義したアパチャーの外部に到達する光線は通常どおりに透過するので、ブール オブジェクトによって投影される C 字形の影を明確に判別できます。ブール オブジェクトの焦点領域を拡大すると、次のような表示になります。

 

Layout_7

 

​0 次の光線は、放物面の焦点で幾何学的に完璧な焦点を結びます (ただし、ミラーのアパチャーによる回折があることから、このスポット サイズが無限に小さくなることはありません。詳細については 「What is a Point Spread Function?」 を参照してください)。次数が +1 と -1 の光線は、回折グレーティングによって付加された位相によるコマ収差を示します。

 

ブール CAD オブジェクト

ブール CAD オブジェクトはブール ネイティブ オブジェクトとよく似ていますが、インポートした CAD 部品オブジェクトか NURBS による面表現を持つオブジェクトが親オブジェクトの場合にのみ使用します。ブール CAD オブジェクトが機能するためには、まず各親オブジェクトを NURBS による表現に変換します。つづいて、一連のトリミングと結合のブール演算を実行することで、最終的なオブジェクトが得られます。

ブール ネイティブ オブジェクトでは、各コンポーネント オブジェクトを NURBS による面表現に変換するのではなく、親オブジェクトのネイティブ形状を使用します。このため、ブール ネイティブ オブジェクトによる光線追跡の方が、ブール CAD オブジェクトよりも正確で、通常ははるかに高速です (最大で 10 倍高速になります)。したがって、OpticStudio のネイティブ オブジェクトのブール演算には、ブール ネイティブ オブジェクトを使用することをお勧めします。

ブール ネイティブ オブジェクトはブール CAD オブジェクトよりも新しいので、ブール CAD オブジェクトを使用した従来のファイルは、より効率的なブール ネイティブ オブジェクトへの変換が必要になることがあります。OpticStudio では、オブジェクト タイプをブール CAD からブール ネイティブに変更しても、親のオブジェクト番号が維持されるので、この更新で手動によるデータ再入力が必要になることはありません。

 

ブール ネイティブ オブジェクトとブール CAD オブジェクトを使用するべき場面とは

親オブジェクトの数が多い場合 :

ブール ネイティブ オブジェクトとブール CAD オブジェクトの使用はお勧めできません。代わりに、オブジェクトのネストティングを用いた構成を検討します。

光線追跡はブール ネイティブ オブジェクトの方が正確ですが、光線追跡速度は、ブール CAD オブジェクトによる光線追跡よりも速いとは限らない可能性があります。これは、光線がすべての親オブジェクトを追跡する必要があることは変わらないので、ブール形状の演算を考慮する必要があるからです。したがって、多数のオブジェクトを結合する必要がある場合は、ブール オブジェクトを使用するよりも、オブジェクトのネストティングをした方が高速な光線追跡になると考えられます。

 

自由曲面を使用して光学系を設計する場合 :

ブール ネイティブ オブジェクトの使用をお勧めします。

ブール CAD オブジェクトを使用すると、OpticStudio ネイティブ オブジェクトの高精度な面表現を NURBS による表現に変換したときに精度が低下する可能性があります。これは OpticStudio の制限事項ではなく、どのような面の NURBS 表現にも固有の性質です。詳細については 「How accurate is the CAD exchange?」 を参照してください。NURBS の使用による影響として、オブジェクトの保持に多くのメモリを必要とするので、ブール ネイティブ オブジェクトよりも光線追跡の速度が遅くなることが挙げられます。

 

親オブジェクトが CAD オブジェクトである場合 :

どちらのブール オブジェクトも使用できます。

親オブジェクトが OpticStudio のネイティブ オブジェクトではない場合、ブール ネイティブ オブジェクトを光線追跡する速度は、ブール CAD オブジェクトの場合より速くなりません。

一般的に、ネイティブ オブジェクトはブール オブジェクトよりも適切に実行されるので、可能であれば必ずネイティブ オブジェクトを使用するようにします。必要に応じて、ユーザー定義のオブジェクトを使用して独自のパラメトリック オブジェクトを記述することもできます。ただし、ブール ネイティブ オブジェクトとブール CAD オブジェクトには、一般的ではない形状を短時間で容易に定義できる柔軟性があります。

 

オブジェクトの結合ツール

ブール オブジェクトでは、同時に最大 10 個のオブジェクトに対する柔軟な演算が可能で、作成したオブジェクトの完全なパラメータ制御を維持できますが、必要なオブジェクトが 2 つのみでよく、オブジェクトのパラメータ制御が必要ない場合もあります。こうした場合には、オブジェクトの結合ツールが効果的です。

まず、2 つのオブジェクトを通常どおりに定義します。この例では、押し出しオブジェクトを使用します。このオブジェクトはOpticStudio の .UDA アパチャー ファイルを使用し、それを Z 方向に押し出されたものです。ユーザー データ フォルダ {Zemax}¥Samples¥Non-sequential¥Geometry Creation にあるサンプル ファイル "Boolean Example 2- a lens with a hexagonal edge.ZMX" を開きます。

 

NSC_Shaded_model_5

 

この六角レンズは、これら 2 つのオブジェクトのブール AND 演算で得られ、完全にパラメトリックで、親オブジェクトに適用されていたコーティング/散乱関数を備えています。

次に、このブール オブジェクトを削除して、親オブジェクトのみが存在するようにします。ノンシーケンシャル コンポーネント エディタで、[ツール] (Tools) バー → [オブジェクトの結合] (Combine Objects) をクリックします。

 

Combine_objects

 

表示されたダイアログで次のように入力します。

 

Combine_objects_tool

 

親オブジェクトが必要なくなった場合は、[元オブジェクトを新しく組み合わされたオブジェクトに置き換える] (Replace Objects With New Combined Object) をチェックすると簡潔なエディタになります。

また、オブジェクトをプレビューすると、正しいブール演算を選択したかどうかを確認できます。

 

NSC_Shaded_model_6

 

[OK] をクリックして新しいオブジェクトを作成します。2 つの親オブジェクトが、以下の CAD 設定で、[CAD パート : STEP/IGES/SAT] オブジェクトに置き換えられます。

 

CAD

 

複合レンズ オブジェクト

ブール オブジェクトとオブジェクト結合ツールでは体積 NSC オブジェクトに対するブール演算が可能ですが、複合レンズ オブジェクトでは、2 つの NSC 面から体積が作成されます。複合レンズ オブジェクトは、きわめて一般的なレンズ オブジェクトであり、生成されたオブジェクトに対する完全なパラメ―タ制御が維持されています。前後のフェイスに対してそれぞれ異なる面タイプとアパチャーをサポートしています。円形アパチャーと矩形アパチャーのいずれも使用できます。

複合レンズ オブジェクトは 2 つの親の面オブジェクトに基づいています。ここでは、非球面オブジェクトとトロイダル面オブジェクトの 2 つの面があるとします。

 

Aspheric_surface

 

Toroidal_surface

 

面オブジェクト 1 と面オブジェクト 2 に基づいて複合レンズ オブジェクトを定義できます。

 

Compound Lens object

 

つづいて、[矩形ですか?] (Is Rectangle?) パラメータを使用して、円形アパチャーか矩形アパチャーかどうかを定義できます。円形アパチャーでは、チップ ゾーン [前面クリア + チップ / 後面クリア + チップ] (Front Clear + Chip / Back Clear + Chip) と機械的平坦ゾーン [前面機械 / 後面機械] (Front Mech / Back Mech) も定義できます。たとえば、4 mm のクリア半径、5 mm のチップ半径、6 mm のエッジ半径を持つ円形アパチャーを定義できます。

 

Layout_8

 

ブール オブジェクトとは異なり、複合レンズ オブジェクトの [コーティング/散乱] (Coat/Scatter) プロパティは親オブジェクトから継承されません。

 

Coat_scatter_3

 

ほとんどすべての NSC 面オブジェクトは、複合レンズ オブジェクトの親オブジェクトとして使用できます。ご要望があれば、別の面を対象として追加できます。

KA-01386

この記事は役に立ちましたか?
11人中10人がこの記事が役に立ったと言っています

コメント

0件のコメント

サインインしてコメントを残してください。