
發布
注冊
/
登錄反向光線追跡的案例
非序列配置:如何使用光線追跡和場追跡的仿真設置
摘要
VirtualLab不僅能夠進行光線追跡,也可以執行場追跡。各種數值參數的規定可以對數值模擬進行控制。在VirtualLab中,這通常由精度因子的規范來處理。本示例闡述了如何使用提供的精度因子來控制VirtualLab中的光線追跡和場追蹤引擎,并重點放在非序列仿真的設置上。
仿真設置概覽
以下將更詳細地解釋模擬設置:
總精度(第二代場追跡)
1 采樣精度
2 傅里葉變換精度
非序列光線/場追跡
3 能量閾值
4 最大級
5 通道分辨率精度
6 僅顯示在3D視圖中入射探測器的路徑
1. 采樣精度
? 采樣精度是一個用于在追跡期間控制光場信息準確性的參數。
? 可以通過增加采樣精度因子來克服出現的意外人為現象。
2. 傅里葉變換精度
? 在VirtualLab中有幾個傅立葉變換算法。
? 根據場是位于其衍射區域還是幾何區域自動選擇。
? 小的傅里葉變換精確度(例如0.01)迫使全局使用幾何傅里葉變換,其特點在于比衍射變換快得多。
? 另外,每個探測器都可以單獨強制使用幾何傅里葉變換。
? 可以通過在相應檢測器的編輯對話框中激活“檢測器參數”選項卡下的“假設幾何場區域用于檢測器評估”復選框來選擇此項。
3. 能量閾值(非序列光線\光場追跡)
? 能量閾值是非序列追跡引擎的停止標準。
? 對于光能低于能量閾值的每一個 非序列光路,沿著路徑的光追跡將不做處理。
能量閾值:方案說明
? 遇到玻璃板時透射和反射光能的示例性說明。
? 在剩余能量達到可以忽略的水平之前,通常不需要很多反射。
? 在全反射的情況下,當然應該考慮許多相互作用。
? 下面顯示了能量閾值影響的一個例子。
展開 光學工程中聰明的技巧
圖11顯示了正向追跡和反向追跡的輻照度計算結果。
圖10 計算平面上的照度分布
在此有兩個實際問題:計算時間和準確性。在一個復雜的系統中,如果分析師嘗試獲得增量變化對設計的影響并且想要“實時”地這樣做,那么光線追跡時間將會特別多。反向光線可以使計算近乎迭代。此外,因為功率收斂的速度比均勻性要大,那么分析師幾乎可以確信結果的準確性,即使只有少數光線從每個微分區到達弧光源。
圖11 兩個輻照度的計算的對比:一個使用向前光線追跡而后一個使用反向光線追跡。后者需比前者少53x光線來達到相同的精度水平。
4. 計算自發熱輻射
在許多應用程序中,長波紅外引導頭的設計作為一個常見的例子,減少熱自輻射意味著減少噪聲,從而提高靈敏度。
自發熱輻射簡單描述:每個作為朗伯發射器的光學和機械結構輻射能量作為它的溫度和輻射率函數。這些釋放出的能量就是通過光線追跡進行模擬;當其通過系統傳播時,這些光線遵循幾何光學的定律。光線(因此他們所代表是熱能)聚集在FPA上。
根據這個計算,大多數軟件讓用戶設定對象的溫度和發射率。從統計學的角度來看,這是完全錯誤的做法!在大多數“真正的”系統中,FPA相對于光學和機械部件朝向非常小的立體角,所以當很多光線追跡時,如果有的話,那么很少到達FPA上(圖12)。結果是自發熱輻射的錯誤的估計。
有一個更有效的但不是最優的方法。直接的或間接的,大多數軟件允許用戶指定優選的輻射方向,在文獻中這些被稱為“重要性采用”。使用這種技術,用戶指定每個光學和機械組件的重要性方向。在光線追跡中,光線優先散射到這些方向,這樣可以非常有效地將光線導向FPA(圖13)。這極大的提高了統計,并產生了自發輻射的準確評估。
展開 VirtualLab Fusion:為光線追跡生成光線
在鏡頭系統的光線追跡中,光線起源于物點,并且通常針對光闌進行特定選擇,例如,主光線穿過光闌的中心。如果我們從物理光學的角度來看這條光線的選擇,我們會發現光線與球面波的波前正交,球面波的波前起始于物點。在VirtualLabFusion中,這種情況可以通過在光源平面中移動選擇球面場源模式來獲得。
在光線追跡中,如何以合理和統一的方式處理球形光源和高斯光源這兩種示例場景呢?如何產生光線?
我們的答案是一種基于物理光學并且光線光學也包含在其中的方式。用戶可以選擇“Include Diffraction-Induced Contribution to Ray Direction”選項。然后,在高斯光束或任何其他光源模式的情況下,計算應該追跡通過的系統的第一個表面上模式的發散度,包括其衍射效應。這給我們提供了生成光線所需的信息,光線的方向包括發散度。
總之,我們執行從光源平面到系統的第一表面的物理光學傳播,并在那里生成光線。通過適當選擇傅里葉變換,可以包含或不包含衍射。這表明,即使對于基本光線跟蹤,初始物理光學建模的步驟通常也是有必要的。VirtualLab Fusion通過選擇“Include Diffraction-Induced Contribution to Ray Direction”來實現這一需要。
最初的物理光學步驟為我們提供了另一個選擇。在光線產生的平面上,我們還知道場振幅以及每條光線線的相關能量。選擇“Unselect Rays with an Associated Energy Smaller Than x%”選項,能量小于光源平面中最大光線能量x%的光線在計算中將被丟棄。
展開 VirtualLab Fusion:為光線追跡生成光線
在鏡頭系統的光線追跡中,光線起源于物點,并且通常針對光闌進行特定選擇,例如,主光線穿過光闌的中心。如果我們從物理光學的角度來看這條光線的選擇,我們會發現光線與球面波的波前正交,球面波的波前起始于物點。在VirtualLabFusion中,這種情況可以通過在光源平面中移動選擇球面場源模式來獲得。
在光線追跡中,如何以合理和統一的方式處理球形光源和高斯光源這兩種示例場景呢?如何產生光線?
我們的答案是一種基于物理光學并且光線光學也包含在其中的方式。用戶可以選擇“Include Diffraction-Induced Contribution to Ray Direction”選項。然后,在高斯光束或任何其他光源模式的情況下,計算應該追跡通過的系統的第一個表面上模式的發散度,包括其衍射效應。這給我們提供了生成光線所需的信息,光線的方向包括發散度。
總之,我們執行從光源平面到系統的第一表面的物理光學傳播,并在那里生成光線。通過適當選擇傅里葉變換,可以包含或不包含衍射。這表明,即使對于基本光線跟蹤,初始物理光學建模的步驟通常也是有必要的。VirtualLab Fusion通過選擇“Include Diffraction-Induced Contribution to Ray Direction”來實現這一需要。
最初的物理光學步驟為我們提供了另一個選擇。在光線產生的平面上,我們還知道場振幅以及每條光線線的相關能量。選擇“Unselect Rays with an Associated Energy Smaller Than x%”選項,能量小于光源平面中最大光線能量x%的光線在計算中將被丟棄。
展開 
FRED:光線追跡的控制
下圖說明了散射光線的父源,因為入射光線在兩個粗糙的鏡面之間反射。藍光為0代,兩面鏡面反射;紅光為1代,M1處散射,M2處鏡面反射;綠光為2代,M1處散射,M2處散射。
光線代系的限制由“光線控制”對話框上的“代系截止等級 Ancestry level cutoff”選項控制。 對于所有“光線追跡”屬性,默認的鏡面反射的代系(截止等級)為2,默認的散射代系(截止等級)為1。此設置允許鏡面射線分裂兩次,并產生一代散射。 在一個實際案例的鏡面代系截止設置中,請考慮以下事實:當由外部光源(例如太陽)照射時,任何透鏡系統都可能在各個表面之間引起反射。 此過程通常稱為鬼像。 為了使這些反射到達像平面,必須在分配給鏡頭表面的光線跟蹤控件上允許偶數次反射(2、4、6,..)。 兩次反射稱為一階鬼像,四個反射稱為二階鬼像,依此類推。 另一個關于光線代系的案例來自于對法布里-珀羅效應的建模。盡管法布里-珀羅的透射率和反射率的表達是通過項的無限求和而得出的,但對光線分裂的限制必然導致累加的終止。 在對應于圖a-c的情況下,代系等級直接確定保留多少累加的項。 另一方面,對應于圖d中的情況,僅要求鏡面反射代系截止值保持其默認值2。當超過“相交計數截止值”或當光線通量低于“光線功率截止閾值”時,則累加將被終止。
展開 經過玻璃平板的非序列光線追跡
虛擬和混合現實>近眼顯示
任務/系統描述
亮點
非序列光場追跡,具有可控制的輸入/輸出正向及反向通道邏輯
說明:光源
說明:準直透鏡
說明:玻璃平板
說明:通道邏輯
說明:探測器
結果:3D光線追跡&點列圖
結果:3D光線追跡&點列圖
結果:3D光線追跡&點列圖
文件&技術信息
SPRAY 光譜光線追跡仿真軟件
SPRAY是一款適用于Windows 7/8/10 操作系統的軟件,用于進行頻率(或波長)分辨的光線追跡模擬仿真。您可以定義:
? 發射光線的光源
? 如鏡子、光散射器、吸收器或改變光線方向或吸收光線的表面等物體
? 屏幕、探測器和探測器陣列來收集關于設置中輻射分布的信息
SPRAY 組件
以下組件在當前版本中可用:
光源
? 點光源(各向同性發射)
? 體積光源(各向同性發射)
? 矩形光源(用戶自定義發射錐)
? 圓形光源(用戶自定義發射錐)
? 組合光源(多個元素發光)
探測器
? 矩形探測器
? 屏幕
? 線性檢測器陣列
? 球形探測器陣列
界面
界面將空間中的區域分開,例如定義從一種材料到另一種材料和/或從非散射區域到光散射體的過渡。界面被定義為層疊或邊界,具有用戶定義的反射率和透過率屬性(規則或漫反射)。
幾何物體
幾何物體可以被用戶定義的界面或理想的鏡子或吸收器覆蓋。以下這些形狀目前可用:
? 矩形
? 三角形
? 球體
? 部分球體
? 圓柱體
? 開柱面
? 錐
? 部分橢球
? 部分拋物面
? 球面聚光透鏡
? 球面色散透鏡
? 棱鏡
? 用戶自定義表面輪廓
? 多個子形狀的組合
SPRAY使用與SCOUT光譜仿真軟件相同的光學常數模型和數據,包括大型數據庫。在接口中使用的層疊定義也是完全相同的。在幾何物體之間,光線可以在吸收、散射或熒光介質中移動。
利用集成的Mie-程序計算多涂層球體的光散射和吸收特性。
聯系我們
展開 什么是光線追跡?
光線追跡(Ray Tracing)是一種計算方法,用于表示光線與物體相互作用時的行為方式。在光的波長遠小于與之相互作用的物體時,光線追跡可用于仿真光的行為。
光線追跡不僅可追蹤這些光線穿過不同光學及光子系統的路徑,而且還可仿真光線在與不同結構進行物理交互時的折射、反射或散射方式。光線可以通過許多類型的光學系統并與之相互作用,其中許多常見物體,如反射鏡、透鏡或棱鏡,所有這些相互作用都可以仿真。
然而,需要做出重要的區分。光線追跡涉及兩個方面的光的行為。其中,最常見的光線追跡應用領域,是電子游戲。光線追跡有助于游戲開發人員通過測定物體反射光線的方式,在游戲中提供逼真的視覺效果,從而實現著色器和全局照明(為3D場景添加逼真照明的算法)的實時開發。此外,其還可幫助開發人員提供表面紋理的渲染圖像。
視頻游戲是實時光線追跡技術,速度是關鍵,游戲引擎提供高級視覺效果以及高畫質圖像,盡管增加的算力會降低游戲的幀速率。游戲中的光線追跡以計算機圖形和渲染技術(光柵化等)為核心。
另一方面,在光學和光子學領域,光線追跡是光源與物理物體相互作用的方式,因此其考慮系統的材料屬性以及發生的物理相互作用。在光學和光子學領域,光線追跡的核心是準確定和光的行為核心,而不是作為視覺寫實的工具。本文重點介紹的是光線追跡在光學和光子組件設計中的應用。
光線追跡的工作原理?
光線追跡是一種計算方法,用于在光線穿過光學系統時對其進行建模。可將其用于設計透鏡、傳感器和其它光學組件,以便基于不同入射角的光與結構相互作用的方式來預測組件性能。光線在空氣中傳播并遇到另一種具有不同折射率(決定光在密度不同的兩種介質界面上彎曲程度的屬性)的材料時,會通過新介質折射,而有一部分則會反射。
展開 Ansys Zemax | 繪圖分辨率結果對光線追跡的影響
您會注意到,在這種情況下,光線追跡控制中沒有報錯:
然而,如果您比較這四個系統的光線追跡結果,您將會注意到,環形面分辨率越高,探測器上的總命中率就越高,但是根據上面的光線追跡結果來看,沒有光線被損耗。這里我們可以看出,只有具有自定義繪圖分辨率的探測器才會收集來自相應光源的所有光線:
比較四個系統的結果,可以清楚地看出環形面的繪制分辨率對光線追跡的影響:如果繪制分辨率不足以提供足夠的初步預測,光線追跡的結果是不準確的,且與預期不一致。
注意:上述行為很大程度上取決于您的具體系統,沒有關于何時需要提高繪圖分辨率的總體建議。此外OpticStudio沒有檢測這種潛在問題的方法,因此在這種情況下不會產生光線追跡錯誤。光線追跡結果需要由用戶來檢查(例如,通過系統3D視圖),以確保系統準確性。
展開 利用光線追跡分析高數值孔徑透鏡系統
10.總結
■VirtualLab Fusion 可利用新的光線追跡引擎對復雜光學系統進行分析。
■利用三維光線追跡我們可以對系統進行分析,并對位置等信息進行概覽。
■此外,系統可以直接利用光線追跡引擎進行分析。
■可用于評價點列圖,也可以附加其他探測器(如光斑尺寸探測器)。
FRED:光線追跡的控制
下圖說明了散射光線的父源,因為入射光線在兩個粗糙的鏡面之間反射。藍光為0代,兩面鏡面反射;紅光為1代,M1處散射,M2處鏡面反射;綠光為2代,M1處散射,M2處散射。
光線代系的限制由“光線控制”對話框上的“代系截止等級 Ancestry level cutoff”選項控制。對于所有“光線追跡”屬性,默認的鏡面反射的代系(截止等級)為2,默認的散射代系(截止等級)為1。此設置允許鏡面射線分裂兩次,并產生一代散射。
在一個實際案例的鏡面代系截止設置中,請考慮以下事實:當由外部光源(例如太陽)照射時,任何透鏡系統都可能在各個表面之間引起反射。此過程通常稱為鬼像。為了使這些反射到達像平面,必須在分配給鏡頭表面的光線跟蹤控件上允許偶數次反射(2、4、6,..)。兩次反射稱為一階鬼像,四個反射稱為二階鬼像,依此類推。
另一個關于光線代系的案例來自于對法布里-珀羅效應的建模。盡管法布里-珀羅的透射率和反射率的表達是通過項的無限求和而得出的,但對光線分裂的限制必然導致累加的終止。在對應于圖a-c的情況下,代系等級直接確定保留多少累加的項。另一方面,對應于圖d中的情況,僅要求鏡面反射代系截止值保持其默認值2。當超過“相交計數截止值”或當光線通量低于“光線功率截止閾值”時,則累加將被終止。
展開 
高數值孔徑準直系統的光線追跡分析
示例.0084(1.0)
關鍵詞:光線追跡,波前差,自定義評價函數,準直,RMS
1. 描述
■ 該案例中介紹了如何利用VirtualLab軟件中光線追跡引擎評價一個高數值孔徑準直透鏡系統的性能。
■ 顯示光線追跡分析結果的二維和三維結果。
■ 此外,利用一個可編程探測器對光線追跡結果中的自定義評價函數進行評價:
— 每條光線的波前差
— 準直光束波前差的均方根(RMS)值
2. 系統
文件名:UseCase.0084_CollimationSystem.lpd
3. 系統配置
■ 該系統包括一個用于照明準直透鏡系統的球面波。
■ 透鏡系統通過光學界面序列(OIS)定義。
■ 在透鏡系統后面5mm處放置一個虛擬屏和一個可編程探測器。
■ 可編程探測器可以定義光線和場追跡的自定義評價函數。
■ 在這個案例中,利用光線追跡信息(光程)計算波前差。
■目前這個探測器僅可用于準直光束。其功能將會很快的得到增強。
4. 編輯可編程探測器
5. 光線追跡系統分析器結果(3D)
6. 光線追跡結果(虛擬屏)
7. 光線追跡結果(波前差探測器)
8. 總結
■ 該案例說明,VirtualLab軟件可用于分析復雜光學系統。
■ 利用光線追跡可以進行三維和二維評價。
■ 可編程探測器允許用戶定義自定義的評價函數。這可以快速生成一個缺失的探測器防方程(非內置)。
■ 波前差和均方根探測將會在將來的版本中改進并作為標準探測器引入(內置)。
展開 [FRED] FRED:光線追跡的控制
下圖說明了散射光線的父源,因為入射光線在兩個粗糙的鏡面之間反射。藍光為0代,兩面鏡面反射;紅光為1代,M1處散射,M2處鏡面反射;綠光為2代,M1處散射,M2處散射。
光線代系的限制由“光線控制”對話框上的“代系截止等級 Ancestry level cutoff”選項控制。 對于所有“光線追跡”屬性,默認的鏡面反射的代系(截止等級)為2,默認的散射代系(截止等級)為1。此設置允許鏡面射線分裂兩次,并產生一代散射。
在一個實際案例的鏡面代系截止設置中,請考慮以下事實:當由外部光源(例如太陽)照射時,任何透鏡系統都可能在各個表面之間引起反射。 此過程通常稱為鬼像。 為了使這些反射到達像平面,必須在分配給鏡頭表面的光線跟蹤控件上允許偶數次反射(2、4、6,..)。 兩次反射稱為一階鬼像,四個反射稱為二階鬼像,依此類推。
另一個關于光線代系的案例來自于對法布里-珀羅效應的建模。盡管法布里-珀羅的透射率和反射率的表達是通過項的無限求和而得出的,但對光線分裂的限制必然導致累加的終止。 在對應于圖a-c的情況下,代系等級直接確定保留多少累加的項。 另一方面,對應于圖d中的情況,僅要求鏡面反射代系截止值保持其默認值2。當超過“相交計數截止值”或當光線通量低于“光線功率截止閾值”時,則累加將被終止。
展開 Ansys Zemax | 如何將光線追跡結果導出為IES格式
要生成代表該光源模型的光譜顏色文件,需要將1000萬束光線追跡到位于光源附近的矩形探測器(Detector Rectangle)物體上。在光線追跡期間,還應該選擇保存光線(Save Rays)選項。
保存文件名的語法應該是 “ #-Name.SDF ”,其中 # 表示保存光線的探測器物體的編號(在示例中為物體 #4)。物體編號不會作為文件名的一部分保存;對于上述示例,生成的文件名為Led_Model.SDF。
請注意,上述方法并不局限于保存到達探測器上的光線。可以為在非序列模型中光線到達的任何物體生成SDF文件,只需在保存光線的輸入中指定所需物體的編號作為文件名的第一部分。例如,如果希望將到達物體 #1上的光線保存到SDF文件中,那么在保存光線給出的輸入文件名將以 “1-” 開始。
輸入以上設置后,點擊清空探測器 (Clear Detectors),然后進行光線追跡,并將在探測器上獲得的結果保存到SDF文件中。將該文件放置在 {Zemax}\Objects\Sources\Source Files文件夾中(有關更多信息參閱幫助文件中“設置(Setup) 選項卡>系統組(System Group) > 配置選項(Project Preferences) >文件夾 (Folders)”參閱幫助文件)。
SDF文件可以通過文件光源(Source File) 物體用于任何OpticStudio非序列文件。關于文件光源物體的更多信息可以在幫助文件中通過點擊:設置(Setup)選項卡>編輯器組(Editors Group) >非序列元件編輯器 (Non-Sequential Component Editor) > 非序列光源(Non-Sequential Sources)找到。
展開 在 MATLAB 或 Python 中使用 ZOS-API 進行光線追跡的批次處理
這篇文章會說明如何在 MATLAB 或 Python 中以 Zemax OpticStudio 應用程式介面 (ZOS-API)處理光線數據庫(Ray Database, ZRD)檔案,過程中我們將使用ZRDLoader.dll。本文提供了在 Matlab 中批次處理序列光線
追跡(一般、歸一化、偏振或非偏振),以及在 Matlab 和 Python 中使用方法 ReadNextSegmentFull() 批次處理非序列 ZRD 檔案的范例。
(聯系我們獲取文章附件)
什么是 RayTrace.dll?
RayTrace.dll 結合了 ZRDLoader.dll 和 ReadNextSegmentFull,并在序列模式中與4個 IBatchRayTrace 介面共同運作。此外,RayTrace.dll 這個動態連結函式庫涵蓋了以下的介面,并且繼承了 ZOSAPI.Tools.RayTrace 的命名空間:
IRayTraceDirectPolData
(sequential):
在這個介面中,我們可以直接在 XYZ 座標中完成批次的偏振光線追跡,而這也和 DDE 光線追跡指令(模式3)十分相似。此外,該介面屬于 IBatchRayTrace 介面的一種。
IRayTraceDirectUnpolData
(sequential):
在這個介面中,我們可以在 XYZ 坐標中完成批次的非偏振光線追跡,而這與 DDE 光線追跡指令(模式1)相似。此外,該介面也同樣屬于 IBatchRayTrace 介面的一種。
展開