全息本文介绍了OpticStudio 21.1中新的原生体全息模拟功能,此功能考虑到全息光栅的物理特性,在序列模式下对其进行全面模拟和分析。同时,也示范使用现有DLL在非序列模式下展示相同的功能。这些分析对于设计虚拟现实(VR)和增强现实(AR)的头戴型显示器(HMD)和抬头显示器(HUD)等系统非常重要。
本文解释了模型中使用的理论和参数,并介绍了5个系统范例。
序列模式的体全息在OpticStudio的所有版本上都可以使用,但是衍射效率分析只有订阅制才能使用。DLL是订阅制旗舰版本的功能。
下载
联系工作人员获取附件。
转发本文至朋友圈并截图可查看如下视频演示。
简介
体全息在许多类型的光学系统中很受欢迎,例如:抬头显示器(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的工具,请参见文章“ZEMAX | 利用RCWA方法模拟表面浮雕光栅的衍射效率”。
耦合波理论
我们来回顾一下耦合波理论,它主要用于体全息光栅模型。
考虑一个简单的情况,即一个法向量的全息平面被两个波长相同的平面波照射,沿波向量nk1和的方向传播。平面波在穿过全息时,首先受到司乃耳定律的折射,在全息内有新的波矢量k2k1'和'(图2(a))。然后,光栅矢量可由下式定义:k2
显影后,当全息被重建平面波照亮时,衍射波,可通过解方程式确定:kpkd
其中和是重建波向量和全息感光材料内部的衍射波前(图2(b))。注意光栅向量可以从两个反向方向选择。方程式(2)的符号约定,假设K的方向选择满足>0。kpkdKK.kp
图 2. (a) 两道建构光束折射到全息材料中 (b) 重建光束折射到体全息中
现在,我们考虑在全息中,由正弦调变来表示折射率n和α,如方程式(3)。
其中为平均折射率,为折射率的振幅调制,为光栅矢量。n0n1K
透射和反射全息的衍射波和穿透波的TE(横向电场)的偏振电场可以用以下4个公式计算。注意,在这个理论中,能量被假设为只在入射波、零阶(直射波)和一阶衍射波之间交换。若要消除这个限制,需要严格耦合波分析理论。
对于TM(横向磁场)极化,我们可以简单地将替换为κκ断续器,如下所示,仍然使用前面的公式。
在锥形衍射的情况下,入射光线不垂直于光栅,偏振特征态定义如下:
图3.全息在Kogelnik的耦合波理论中,全息被认为足够厚,每条入射光线要不是直接以0阶通过,不然就是1阶绕射,对于反射和透射的全息都是如此。
假设和限制
Kogelnik 的耦合波理论与其他理论相比具有优势,可以准确预测体积相位光栅的零阶和一阶效率的响应。然而,当厚度较低或折射率调变(modulation)较大时,这种准确性可能会降低。因此,有必要讨论Kogelnik理论的适用范围,供用户参考。
-
折射率调变:与平均折射率相比,折射率调变不能太大。换句话说, ,这在大多数实际情况下是正确的。一个参考用的经验法则是,对于反射全息,之比不应大于0.16,对于透射全息,之比不应大于0.06。[2]n1/n<< 1n1/nn1/n
-
厚度:假设全息是厚的。经验上,我们是确保以下条件来保证耦合波理论仍然适用:
-
多阶衍射:这与厚度的限制相同。对于厚的全息,输入光线的能量将只转移到直接穿透的0阶波或绕射的+1阶波上。对于薄的全像,其他衍射阶数的效率可能不为零,如-1 -2 +2 -3 +3 ...。这些额外阶数不在耦合波理论的考虑中。
-
多重光栅 (multiplex):全息中只能同时存在一组光栅。Kogelnik的方法不允许多于一个光栅重叠在一个区域。
-
双折射材料:全息的材料被认为是均向性的。不允许使用双折射材料。
请注意,这些限制可以通过使用不同的算法来消除。如果您的全息需要破除这些条件,请联系工作人员获得技术支持。
膨胀/ 收缩
在本节中,我们将介绍如何考虑全息的膨胀和收缩。
在加工时,全息材料可能会改变其厚度。为了考虑厚度变化的影响,我们首先将光栅矢量分成两个分量,K∥andK⊥,其中K⊥為垂直表面法線,K∥与表面法线平行。如果厚度从t到t'发生变化,则可以通过修改K∥计算出新的光栅矢量,如方程式(4)。
图 4. 当全像材料收缩时,厚度从t 减少到 t'
如何在序列模式下进行设置
I在本节中,我们将介绍如何在序列模式下设置全息。同时也讨论了需要注意的事项。要在序列模式下添加体全息,我们可以使用4个全息表面中的任何一个。Hologram 1、Hologram 2、环形Toroidal Hologram、Optically Fabricated Hologram。各个曲面的体全息参数的完整细节请参见O pticStudio 帮助手册。在本范例中,我们将使用 Hologram 2 曲面,其参数如下所示。
图 5. 镜头数据编辑器中的Hologram 2 表面参数
在这些参数中,Construct X1、Y1、Z1、X2、Y2、Z2和Construct Wave控制了建构光束的位置和波长。有关这7个参数的更多信息,请查阅文章“ZEMAX | 如何在 OpticStudio 中建模全息图”.
其他参数的含义如下。
-
Diffract order:这个参数只有当表面是一个透射全息时才有效。当它为0时,我们追迹直接穿透的0阶,当它为1时,我们追迹衍射的1阶。请参阅 “ZEMAX | 如何在 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
参数和代表全息外材料的折射率,是建构光1看到的折射率,是建构光2看到的折射率。如果在建构阶段,两道建构光束来自不同侧,那么和可能会有所不同,如下图所示。n1 n2 n1n2n1 n2
图 13. 两道建构光束来自不同侧
另一方面,在建构阶段,如果两道建构光束来自同一侧,那么将与相同,如下图所示。n1 n2
图 14. 两道建构光束来自同侧
如果您不确定 “建构光束” 的定义,请参见 “如何在OpticStudio中建模全息图” 了解更多信息。
请注意,如果设置不正确,全息的行为将不正确。这跟我们在现实世界中如何建构全息有关。例如,在录制全息的时候,我们可能会在全息的一边放上一个棱镜,然后在回放的时候把棱镜去掉,如下图所示。在这种情况下,和应设置为棱镜和波导的折射率。n1n2n1 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。在“模拟 AR 系统中的全息光波导:第一部分”中介绍了系统的设计方式。在这里,我们主要分析考虑衍射效率与新功能的效果。
在这个文件中,建构光束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. 图像模拟nalysis
非序列模式范例 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. 系统布局图和三个全息对象的细节
关于嵌套规则的更多讯息,请持续关注公众号即将更新!
1.“提高嵌套和布尔对象的非序列光线追踪速度”
2.OpticStudio 帮助文件 >“设置”选项卡 >编辑器组(“设置”选项卡)>非序列组件编辑器 > 非顺序概述 >“对象放置”>“嵌套曲面”部分
关于这个例子的更多讨论可以在参考文献[3]中找到。模拟图像如下图所示,可以看到折射率偏移或全息收缩对图像的影响。
图 34. 多色设计的图像模拟和系统的三维阴影模型
非序列模式范例 3
在这个例子中,我们假设全息不是我们自己制作的而是买的。假设供应商提供了以下规格。
-
全息类型:穿透
-
设计波长:632 nm
-
输入角度:30 度
-
出口角度:7 度
-
厚度: 7 mm
-
平均折射率: 1.5
-
调变折射率:0.00005
-
该器件被设计用于:空气中
由于我们不知道全息的具体制作方法,所以我们需要根据给定的规格,用一个虚拟的建构系统来建构它。
要做到这一点,首先,我们需要将输入和输出角度转换为向量,如下图35所示,这样我们才能正确定义系统。
注意,如果需要的话,y轴可以用x轴代替。这要看系统中全息对象如何放置和旋转会更为方便。但是,z轴不能用其他轴代替,因为DLL模型假设全像表面在XY平面。
图 35 YZ平面上的入射与出射向量
F根据规格和上图,我们可以计算出v在向量為(0,-sin(7deg),-cos(7deg)),v外向量为(0,-sin(30deg),-cos(30deg))。因此,建构光束的参数可以设置如下:
-
全息型 = 1
-
X1 = 0
-
Y1 = 1E9*(-正弦(7 度)) = -0.121869E9
-
Z1 = 1E9*(-cos(7 度)) = -0.992546E9
-
X2 = 0
-
Y2 = 1E9*(-正弦(30 度)) = -0.5E9
-
Z2 = 1E9*(-cos(30 度)) = -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阶光线都会被追迹,如图所示
参考资料
-
科格尔尼克,H.,“厚全息光栅的耦合波理论”,贝尔系统技术公司J.48,2909-2947(1969)。
-
Bjelkhagen,H.和兄弟顿 - 拉特克利夫,D.,超现实成像:模拟和数字彩色全息术的先进技术。CRC出版社, 2016.
-
程汉祥,田晓超然,“一种先进的多色全息光学元件光线追踪模型”,SPIE 11188,全息、衍射光学及应用IX,1118817(2019年11月18日);https://doi.org/10.1117/12.2537762
相关阅读
Ansys Zemax | 模拟 AR 系统中的全息光波导:第一部分
Ansys Zemax | 抬头显示器设计:从 OpticStudio 至 SPEOS
欢迎扫码添加宇熠工作人员微信,
进入 zemax 微信交流群。
一起来学习光学设计吧!
扫码邀您入群
武汉宇熠科技是 ANSYS 全线产品中国区官方指定代理商,提供 Ansys Zemax、Ansys Lumerical、Ansys Speos 等软件产品的培训、销售、技术支持、二次开发、解决方案及这些软件相关全方位定制服务。(点击查看:全新服务!从光学设计到打样生产的整套解决方案)
有关以上软件 ,您可以点击文末"Read the original text"了解更多信息,或致电垂询武汉宇熠工作人员:
销售热线:027-87878386
咨询邮箱:sales@ueotek.com
原文始发于微信公众号(武汉宇熠):Ansys Zemax | 利用 Kogelnik 方法模拟体全息光栅的衍射效率
长按识别二维码,加入群聊
Welcome to join us.艾邦HUD通讯录,目前有2500人,包含各大HUD厂商以及主机厂负责人均已经加入,可以通过点击下方关键词查看 OEM Autonomous Driving (V2X) HUD厂商 HUD初创 TFT影像源 DLP光机 MEMSLSP chip 电子元器件 light source LCD auto parts circuit board 玻璃透镜 光学镜面 光学镀膜 光学镀膜设备 optical design 光波导 匀光片 Light diffusion film 高性能塑料 film 功能涂料 吸光材料 散热方案 贴合胶带 glue adhesive 挡风玻璃 楔形膜 传动机构 AR生成器 AR导航 测试软件 Cutting machine Laser equipment Testing Equipment equipment otherDownload: