本文介紹了OpticStudio 21.1中新的原生體積全像模擬功能,此功能考慮到全像光柵的物理特性,在序列模式下對其進行全面模擬和分析。同時,也示範使用現有DLL在非序列模式下展示相同的功能。這些分析對於設計虛擬實境(VR)和擴增實境(AR)的頭戴型顯示器(HMD)和抬頭顯示器(HUD)等系統非常重要。本文解釋了模型中使用的理論和參數,並介紹了5個系統範例。
序列模式的體積全像在OpticStudio的所有版本上都可以使用,但是繞射效率分析只有訂閱制才能使用。DLL是訂閱制旗艦版本的功能。
作者 Michael Cheng
附件下载
简介
體積全像在許多類型的光學系統中很受歡迎,例如:抬頭顯示器(HUD)、擴增實境(AR)和虛擬實境(VR)的頭戴式顯示器(HMD)。全像能夠將光線繞射到任何所需的角度,其波長和角度的選擇性使其能夠創造更輕、更緊密的光學系統。
OpticStudio長期以來一直支持理想全像的模擬。然而,為了準確地說明體積全像的特性,除了考慮繞射光線的傳播方向外,還必須考慮繞射效率、材料收縮或折射率變化等因素。考慮繞射效率使用戶能夠進行圖像模擬和綜合優化等高級分析。
表面反射光栅與體積全像光栅的比較
在介紹這個模型之前,我們先簡單解釋一下表面反射光柵(SRG)和體積全像光柵(VHG)的區別。這兩種光柵在光學系統中的作用幾乎是一樣的,但在製造和模擬方面卻有很大的不同。
圖 1. (a) 表面反射光柵 (b) 體積全像光柵
- 圖1(b)所示的VHG是通過在感光材料薄膜上曝光兩個或多個光束來製造。然後將薄膜進行化學或熱顯影:這就是光柵。光柵上的表面是光滑的,但光柵內部的折射率是正弦調變的。為了對VHG進行建模,需要使用高效的Kogelnik理論或嚴格耦合波分析(RCWA)等算法。
- 圖1(a)所示的SRG,可以通過幾種方法製造,如電子束寫入,光刻,納米壓印,或鑽石車削。與VHG不同,SRG沒有空間變化的折射率。相反,光柵的表面是由周期性的微結構組成的。為了對SRG進行建模,需要採用類似傅里葉模態法(也叫RCWA)的算法。
本文將介紹VHG的工具。
關於SRG的工具,請參見知識庫文章Simulating diffraction efficiency of surface-relief grating using the RCWA method。
耦合波理論
我們來回顧一下耦合波理論,它主要用於體積全像光柵模型。
考慮一個簡單的情況,即一個法向量n的全像平面被兩個波長相同的平面波照射,沿波向量k1和k2的方向傳播。平面波在穿過全像時,首先受到司乃耳定律的折射,在全像內有新的波向量k1’和k2’(圖2(a))。然後,光柵向量可由下式定義:
顯影後,當全像被重建平面波kp照亮時,繞射波kd,可通過解方程式確定:
其中kp和kd是重建波向量和全像感光材料內部的繞射波前(圖2(b))。注意光柵向量K可以從兩個反向方向選擇。方程式(2)的符號約定,假設K的方向選擇滿足K.kp>0。
圖 2. (a) 兩到建構光束折射到全像材料中 (b) 重建光束折射到體積全像中
現在,我們考慮在全像中,由正弦調變來表示折射率n和α,如方程式(3)。
其中n0為平均折射率,n1為折射率的振幅調製,K為光柵向量。
透射和反射全像的繞射波和穿透波的TE(橫向電場)的偏振電場可以用以下4個公式計算。注意,在這個理論中,能量被假設為只在入射波、零階(直射波)和一階繞射波之間交換。若要消除這個限制,需要嚴格耦合波分析理論。
對於TM(橫向磁場)極化,我們可以簡單地將κ替換為κTM,如下所示,仍然使用前面的公式。
在錐形繞射的情況下,入射光線不垂直於光柵,偏振特徵態定義如下:
圖3.全像在Kogelnik的耦合波理論中,全像被認為足夠厚,每條入射光線要不是直接以0階通過,不然就是1階繞射,對於反射和透射的全像都是如此。
假設和限制
Kogelnik的耦合波理論與其他理論相比具有優勢,可以準確預測體積相位光柵的零階和一階效率的響應。然而,當厚度較低或折射率調變 (modulation) 較大時,這種準確性可能會降低。因此,有必要討論Kogelnik理論的適用範圍,供使用者參考。
- 折射率調變: 與平均折射率相比,折射率調變不能太大。換句話說,n1/n << 1,這在大多數實際情況下是正確的。一個參考用的經驗法則是,對於反射全像,n1/n之比不應大於0.16,對於透射全像,n1/n之比不應大於0.06。[2]
- 厚度: 假設全像是厚的。經驗上,我們是確保以下條件來保證耦合波理論仍然適用:
- 多階繞射: 這與厚度的限制相同。對於厚的全像,輸入光線的能量將只轉移到直接穿透的0階波或繞射的+1階波上。對於薄的全像,其他繞射階數的效率可能不為零,如-1 -2 +2 -3 +3 ...。這些額外階數不在耦合波理論的考慮中。
- 多重光柵 (multiplex): 全像中只能同時存在一組光柵。Kogelnik的方法不允許多於一個光柵重疊在一個區域。
- 雙折射材料: 全像的材料被認為是均向性的。不允許使用雙折射材料。
請注意,這些限制可以通過使用不同的算法來消除。如果您的全像需要破除這些條件,請聯繫 Zemax 技術支援部門了解更多訊息。
膨脹 / 收縮
在本節中,我們將介紹如何考慮全像的膨脹和收縮。
在加工時,全像材料可能會改變其厚度。為了考慮厚度變化的影響,我們首先將光柵向量分成兩個分量,K∥和K⊥,其中K⊥為垂直表面法線,K∥與表面法線平行。如果厚度從t到t'發生變化,則可以通過修改K∥計算出新的光柵向量,如方程式(4)。
圖 4. 當全像材料收縮時,厚度從t 減少到 t'。
如何在序列模式下進行設置
I在本節中,我們將介紹如何在序列模式下設置全像。同時也討論了需要注意的事項。要在序列模式下添加體積全像,我們可以使用4個全像表面中的任何一個。Hologram 1、Hologram 2、環形Toroidal Hologram、Optically Fabricated Hologram。各個曲面的體積全像參數的完整細節請參見OpticStudio幫助手冊。在本範例中,我們將使用 Hologram 2 曲面,其參數如下所示。
圖 5. 鏡頭數據編輯器中的Hologram 2 表面參數
在這些參數中,Construct X1、Y1、Z1、X2、Y2、Z2和Construct Wave控制了建構光束的位置和波長。有關這7個參數的更多訊息,請查閱知識庫文章“如何在OpticStudio中建模全息图”.
其他參數的含義如下。
- Diffract order: 這個參數只有當表面是一個透射全像時才有效。當它為0時,我們追跡直接穿透的0階,當它為1時,我們追跡繞射的1階。請參閱 "如何在OpticStudio中建模全息图" 來了解如何區分透射和反射全像。請注意,在非序列模式的繞射DLL中沒有這個參數,因為我們同時追跡0階和1階 order。
- Volume Hologram: 定義面型是體積還是薄全像。當等於 0 時為 False,如果等於任何非零整數則為 True。這裡我們將它設為 1,因為我們要模擬的是體積全像。
- Hologram Thickness: 這是全像材料的厚度。請注意,這個厚度是虛擬的,只用於計算繞射效率。在光線追踪過程中,光線只能看到一個無限薄的表面,就像其他繞射表面一樣。
- n1 & n2: 兩個參數是建構光束進入全像之前所處材料的折射率。n1代表建構光束1,n2代表建構光束2。請查看下面的章節以獲得更多關於這兩個參數的說明。
- n: 全像材料的平均折射率。這與上面Kogelnik文獻中描述的 "n0" 相同。
- dn: 折射率的調變。這與Kogelnik文獻中描述的 "n1" 相同。
- Shrinkage: 顯影後全像的厚度變化。如果它是 0(預設值),則沒有收縮。如果不是0,則代表對厚度的縮放值。例如,0.98表示收縮率為2%。
- Index Shift: 全像的平均折射率在顯影後的變化。
- Consider Fresnel?: 如果設置為1,則考慮菲涅爾損失。將此設置為0則關閉對菲涅爾損失的考慮。如果用戶想用自己的代碼來驗證計算結果,這很有用。
注意當材料是MIRROR時,你應該在體積全像表面增加一個鍍膜I.0,當材料不是MIRROR時,應該增加一個鍍膜I.99999999(八個9)。全像表面假設沒有鍍膜,模型中內部考慮了菲涅爾損失的影響。
圖 6. 鏡頭數據編輯器中的材料和鍍膜參數。
如何在非序列模式下進行設置
在本節中,我們將介紹如何在非序列模式下設置全像。同時也會討論需要注意的事項。
要在非序列模式中添加一個體積全像。我們可以使用繞射光柵(Diffraction Grating)或User Defined Object 並選擇 DiffractionGrating.dll。目前此DLL不支持其他繞射對象,其假設繞射面在XY平面。
當全像膠片的形狀為圓形時使用繞射光柵,當全像膠片的形狀為矩形時使用User Defined Object 加上DiffractionGrating.dll。如果全像膜的形狀既不是圓形也不是矩形,則可以使用對象Boolean Native或Boolean CAD組合,再加上物件Extruded,就可以構建任意所需的形狀。
在Object Properties...Diffraction中,我們添加了DLL hologram_kogelnik.dll。每個參數的含義與序列模式相同。反射部分和穿透部分的參數總是相同的。對於這個 DLL,我們必須將 Start Order 設置為 0,Stop Order 設置為 1,理由在前面理論假設部分有說明。
還有一個參數 "Ig. Geo.Err.",只有在非序列模式下才會顯示。如果這個參數被設置為非零,當繞射光束不存在時,DLL將不會返回幾何錯誤。當光線在遠離布拉格的條件下擊中全像時,可能會發生這種情況。
請注意 " Ig. Geo.Err."這個參數是針對非序列DLL的。如果這個參數設置為1,當DLL返回任何幾何錯誤時,DLL將顯示更多的訊息。這對測試系統很有用,可以知道為什麼會發生幾何錯誤。該訊息只對DLL檢測到的第一個幾何錯誤顯示一次。如果要對任何進一步的幾何錯誤顯示更多信息,請將此參數設置為0,然後再設置為1。
圖 7. 使用者自訂物件的繞射設定。
當使用這個全像DLL,繞射面(Face 1)上的鍍膜應該始終為None。
圖 8. 使用者自訂物件的鍍膜設定。
必須勾選 “Split NSC Rays”,這樣繞射DLL才會執行。
圖 9. 在光線追跡和NSC3D布局圖中勾選“Split NSC Rays”。
如前面所述,全像總是被認為是無限薄的。光線和全像之間的所有相互作用只發生在面1,也就是繞射面,並由它來處理。
圖 10: 布局中所看到的全像。
提示:您可以編寫一個ZPL來填充MCE中的所有參數,並在Reflect和Transmit之間取值,附件中提供了ZPL的範例。
圖 11: ZPL 提取參數到多重結構編輯器。
常見問題
在本節中,我們將討論一些常見問題。
關於全像兩邊環境的折射率
當全像外的折射率改變時,全像的行為是不同的。例如,在下圖中(圖12),我們在左邊和右邊有完全相同的全像片,但可以看到它們向不同方向繞射光線。左邊的全像片是漂浮在空氣中的,而右手邊的全像片是貼在玻璃上的。可以看到,在兩種不同情況下,光線會繞射到不同的角度。因此,檢查全像兩邊的材料是否設置正確是很重要的事。
圖 12. 空氣和玻璃中的全像片。
關於參數n1和n2
參數 n1 和 n2 代表全像外材料的折射率,n1是建構光1看到的折射率,n2是建構光2看到的折射率。如果在建構階段,兩道建構光束來自不同側,那麼 n1 和 n2 可能會有所不同,如下圖所示。
圖 13. 兩道建構光束來自不同側。
另一方面,在建構階段,如果兩道建構光束來自同一側,那麼 n1 將與 n2 相同,如下圖所示。
圖 14. 兩道建構光束來自同側
如果您不確定 "建構光束" 的定義,請參見 "如何在OpticStudio中建模全息图" 了解更多信息。
請注意,如果 n1 和 n2 設置不正確,全像的行為將不正確。這跟我們在現實世界中如何建構全像有關。例如,在錄製全像的時候,我們可能會在全像的一邊放上一個棱鏡,然後在回放的時候把棱鏡去掉,如下圖所示。在這種情況下,n1 和 n2 應設置為棱鏡和波導的折射率。
圖 15. 建構和回放過程。
如果全像來自供應商怎麼辦?
有時候我們並不是真的自己製作全像,而是從供應商那裡購買的,所以我們可能並不了解它的所有細節。在這種情況下,我們可以用給定的規格建立一個假的建構系統。請看 "非序列範例3" 的例子。
關於繞射階數
在這裡的範例中,我們總是只有0階或1階繞射。
根據Kogelnik的理論,當一個波入射到全像光柵上時,假定只有兩個重要的出射光波存在。它們是直接通過的穿透波和繞射波。在OpticStudio的內建全像和實驗DLL中,我們總是將直接通過的波視為0階,而將繞射波視為1階。
因此,在非序列系統設置中,Start Order和Stop Order應該始終為0和1。不過其實我們也可以可以設置Start Order = Stop Order = 0或Start Order = Stop Order = 1。在這種情況下,意味著我們在模擬中有意忽略1階或0階。
序列模式範例 1
在這個範例中,我們演示了如何快速檢查全像上不同入射角的繞射效率。首先,我們打開附件中的native_vhg_kog_seq_example1.zar。在這個文件中,設計了一個全像,將45度的入射準直光束繞射和聚焦到遠處。
圖 16. 布局途中的全像範例。
建構系統的參數設置如下
圖 17. 鏡頭數據編輯器中的全像建構參數。
這意味著建構系統如下圖所示。請注意,我們是如何將光源1設置在非常遠的點(實際上是無窮遠)來模擬準直光束的。
圖 18. 系統的初始設置。
Hologram 2面假設一個建構光束收斂到一個建構點(光束2),另一個建構光束從另一個建構點(光束1)發散。然而,由於建構系統的互易性,這與光束1為收斂光源,光束2為發散光源的情況是等效的。在這種情況下,我們可以畫成如下圖。
圖 19. 以相反方向建立的同一系統。
如下圖所示,STOP設置在全像表面之前,厚度為零。這樣一來,我們就可以確保主光線總是擊中全像的中心。
圖 20. 鏡頭數據編輯器中的STOP位置。
在範例文件中,有一個效率與角度的對比圖,我們使用Kogelnik方法計算了與主光線入射角相關的繞射效率。在The Analyze Tab…Polarization and Surface Physics…Diffraction Efficiency…Efficiency vs. Angle 可以找到。設置如下圖所示。
圖 21. 效率與角度對比圖設定
請注意,入射光現的偏振狀態是在System Explorer...Polarization中定義的。 在這個檔案中,我們設置 (Jx, Jy) = (1,0) 為TE偏振。
圖 22. 系統資源管理器下的偏振設置。
下圖顯示這一個分析工具的結果:
圖 23. 在效率與角度圖中,y軸代表繞射效率,x軸代表主光線入射角。
序列模式範例 2
我們來看一個更複雜的波導設計。首先,打開附件中的 native_vhg_kog_seq_example2.zar。在“Augmented Reality (AR) by hologram”中介紹了系統的設計方式。在這裡,我們主要分析考慮繞射效率與新功能的效果。
在這個文件中,建構光束1設置在一個非常遠的點(0,-1E8,-1.35E8)。這意味著它是一個沿向量(0,-0.6,-0.8)方向傳播的準直光束。建構光束2設置為(0,18.66,-45.12),這意味著它是一個匯聚光束,匯聚到點(0,18.66,-45.12)。
圖 24. 鏡頭數據編輯器和佈局圖中的系統初始設置。
兩個建構光束的波長為0.55 µm。 在建構過程中,全像兩側的材料都是壓克力,因此我們將n1 = n2 = 1.493581(壓克力在波長0.55 µm時的折射率)。
圖 25. 鏡頭數據編輯器中全像的參數 。
此檔案中有兩個圖像模擬分析。 它們具有相同的設置,但其中一個已勾選“使用偏振 (Use Polarization)”,而另一個未勾選。
圖 26. 圖像模擬中的設置。
為了查看考慮全像繞射效率的效果,必須勾選“使用偏振”。我們可以在以下圖像中清楚地看到效果。 勾選“使用偏振”時,模擬圖像的頂部和底部邊緣較暗。
圖 27. 圖像模擬 analysis。
非序列模式範例 1
本範例與序列範例1類似,只是我們在非序列模式下分析。系統保存在附件vhg_kog_nsc_example1.zar中。在這個檔案中,全像是由一個User Defined Object 讀取 DiffractionGrating.DLL設置的。這個用戶定義物件DLL允許其面1為繞射面。
設置如下。注意,我们應該将起始階數設置为0,停止階數設置为1,因为我們使用的理論只考慮两個耦合波。
圖 28. 用戶定義物件的繞射設置。
為了計算繞射效率,添加了一個Detector Polar以接收繞射光線。
圖 29. 整個系統的佈局圖。
在優化函數中,計算繞射效率並使用操作數NSDP報告(圖30):
圖 30. 優化函數編輯器
Universal Plot顯示優化函數作為光源入射角的函數
圖 31. Universal Plot 設置
Universal Plot 的結果如下圖。
圖 32. 在Universal Plot中,Y軸代表優化函數數值,X軸代表光線入射角。
非序列模式範例 2
本範例與序列範例2中分析的系統類似。不同的是我們在非序列模式下重建系統,進一步優化系統以達到圖像照度均勻,並增加兩個全像光柵,使其支援彩色結果。系統附件檔案為vhg_kog_nsc_example2.zar。
在下圖中,可以清楚地看到3個全像物件(物件10、11、12)在波導上的堆疊情況。這些全像除了建構光束的波長(參數Wave)和相應的折射率(n1和n2) )外,其他參數都是一樣的。
請注意,我們仔細考慮了嵌套規則( nest rule),因此在兩個全像之間或全像和波導之間的每個邊界,在兩個面重疊的地方,光線都可以正確看到繞射面。在這個檔案中 ,物件10、11、12的繞射面都在靠近波導的一側。換句話說,在-z側。
圖 33. 系統布局圖和三個全像物件的細節
關於嵌套規則的更多訊息,請參見以下兩篇參考文獻。
- “Improving non-sequential ray tracing speeds with nested and Boolean objects”
- OpticStudio Help file > The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Overview > Object Placement > section “Nesting surfaces”
關於這個例子的更多討論可以在參考文獻[3]中找到。模擬圖像如下圖所示,可以看到折射率偏移或全像收縮對圖像的影響。
圖 34. 多色設計的圖像模擬和系統的三維陰影模型。
非序列模式範例 3
在這個例子中,我們假設全像不是我們自己製作的而是買的。假設供應商提供了以下規格。
- 全像類型: 穿透
- 設計波長: 632 nm
- 輸入角度: 30 度
- 輸出角度: 7 度
- 厚度: 7 mm
- 平均折射率: 1.5
- 調變折射率: 0.00005
- 該元件被設計用於: 空氣中
由於我們不知道全像的具體製作方法,所以我們需要根據給定的規格,用一個虛擬的建構系統來建構它。
要做到這一點,首先,我們需要將輸入和輸出角度轉換為向量,如下圖35所示,這樣我們才能正確定義系統。
注意,如果需要的話,y軸可以用x軸代替。這要看系統中全像物件如何放置和旋轉會更為方便。但是,z軸不能用其他軸代替,因為DLL模型假設全像表面在XY平面。
圖 35 YZ平面上的入射與出射向量。
F根據規格和上圖,我們可以計算出vin向量為(0,-sin(7deg),-cos(7deg)),vout向量為(0,-sin(30deg),-cos(30deg))。因此,建構光束的參數可以設置如下:
- Holotype = 1
- X1 = 0
- Y1 = 1E9*(-sin(7 deg)) = -0.121869E9
- Z1 = 1E9*(-cos(7 deg)) = -0.992546E9
- X2 = 0
- Y2 = 1E9*(-sin(30 deg)) = -0.5E9
- Z2 = 1E9*(-cos(30 deg)) = -0.866025E9
以上計算中乘上1E9代表無限大,用來設定準直建構光束。
需要注意的是,如果 Holotype 設置為2,則(X1,Y1,Z1)或(X2,Y2,Z2)其中一個需要乘以-1。
對於其餘的參數,我們可以直接從數據表中獲取。它們如下。
- 波長 = 0.633 µm
- 厚度 = 7 mm
- 調變折射率 = 0.00005
- 全像折射率 = 1.5
對於最後兩個參數,其數值取決於全像的設計使用方式。在這個範例中,從規格書中我們知道全像應該是在空氣中使用,而不是附加在任何基板上。因此,我們設置n1 和n2如下:
- n1 = 1.0
- n2 = 1.0
最後的設置和結果如下圖所示,也可以在附件檔案vhg_kog_nsc_example2.zar.中查看。
圖 36. DLL的參數可以在多重結構編輯器中展開。
圖 37. 在Universal Plot中,y軸表示優化函數的數值,x軸表示光線入射角。
值得提一下的是,在這個文件中,當替換Universal Plot時,我們使用了一個技巧;開始和停止階數都被設置為1,所以我們可以強制DLL只考慮1階繞射光線,而忽略0階直接穿透的光線。這個技巧有助於在Universal Plot中只看到單階的繞射效率。
圖 38.如果我們將起始階數設置為0,停止階數設置為1,那麼0階和1階光線都會被追跡,如圖所示。
参考资料
- Kogelnik, H., "Coupled wave theory for thick hologram gratings, " Bell Syst. Tech. J. 48, 2909-2947 (1969).
- Bjelkhagen, H. and Brotherton-Ratcliffe, D., Ultra-realistic imaging: advanced techniques in analogue and digital colour holography. CRC press, 2016.
- Han-Hsiang Cheng, Xiaochaoran Tian, "An advanced ray-tracing model for multi-color holographic optical elements," Proc. SPIE 11188, Holography, Diffractive Optics, and Applications IX, 1118817 (18 November 2019); https://doi.org/10.1117/12.2537762
KA-01893
评论
文章评论已关闭。