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

概述

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


介紹

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

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

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

讓我們先定義立方體的8個(gè)頂點(diǎn)。用來(lái)定義頂點(diǎn)的符號(hào)為:V。定義頂點(diǎn)的數(shù)據(jù)行必須以符號(hào)V起始,并在符號(hào)后定義頂點(diǎn)編號(hào)及X, Y, Z坐標(biāo):

V number X Y Z

其中number用來(lái)講點(diǎn)編號(hào),它將在之后用于構(gòu)建三角形或矩形面。對(duì)空間坐標(biāo)點(diǎn)進(jìn)行編號(hào)可以使我們每次使用該空間坐標(biāo)時(shí)無(wú)需輸入該點(diǎn)的坐標(biāo)值,這對(duì)于定義擁有許多頂點(diǎn)的多邊形物體來(lái)說(shuō)是十分方便的。

多邊形物體頂點(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個(gè)頂點(diǎn)的坐標(biāo)。頂點(diǎn)的空間位置關(guān)系如下圖所示:

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

其中立方體前表面上的箭頭表示局部坐標(biāo)軸方向,它位于多邊形物體的原點(diǎn)。每個(gè)物體的局部坐標(biāo)軸都可以在對(duì)應(yīng)物體的物體屬性 (Object Properties) > 繪圖 (Draw) 中選中顯示局部坐標(biāo)軸 (Draw Local Axis) 來(lái)顯示:


連接頂點(diǎn)

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

R vertex1 vertex2 vertex3 vertex4 isreflective face

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

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

R 1 2 3 4 0 0

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

R 1 2 3 4 1 0

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

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

數(shù)據(jù)行中的face標(biāo)識(shí)用來(lái)定義該表面屬于哪個(gè)表面組。我們將在下文中詳細(xì)討論。

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


保存和加載POB文件

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

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

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


對(duì)表面分組

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

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

我們可以在POB文件中對(duì)不同表面進(jìn)行分組。如此一來(lái),我們可以對(duì)不同表面組的表面定義不同的表面屬性。表面組的名稱和序號(hào)需要在POB文件的開(kāi)頭進(jìn)行定義,其中定義符號(hào)為C。該定義的語(yǔ)法如下所示:

C facebumber “任意名稱”

其中facenumber為整數(shù),用來(lái)定義表面組的序號(hào),該序號(hào)用于后續(xù)三角形或矩形表面構(gòu)建時(shí)進(jìn)行分組使用。表面組的名稱可以為任意便于區(qū)分的名稱。

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

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

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

這樣一來(lái),我們可以單獨(dú)對(duì)Side Face分組的表面(POB文件中表面分組序號(hào)為0的表面)定義任意表面屬性。同樣的,當(dāng)選擇其他表面分組時(shí)(例如序號(hào)1,前表面),我們可以定義不同的表面屬性。

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


注意事項(xiàng)

在使用多邊形物體時(shí)有以下幾點(diǎn)需要特別注意:

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

·在定義矩形時(shí),頂點(diǎn)的定義順序不能交叉。交叉會(huì)導(dǎo)致光線追跡產(chǎn)生錯(cuò)誤。

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

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


小結(jié)

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