如何在OpticStudio中創(chuàng)建多邊形物體

概述

在OpticStudio中,使用多邊形物體 (Polygon Object, POB) 是創(chuàng)建用戶自定義幾何體的常用方法之一。本文介紹了如何創(chuàng)建多邊形物體、定義物體表面以及如何在非序列編輯器中使用該物體。


介紹

多邊形物體是由多個三角形或矩形面構成的三維空間幾何體,其中三角形或矩形面的頂點由一個ASCII文本文件定義。該文本文件包含有多行數(shù)據(jù),并且可以使用任意文本編輯器進行編輯。其中每行數(shù)據(jù)以單個字母或符號為起始,數(shù)據(jù)跟隨在字母和符號之后。有關所有符號及其語法的詳細描述請參考幫助系統(tǒng)中的“Polygon Object”一節(jié)。

為了全面展示如何創(chuàng)建多邊形物體、定義多邊形物體的每個表面、將文件保存在哪里以及如何加載到OpticStudio中,我們將在下文中創(chuàng)建一個立方體來展示多邊形物體的功能。一個立方體需要定義6個表面和8個頂點。我們可以使用OpticStudio支持的三角形或矩形符號來連接各個頂點。

首先打開一個空白的文本文檔。在POB文件以中嘆號 (!) 為起始的行表示該行為備注行。在定義多邊形物體時使用備注行來描述該物體是十分有用的,它可以在之后使用時幫助您快速了解該文本文件創(chuàng)建了什么樣的物體。

讓我們先定義立方體的8個頂點。用來定義頂點的符號為:V。定義頂點的數(shù)據(jù)行必須以符號V起始,并在符號后定義頂點編號及X, Y, Z坐標:

V number X Y Z

其中number用來講點編號,它將在之后用于構建三角形或矩形面。對空間坐標點進行編號可以使我們每次使用該空間坐標時無需輸入該點的坐標值,這對于定義擁有許多頂點的多邊形物體來說是十分方便的。

多邊形物體頂點的XYZ坐標是參考于局部原點 (0, 0, 0) 的。需要注意的是多邊形物體的(0, 0, 0)坐標在非序列編輯器中是全局位置。

因此,讓我們假設將立方體的原點設置為前表面的中心,并設置立方體的尺寸為10*10*10。此處的坐標單位為當前系統(tǒng)的鏡頭單位。如果當前系統(tǒng)的鏡頭單位為毫米,則立方體的尺寸為10mm*10mm*10mm;如果當前系統(tǒng)的鏡頭單位為英寸,則立方體的尺寸為10inches*10inches*10inches。

如上圖所示,分別定義8個頂點的坐標。頂點的空間位置關系如下圖所示:

需要注意的是我們還未連接任何頂點。上圖中的實線只是出于展示目的來幫助我們分辨立方體的外形和頂點的空間位置。

其中立方體前表面上的箭頭表示局部坐標軸方向,它位于多邊形物體的原點。每個物體的局部坐標軸都可以在對應物體的物體屬性 (Object Properties) > 繪圖 (Draw) 中選中顯示局部坐標軸 (Draw Local Axis) 來顯示:


連接頂點

上一節(jié)中我們定義了所有的頂點坐標,現(xiàn)在我們需要連接各個頂點組成矩形面來構建立方體。定義矩形面的符號為:R。其中構建矩形面需要四個頂點編號及兩個額外參數(shù):

R vertex1 vertex2 vertex3 vertex4 isreflective face

頂點編號必須為整數(shù),并且是文本文件中已經(jīng)定義頂點的編號。其中編號的定義順序并不是任意的,編號的順序必須為所構建矩形頂點的逆時針或順時針順序。如下圖中右側顯示的交叉順序是不支持的:

舉例來說,如下數(shù)據(jù)行將連接頂點1,2,3,4來定義立方體的前表面:

R 1 2 3 4 0 0

其中isreflective標識可以為-1, 0, 1三個整數(shù)之一。其中標識0表示透射,標識-1表示吸收,標識1表示反射。多邊形物體的每個表面都可以根據(jù)需要定義為反射、透射和吸收。如果上例中isreflective標識設為1,則所有到達立方體前表面的光線都將發(fā)生反射,其語法為:

R 1 2 3 4 1 0

多邊形物體的表面屬性也可以在物體屬性的膜層/散射標簽欄中定義:

需要注意的是,在膜層/散射標簽中定義的表面屬性將覆蓋POB文件中定義的表面屬性。也就是說,如果POB文件其中一個面設為反射,則可以在不打開編輯文本文件的情況下,在膜層/散射標簽中將該表面的表面屬性改為吸收。如果該選項選擇為“物體默認 (Object Default)”,則OpticStudio將使用POB文件中定義的表面屬性。

數(shù)據(jù)行中的face標識用來定義該表面屬于哪個表面組。我們將在下文中詳細討論。

因此,為了完成立方體的構建,我們需要定義所有6個矩形表面,其中每個表面的表面屬性為透射:


保存和加載POB文件

定義完的多邊形物體文件需要保存在Zemax根目錄下的Objects > Polygon Objects文件夾中。并且文件的擴展名必須為.POB。我們將前文創(chuàng)建的POB文件保存為KBCUBE.POB文件。

當我們想在OpticStudio非序列模式中使用該POB文件時,我們需要將物體的物體種類設為多邊形物體。在數(shù)據(jù)文件 (Data File) 下拉菜單中選擇KBCUBE.POB文件,如下所示:

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


對表面分組

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

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

我們可以在POB文件中對不同表面進行分組。如此一來,我們可以對不同表面組的表面定義不同的表面屬性。表面組的名稱和序號需要在POB文件的開頭進行定義,其中定義符號為C。該定義的語法如下所示:

C facebumber “任意名稱”

其中facenumber為整數(shù),用來定義表面組的序號,該序號用于后續(xù)三角形或矩形表面構建時進行分組使用。表面組的名稱可以為任意便于區(qū)分的名稱。

在本例中,我們將定義前表面、后表面和4個側面為三個表面組。我們需要在定義頂點的數(shù)據(jù)行之前,定義表面組名稱,如下所示:

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

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

這樣一來,我們可以單獨對Side Face分組的表面(POB文件中表面分組序號為0的表面)定義任意表面屬性。同樣的,當選擇其他表面分組時(例如序號1,前表面),我們可以定義不同的表面屬性。

我們可以通過物體編輯器查看所選表面分組中包含的表面。其中選中的表面將高亮顯示為橙色:


注意事項

在使用多邊形物體時有以下幾點需要特別注意:

·當使用POB文件表示空間幾何體時,確保POB文件中定義的矩形/三角形表面閉合為一個封閉的體積(也可以使用多邊形物體在非序列編輯器中的額外數(shù)據(jù)“是實體? (Is Volume ?)”來定義封閉的空間幾何體)。

·在定義矩形時,頂點的定義順序不能交叉。交叉會導致光線追跡產(chǎn)生錯誤。

·多邊形物體中沒有三角形/矩形表面的數(shù)量上限。它是由計算機內(nèi)存的容量決定。其中每個三角形表面大約需要100比特的存儲空間。然而OpticStudio通常會在同一時間保多個透鏡數(shù)據(jù)的副本,因此OpticStudio存儲一個三角形表面的實際空間約為500比特。

在OpticStudio中內(nèi)置有一個示例宏程序可以用來生成不同類型的多邊形物體,且無需定義每個頂點。該宏程序名稱為Polygon.ZPL,它保存在Zemax根目錄下的Macros文件夾中。在使用時,宏程序需要用戶輸入物體的表面半徑(表面不一定為圓形)、表面的邊數(shù)、多邊形物體的長度以及長度的分段數(shù)量。更多細節(jié)信息,請閱讀示例宏程序的語法。


小結

在OpticStudio中使用多邊形物體是一種非常靈活的創(chuàng)建用戶自定義物體的方法。通過簡單的ASCII文本文件,您可以定義任意由頂點連成的三角形或矩形所組成的空間幾何體。在POB文件中可以對每個表面進行分組,每組中可以包括一個或多個表面。用戶可以根據(jù)分組,簡單快速的定義不同分組表面的表面屬性。