如何使用布林物件 (Boolean) 以及合併物件工具 (Combine Objects Tool)


如何使用布林物件 (Boolean) 以及合併物件工具 (Combine Objects Tool)

Author
Message
Zemax_Taiwan
Zemax_Taiwan
Forum Member
Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)

Group: Administrators / Zemax Staff
Posts: 214, Visits: 2.4K
Zemax OpticStudio在非序列模式下,支援體積物件的布林操作。這個功能允許使用者使用多個物件的相加減、聯集、交集等操作來定義出一個新物件。切割合併完成的物件,將可以對上面的每個不同的面,分別指定不同的光學性質。
這篇文章討論如何使用布林物件以及合併物件工具。
原文連結:How to Use the Boolean Object and the Combine Objects Tool
原文作者:Mark Nicholson
原文發布時間:April 3, 2006

布林物件
請在Zemax OpticStudio中開啟下面檔案 "\User\Documents\Zemax\Samples\Non-sequential\Geometry Creation\Boolean Example 1 - basic operations.zmx”。這個檔案包含了兩個球體物件,物件編號分別是1與2,然後物件編號3的地方還有一個布林物件。請把非序列元件編輯器的畫面向右捲動,以看到布林物件的參數:


布林物件總共可以選取10個 “母物件”,但在這個範例中,我們將只用到2個物件。下面是我們可以使用的布林操作的清單:
「+」:把兩個物件結合起來,相當於邏輯上的 “A OR B”。
「-」:前一個物件減去後一個物件,相當於邏輯上的 “A AND NOT B”。
「&」:計算兩個物件的交集,相當於邏輯上的 “A AND B”。
「^」:找出所有被兩個物件包含到的部分,但是扣除那些同時包含兩個物件的區域,相當於邏輯上的 “A XOR B”。
「$」:後一個物件減去前一個物件,相當於邏輯上的 “NOT A AND B”。
你也可以綜合使用這些布林操作,使用者必須把這些布林操作輸入在物林物件的 “Comment”欄位,如下:


如上操作後,你可以看到一個由 “A OR B” 邏輯構成的物件。
http://forum.zemax.com/Uploads/Images/b8200d6a-d8b3-47df-aa3a-9ba9.gif

上圖中,物件A與物件B顯示於圖中下方,而布林物件 “A+B” 則顯示於圖中上方。請注意如同母物件可以使用參數控制外型,布林物件同樣也可以,例如如果我們改變其中一個母物件的半徑,則布林物件也會隨之改變。母物件設定為什麼材質都沒有關係,在布林物件中將會忽略母物件的原始材質,布林物件將可以指定自己的材質。
布林物件的表面屬性則會從母物件繼承而來,球體物件只包含一個表面,因此布林物件 “A+B” 一共包含了兩個表面:
http://forum.zemax.com/Uploads/Images/adf00285-1d1b-4169-a19d-e6dc.gif

這兩個表面都是繼承自母物件的:
http://forum.zemax.com/Uploads/Images/1e163440-eff4-477b-aa4a-8166.gif

也就是說,如果物件1的球體上指定了AR (MgF2) 的鍍層,則布林物件的表面0 (face 0) 就會繼承這個屬性。
http://forum.zemax.com/Uploads/Images/69a53c50-f5a3-4620-ad0a-1a03.gif

請注意如果你不希望母物件能夠與光線互動的話,你可以在物件屬性編輯器中Type標籤下,勾選 “Rays Ignore This Object” 。而如果你不想在Layout中畫出母物件的話,你可以勾選物件屬定編輯器中Draw標籤下的 “Do Not Draw Object”。
http://forum.zemax.com/Uploads/Images/f4f54f91-9bc3-46f2-b7f1-14ef.gifhttp://forum.zemax.com/Uploads/Images/927fd8fc-2686-462e-8d1b-9c52.gif

布林操作
Zemax OpticStudio支援所有的布林操作,也支援綜合使用多個布林操作。以下是基本布林操作的示範,圖中下方是母物件A以及B,圖中上方則是布林操作的結果:

A OR B,語法為A+B
http://forum.zemax.com/Uploads/Images/620bef15-62b5-47c8-85f1-4e73.gif

A AND B,語法為A&B
http://forum.zemax.com/Uploads/Images/176a6a84-c6c7-4e4c-a9b2-a63a.gif

我們可以簡單的混合使用AND以及OR的組合。請記得OR代表兩個物件中任何一個物件佔有的空間都算,AND則代表兩個物件同時占有的空間才算。

A XOR B,語法為A^B
http://forum.zemax.com/Uploads/Images/a87d0b6f-dc61-49d4-a63e-bbc1.gif

這個操作的結果是 “任一物件,但非同時包含兩物件” 的空間。在這個範例中,如果這個物件的材質是玻璃,則在兩個球體交會的空間中將沒有玻璃,而是空心。

A AND NOT B,語法A-B
http://forum.zemax.com/Uploads/Images/7fea0938-f0fd-4534-a967-a534.gif

這等效於一個減法操作,在任何同時包含A物件與B物件的區域將會從A物件中被去除。

NOT A AND B,語法為A$B
http://forum.zemax.com/Uploads/Images/f272c9d9-d179-4baf-95da-d519.gif

這個布林操作的結果相當於B AND NOT A,也就是B-A,但這個差別非常重要,布林物件的座標系統會根據最先列出的物件來決定。因此A$B的結果雖然外型一樣,但是布林物件的座標將會以A的座標為基準,而B-A將會以B的座標為基準。
一個布林物件可以呼叫最多10個母物件,並且布林物件也可以做為其他布林物件的母物件被呼叫,這樣的設計給予使用者很大的彈性以設計各種複雜外型。需注意,被呼叫的母物件必須位於布林物件的前面,所有的布林操作將會依循從左到右的原則來進行。
下面的範例是一個較為複雜的布林物件,你可以在 Zemax資料夾中的 "\User\Documents\Zemax\Samples\Non-sequential\boolean\lens mount.zmx” 找到這個範例檔:


這個物件的布林操作為 “A-B-C-D”,這是一個簡單,但保留原始參數可調性的鏡架物件。

繞射與散射
母物件的繞射以及面散射的特性也會被布林物件繼承,使用者可以參考這個範例檔"\User\Documents\Zemax\Samples\Non-sequential\boolean\diffractive scattering Boolean object.zmx”。
在這個範例中,母物件是一個光柵繞的物件,以及一個套用孔徑檔案LETTERC.UDA的抽出物件 (Extruded object):


在範例中,這些物件的屬性設定中,勾選了 “Do Not Draw This Object” ,因此將不會在Layout中看到。布林物件被設定為計算兩個母物件的交集,也就是A AND B:
http://forum.zemax.com/Uploads/Images/b4a2c053-b37a-4ea8-9856-873.jpeg

現在繞射物件有一個拋物線的表面了,並且在下圖中可以看到Face 1上面設定了一些屬性:
http://forum.zemax.com/Uploads/Images/196541b4-fdb6-429d-9936-afec.gif
http://forum.zemax.com/Uploads/Images/a6b5d28d-b427-4515-a847-9673.gif

如上圖所示,這個表面被設定為反射的 (reflective) 以及40% 散射率的Lambertian散射。因為上面沒有指定鍍膜,因此Zemax OpticStudio會自動假設這個表面擁有純鋁的反射率。此外這個表面也設定了為散射光的 40% 需被繞射到-1階,40% 到+1階,以及20% 到0階。所有這些屬性都被布林物件繼承了:


光線被布林物件反射、繞射並且散射,那些落在孔徑之外的光線,則直接穿過空無一物的空間,我們可以看到一個字母C形狀的陰影被布林物件所投射出來。請看這個布林鏡子的焦點部分:
http://forum.zemax.com/Uploads/Images/f748d45c-97bb-450e-843a-9f34.gif

零階的繞射光完美的聚焦在拋物面的幾何焦點處 (實際上因為有限孔徑的關係,聚焦的光併於法真正是無限小,相關知識請參考Zemax Knowledge Base文章:What is a Point Spread Functions?) 。

其他布林物件的資訊
布林物件的運作方式是先把每個母物件轉換為NURBS形式表現,然後再套用一系列的布林切割、合併等步驟,得到最後的物件。這個過程有可能會喪失模型的準確性,這並不是因為Zemax OpticStudio在轉換能力上的限制,而是在用NURBS來表現任意面時本來就有的限制,Zemax OpticStudio的原生物件的精確性通常是比較高的。這個時候,我們可以試著調整布林物件中的Spline以及Tolerance參數設定,這些參數有機會能讓準確度提高。當使用者對於極高的準確有需求時,使用者可能需要小心驗證布林物件上的光線追跡可以準確到所需的精度。我們已經測試過敏感度高的非球面物件,並且證明可以得到非常精確的結果。
在大多數使用布林物件的情形中,spline與tolerance參數的預設設定都是非常足夠的,包含前述的拋物面鏡也是,但如果結構中包含兩個以上互相搭配且高度平衡的非球面時,使用者仍然需要小心謹慎。
其他使用NURBS的影響主要還包括程式必須占用更多記憶體來存放NURBS物件,以及追跡會變得比其他同樣功能但不須布林操作即可完成物件更慢。舉例來說,用球體物件以及柱狀物件加以布林操作出來的透鏡,速度以及記憶體使用量都比不上直接使用標準透鏡物件 (Standard Lens) 來的好。
內建物件永遠可以表現得比布林物件更好,並且在可以選用時就盡量選用。若有需要時,Zemax OpticStudio也允許建立使用者自定的參數化物件。然而,布林物件可以在定義非尋常的形狀時,更簡單、更快速,且更有彈性。

合併物件工具
布林物件允許最多10個物件同時使用布林操作,並且保持原本的原本物件完整的可控制參數。但在某些狀況下,我們只需要兩個物件,並且不需要維持母物件的參數可控性。這個時候,我們可以使用Combine Object Tool。
首先,我們一樣先定義兩個母物件。在這裡,我們使用抽出物件 (Extruded object) ,這個物件讀取Zemax OpticStudio的 .UDA 孔徑檔,然後沿著Z軸方向抽出 (extrude) 。請打開 “/Document/Zemax/Samples/Non-Sequential/Boolean/Boolean Hexagonal Lens.zmx”:


這個六角形透鏡是兩個物件加上布林操作 “AND” 的結果,它是完全可參數調整的,並且在母物件上有一個膜層/散設等特性。
現在請刪除布林物件,留下母物件。在非序列元件編輯器 (Non-Sequential Component Editor) 中,請點擊一下 “Tools > Combine Objects”:


如果您是使用OpticStudio版本的使用者,請參考下面的操作。
http://forum.zemax.com/Uploads/Images/e2bf5024-1848-446c-9e4e-5290.png

然後把下面對話框依照您想要的操作填好,然後點擊 “OK” :
http://forum.zemax.com/Uploads/Images/28274e6e-f90c-4700-abdd-2a0c.gif

請注意這兩個母物件現在被一個匯入物件 (Import object) 取代了,它的表面模式 (Face Mode) 是3,這表示這個表面是由Zemax OpticStudio所編輯的。


總結
布林物件允許最多達10個母物件用布林操作結合在一起,產生一個可參數化控制的物件。Combine Object Tool這個工具則允許使用者結合兩個物件並且輸出一個CAD格式的物件。

GO


Similar Topics


Login
Existing Account
Email Address:


Password:


Select a Forum....



































Zemax Users Forum


Search