Ansys Zemax | 使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 4 部分
附件下载
联系工作人员获取附件
在 OpticStudio 中使用 RCWA 工具为增强现实(AR)系统设置出瞳扩展器(EPE)的示例中,首先解释了k空间中光栅的规划,并详细讨论了设置每个光栅的步骤。
介绍
本文是该四篇文章系列中的最后一篇,展示了如何检查封装图并模拟瞳扩展器系统的图像。此外,我们还讨论了 EPE 系统可能的改进方案及其他需考虑的因素。如需更多详细信息,请查阅系列中其他文章的链接。
如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 1 部分
如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 2 部分
如何在 OpticStudio 中使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 3 部分
获取 MTF 的方法
由于该系统采用非序列模式构建,因此计算 EPE 增强现实(AR)系统的调制传递函数(MTF)存在一定难度。为解决这一问题,我们提供了两种方法:
(1)使用 Detector Rectangle 提供的几何MTF数据直接进行计算;
(2)采用带有 Detector Rectangle 的 Huygens 点扩散函数(PSF)方法,并在外部软件(如MATLAB)中将 PSF 转换为MTF。
接下来的一节将详细介绍这两种方法。
方法 1:几何 MTF
几何MTF的计算过程相对简洁,只需按照以下步骤操作:
1. 打开本系列文章前一部分(即第3部分)中的示例文件:“step5_image_simulation.zar”。
2. 在文件中,忽略并隐藏 Slide 对象。
图 1.忽略和隐藏对象。
3. 将 Source DLL 更改为 Source Point 参数,如图 2 所示。
图 2.源点的参数值。
4.使用 X 半宽=0.005和 Y 半宽=0.005的参数来缩小最终的检测器图像。
5. 在追踪光线之后,我们可以观察到几何点扩散函数(PSF)和调制传递函数(MTF),如图3所示。需要注意的是,图3中的结果并不符合实际情况,因为聚焦点远小于艾里斑。这主要是由于该系统采用了理想的镜头模型(即近轴透镜)来模拟光引擎和人眼系统。然而,即便在用户考虑光引擎部件的实际镜头系统时,对几何 PSF/MTF 的分析仍然可能具有一定的参考价值。
图 3.几何 PSF 和 MTF。
制备衍射 PSF/MTF 的计算
在深入探讨如何计算衍射点扩散函数(PSF)/调制传递函数(MTF)之前,我们需要进行两项关键的调整,以确保在非序列模式下能够准确处理光线的相位。基于上一节关于几何 PSF/MTF 的讨论,我们将按照以下步骤进行操作。所有提及的更改均已被保存在名为“step6_calculate_PSF.zar”的文件中,该文件可以联系工作人员获取附件。
用用户定义的衍射 DLL 替换近轴透镜
两个近轴透镜对象被替换为了一个具有用户自定义衍射功能的DLL——“NSC_Paraxial_Lens.dll”所实现的衍射光栅。这个DLL的设计目的是模拟近轴透镜的工作方式,并且能够正确地处理光线的相位信息。在撰写本文时,非序列模式下的内置近轴透镜对象尚无法准确计算输出光线的相位,导致所有相干分析的结果都不准确。这款衍射 DLL 可以应用于任何需要使用近轴透镜并进行相干分析的场合。
在使用“NSC_Paraxial_Lens.dll”时,需要注意以下几点限制:
-
DLL 对 NSC_Paraxial_Lens 两侧材料的折射率有所要求,只能为1.0,或者光线在撞击物体时会终止。但在本例中,由于近轴透镜处于空气中,折射率满足要求,因此这一限制可以根据用户请求进行删除。
-
DLL 假定光线是从 -z 侧入射的。如果从 +z 侧照射到衍射面,光线将终止。为了解决这个问题,第二个衍射光栅对象被绕X轴旋转了180度,以确保光线来自衍射透镜的 -z 侧。这一限制同样可以根据用户请求进行删除。
-
DLL 仅适用于0级传输光,其他级次的光将被忽略。因此,用户应将起始级次和终止级次都设置为0,设置为其他数字将没有意义。这一限制是无法删除的,因为它符合 DLL 的工作原理。
-
DLL 仅适用于已定义的共轭物,即物体和像的距离已知时才能正常工作。这是一个无法消除的限制,因为近轴透镜是一个虚拟且不切实际的组件。因此,建议设计人员在设计成熟时,改用包含像差在内的真实光引擎系统,以评估更真实的条件。
图 4.近轴透镜被具有衍射 DLL NSC_Paraxial_Lens.dll的衍射光栅所取代。
使用 User Defined Object + Polygon_grating.dll 重新定义第二个(旋转)光栅
在撰写本文时,我们已修复了一个错误,即原先 Boolean Native/CAD 在处理光线相位方面存在不足。为解决这一问题,我们采用了用户定义的对象(User-Defined Object)来重新构建了第二个格栅,具体使用的是Polygon.dll。该用户定义的对象允许用户直接定义一个多边形板,其顶点坐标可通过对象参数(如p1x、p1y、p2x、p2y等)来指定。相较于使用 Boolean Native/CAD 来制作多边形板,这种方法提供了更高的便利性和灵活性。
图 5. 3个对象,布尔原生、凸出和衍射光栅,被用户定义的对象 DLL + Polygon_grating.dll 替换。
检查 RCWA DLL 的版本
为了准确处理光线的相位信息,必须采用在2021年4月18日之后编译的 RCWA DLL。这个 DLL 可以通过 RCWA 可视化工具来访问,该工具位于“Programming”选项卡的“User Extensions”下,具体可参考图6所示。
图 6.在 RCWA 可视化工具中检查 RCWA DLL 版本。
用于获取瞳孔函数和惠更斯 PSF 的检测器
如图 7 所示,在 Annulus 对象之后设置了一个检测器,用于检查截短的瞳孔函数以进行分析。
图 7 在眼框处层压的四个对象。
图 8.截断的瞳孔功能。左侧显示相干辐照度。右侧显示 Coherent Phase。
此外,在计算惠更斯点扩散函数(PSF)时,需将 PSF Wave# 设置为眼图系统检测器的一个非零值。这个数值代表 System Explorer 中设计人员想要评估的光波长的波数,且必须为非零。重要的是,在评估惠更斯 PSF 时,应仅追踪一个波长。同时请注意,此设置通常会导致光线追踪速度变慢,因此仅在需要评估惠更斯PSF时才使用。图10展示了模拟的惠更斯PSF。
图 9.将 PSF Wave# 设置为非零值,以便在探测器上评估惠更斯 PSF。PSF Wave# 对应于 System Explorer 中定义的波长。
图 10.左图显示了在人眼探测器上计算的惠更斯 PSF。右侧显示了截断前出瞳处的相位分布。
此时,所有用于计算MTF的数据都已准备就绪。以下部分介绍如何通过 PSF 和 pupil 函数获取 MTF。
PSF 的讨论
用户可能会好奇为什么 PSF 会有细微的变动,以及瞳孔功能为何会呈现出一个倾斜阶段,原因在于第二个光栅的周期不够精确。如图11和图12所示,这一微小误差可以通过增加第二个光栅周期的有效数字来消除,确切的数值应为0.27779397次/微米。
图 11.将第二个光栅的周期更改为更准确的值,以消除瞳孔函数中的倾斜相位和所得 PSF 中的偏移。
图 12.将第二个光栅的周期更改为更准确的值后的仿真结果。
方法 2:通过傅里叶变换将惠更斯 PSF 转换为 MTF
根据给定的 PSF 计算 MTF 很容易。在这里,我们通过 MATLAB 进行了一个演示。
1. 为 MATLAB 生成用于交互式扩展的样板代码。
图 13.MATLAB 的交互式扩展样板代码。
2. 返回 OpticStudio 以启用交互式扩展的访问,如图 13 所示。
图 14.交互式扩展的开放访问权限。
3. 请打开随附的MATLAB代码并运行它。请注意,此代码专为本文中的示例而设计。若应用于其他系统,用户需在代码的第25行指定用于观察PSF的探测器编号,在第60行设置瞳孔的半直径,并在第61行输入近轴透镜的焦距。
4. 结果如图 14 所示。
图 15.在 MATLAB 中计算的 MTF。
结论
本文展示了针对增强现实(AR)系统设计的出瞳扩展器。文中附带了多个示例文件,并对每个文件中的关键设计要点进行了讨论。文章阐述了系统中采用的三个光栅的作用,并讲解了如何检查光束在波导中的传播足迹,以及如何进行此类系统的图像仿真。此外,还探讨了一些优化系统的潜在方法。最后部分,文章讨论了计算点扩散函数(PSF)和调制传递函数(MTF)的多种途径。