如何在OpticStudio中創(chuàng)建多邊形物體
概述
在OpticStudio中,使用多邊形物體 (Polygon Object, POB) 是創(chuàng)建用戶自定義幾何體的常用方法之一。本文介紹了如何創(chuàng)建多邊形物體、定義物體表面以及如何在非序列編輯器中使用該物體。
介紹
多邊形物體是由多個三角形或矩形面構(gòu)成的三維空間幾何體,其中三角形或矩形面的頂點(diǎn)由一個ASCII文本文件定義。該文本文件包含有多行數(shù)據(jù),并且可以使用任意文本編輯器進(jìn)行編輯。其中每行數(shù)據(jù)以單個字母或符號為起始,數(shù)據(jù)跟隨在字母和符號之后。有關(guān)所有符號及其語法的詳細(xì)描述請參考幫助系統(tǒng)中的“Polygon Object”一節(jié)。 為了全面展示如何創(chuàng)建多邊形物體、定義多邊形物體的每個表面、將文件保存在哪里以及如何加載到OpticStudio中,我們將在下文中創(chuàng)建一個立方體來展示多邊形物體的功能。一個立方體需要定義6個表面和8個頂點(diǎn)。我們可以使用OpticStudio支持的三角形或矩形符號來連接各個頂點(diǎn)。 首先打開一個空白的文本文檔。在POB文件以中嘆號 (!) 為起始的行表示該行為備注行。在定義多邊形物體時使用備注行來描述該物體是十分有用的,它可以在之后使用時幫助您快速了解該文本文件創(chuàng)建了什么樣的物體。

讓我們先定義立方體的8個頂點(diǎn)。用來定義頂點(diǎn)的符號為:V。定義頂點(diǎn)的數(shù)據(jù)行必須以符號V起始,并在符號后定義頂點(diǎn)編號及X, Y, Z坐標(biāo): V number X Y Z 其中number用來講點(diǎn)編號,它將在之后用于構(gòu)建三角形或矩形面。對空間坐標(biāo)點(diǎn)進(jìn)行編號可以使我們每次使用該空間坐標(biāo)時無需輸入該點(diǎn)的坐標(biāo)值,這對于定義擁有許多頂點(diǎn)的多邊形物體來說是十分方便的。 多邊形物體頂點(diǎn)的XYZ坐標(biāo)是參考于局部原點(diǎn) (0, 0, 0) 的。需要注意的是多邊形物體的(0, 0, 0)坐標(biāo)在非序列編輯器中是全局位置。 因此,讓我們假設(shè)將立方體的原點(diǎn)設(shè)置為前表面的中心,并設(shè)置立方體的尺寸為10*10*10。此處的坐標(biāo)單位為當(dāng)前系統(tǒng)的鏡頭單位。如果當(dāng)前系統(tǒng)的鏡頭單位為毫米,則立方體的尺寸為10mm*10mm*10mm; 如果當(dāng)前系統(tǒng)的鏡頭單位為英寸,則立方體的尺寸為10inches*10inches*10inches。

如上圖所示,分別定義8個頂點(diǎn)的坐標(biāo)。頂點(diǎn)的空間位置關(guān)系如下圖所示:

需要注意的是我們還未連接任何頂點(diǎn)。上圖中的實(shí)線只是出于展示目的來幫助我們分辨立方體的外形和頂點(diǎn)的空間位置。 其中立方體前表面上的箭頭表示局部坐標(biāo)軸方向,它位于多邊形物體的原點(diǎn)。每個物體的局部坐標(biāo)軸都可以在對應(yīng)物體的物體屬性 (Object Properties) > 繪圖 (Draw) 中選中顯示局部坐標(biāo)軸 (Draw Local Axis) 來顯示:

上一節(jié)中我們定義了所有的頂點(diǎn)坐標(biāo),現(xiàn)在我們需要連接各個頂點(diǎn)組成矩形面來構(gòu)建立方體。定義矩形面的符號為:R。其中構(gòu)建矩形面需要四個頂點(diǎn)編號及兩個額外參數(shù): R vertex1 vertex2 vertex3 vertex4 isreflective face 頂點(diǎn)編號必須為整數(shù),并且是文本文件中已經(jīng)定義頂點(diǎn)的編號。其中編號的定義順序并不是任意的,編號的順序必須為所構(gòu)建矩形頂點(diǎn)的逆時針或順時針順序。如下圖中右側(cè)顯示的交叉順序是不支持的:

舉例來說,如下數(shù)據(jù)行將連接頂點(diǎn)1,2,3,4來定義立方體的前表面:
其中isreflective標(biāo)識可以為-1, 0, 1三個整數(shù)之一。其中標(biāo)識0表示透射,標(biāo)識-1表示吸收,標(biāo)識1表示反射。多邊形物體的每個表面都可以根據(jù)需要定義為反射、 透射和吸收。如果上例中isreflective標(biāo)識設(shè)為1,則所有到達(dá)立方體前表面的光線都將發(fā)生反射,其語法為:
多邊形物體的表面屬性也可以在物體屬性的膜層/散射標(biāo)簽欄中定義:

需要注意的是,在膜層/散射標(biāo)簽中定義的表面屬性將覆蓋POB文件中定義的表面屬性。也就是說,如果POB文件其中一個面設(shè)為反射,則可以在不打開編輯文本文件的情況下, 在膜層/散射標(biāo)簽中將該表面的表面屬性改為吸收。如果該選項(xiàng)選擇為“物體默認(rèn) (Object Default)”,則OpticStudio將使用POB文件中定義的表面屬性。 數(shù)據(jù)行中的face標(biāo)識用來定義該表面屬于哪個表面組。我們將在下文中詳細(xì)討論。 因此,為了完成立方體的構(gòu)建,我們需要定義所有6個矩形表面,其中每個表面的表面屬性為透射:

保存和加載POB文件
定義完的多邊形物體文件需要保存在Zemax根目錄下的Objects > Polygon Objects文件夾中。并且文件的擴(kuò)展名必須為.POB。我們將前文創(chuàng)建的POB文件保存為KBCUBE.POB文件。 當(dāng)我們想在OpticStudio非序列模式中使用該P(yáng)OB文件時,我們需要將物體的物體種類設(shè)為多邊形物體。在數(shù)據(jù)文件 (Data File) 下拉菜單中選擇KBCUBE.POB文件,如下所示:

打開非序列實(shí)體模型 (NSC Shaded Model) 視圖,我們可以看到前文中所創(chuàng)建的立方體模型:

對表面分組
目前我們定義的立方體只含一個表面分組。換句話說,當(dāng)我們需要定義立方體的膜層或表面散射屬性時只能同時對6個表面進(jìn)行定義。 打開物體屬性的膜層/散射標(biāo)簽,我們可以看到在表面下拉菜單中只有一個名為Face 0的分組,它表示立方體的所有表面。

同時,在物體編輯器 (Object Editor) 中選中Face 0表面組會看到立方體的所有表面都被選中并高亮顯示為橙色。

我們可以在POB文件中對不同表面進(jìn)行分組。如此一來,我們可以對不同表面組的表面定義不同的表面屬性。表面組的名稱和序號需要在POB文件的開頭進(jìn)行定義,其中定義符號為C。該定義的語法如下所示:
C facebumber “任意名稱”
其中facenumber為整數(shù),用來定義表面組的序號,該序號用于后續(xù)三角形或矩形表面構(gòu)建時進(jìn)行分組使用。表面組的名稱可以為任意便于區(qū)分的名稱。 在本例中,我們將定義前表面、后表面和4個側(cè)面為三個表面組。我們需要在定義頂點(diǎn)的數(shù)據(jù)行之前,定義表面組名稱,如下所示:

上文中當(dāng)我們定義矩形面時,數(shù)據(jù)行中包含有一個標(biāo)識用于定義表面組。此處,我們需要更改每個矩形面表面組的標(biāo)識序號。其中用于定義前表面的矩形, 表面組標(biāo)識為1;用于定義后表面的矩形,表面組標(biāo)識為2;用于定義側(cè)面的矩形,表面組標(biāo)識為0:

完成每個面的表面組序號設(shè)置后保存文本文件并重新加載該P(yáng)OB物體。我們可以看到表面下拉菜單中包含了三個表面分組:

這樣一來,我們可以單獨(dú)對Side Face分組的表面(POB文件中表面分組序號為0的表面)定義任意表面屬性。同樣的,當(dāng)選擇其他表面分組時(例如序號1,前表面),我們可以定義不同的表面屬性。 我們可以通過物體編輯器查看所選表面分組中包含的表面。其中選中的表面將高亮顯示為橙色:


注意事項(xiàng)
在使用多邊形物體時有以下幾點(diǎn)需要特別注意: 當(dāng)使用POB文件表示空間幾何體時,確保POB文件中定義的矩形/三角形表面閉合為一個封閉的體積(也可以使用多邊形物體在非序列編輯器中的額外數(shù)據(jù)“是實(shí)體? (Is Volume ?)”來定義封閉的空間幾何體)。 在定義矩形時,頂點(diǎn)的定義順序不能交叉。交叉會導(dǎo)致光線追跡產(chǎn)生錯誤。 多邊形物體中沒有三角形/矩形表面的數(shù)量上限。它是由計(jì)算機(jī)內(nèi)存的容量決定。其中每個三角形表面大約需要100比特的存儲空間。然而OpticStudio通常會在同一時間保多個透鏡數(shù)據(jù)的副本,因此OpticStudio存儲一個三角形表面的實(shí)際空間約為500比特。 在OpticStudio中內(nèi)置有一個示例宏程序可以用來生成不同類型的多邊形物體,且無需定義每個頂點(diǎn)。該宏程序名稱為Polygon.ZPL,它保存在Zemax根目錄下的Macros文件夾中。在使用時,宏程序需要用戶輸入物體的表面半徑(表面不一定為圓形)、表面的邊數(shù)、 多邊形物體的長度以及長度的分段數(shù)量。更多細(xì)節(jié)信息,請閱讀示例宏程序的語法。
在OpticStudio中使用多邊形物體是一種非常靈活的創(chuàng)建用戶自定義物體的方法。通過簡單的ASCII文本文件,您可以定義任意由頂點(diǎn)連成的三角形或矩形所組成的空間幾何體。在POB文件中可以對每個表面進(jìn)行分組, 每組中可以包括一個或多個表面。用戶可以根據(jù)分組,簡單快速的定義不同分組表面的表面屬性。
s