ZEMAX | 如何使用ZOS-API分析全息图的结构条纹

在设计光学全息图时,分析元件上的条纹频率以确保可制造性是很重要的。本文提供了自定义分析,允许对序列全息图 1、全息图 2 和光学制造全息图表面等类型进行此类研究。还提供了源代码,用于演示如何通过 ZOS-API 创建自定义分析和准备设置对话框,用以开放用户分析设置的自定义交互。(联系工作人员获取附件)

简介

在 OpticStudio 序列模式中可用的工具允许通过两束构建光的干涉来定义全息图。由于全息图的定义十分灵活,用户可能使用过于密集的条纹图案来模拟不可生产的全息图。本文介绍了用于观察全息图条纹结构和密度的 ZOS-API 分析。

我们提供了用于用户分析的源代码作为示例。该分析使用了 UserAnalysisSettings 模式。虽然这不是一个完整的演练,但它演示了如何在 API 分析中设置参数值和获取分析值。

准备运行分析

为了运行分析,请下载并解压本文附件。解决方案文件和相关补充文件(源代码文件等)可以在项目文件夹中找到。可执行的用户分析文件“ Hologram Construction Interference.exe "应该保存到目录“ …\Documents\Zemax\User Analysis\ ”内。在可执行文件被保存后,应重新启动 OpticStudio,然后在 编程 (The Programming Tab) … 自定义分析 (User Analyses) … 全息构造 (Hologram Construction Interference) 中,“ HologramFringes ”分析将变为可用。

计算全息条纹数据

根据全息图表面上任意点的相对路径长度和两个构造光源发射到该点的光线能量传播方向的差异,可以计算出任意点上的干涉数据。自定义分析分为两部分:第一部分是针对全息图 1 和全息图 2 表面的情况,第二部分是针对光学制造全息图面的情况。前者使用纯粹的几何关系处理,但后者需要打开构造文件和执行真正考虑构造光学元件的光线追迹。

为了计算光学制造全息图 1 或 2 表面形式的全息条纹图,我们可以简单地追迹从这两种全息图结构到全息图表面的光线,并检查它们的相对路径长度,以找到干涉图。在自定义分析中,这种计算类似于基于路径长度差的干涉图方法。

对于条纹密度,这种计算是基于全息图表面上给定点上构造光向量(光线方向余弦)的差值和构造光束波长的差值。在自由空间中,干涉如下描述:


在该表达式中, Λ 为条纹间距(密度的倒数), ro 和 rr 是构造光向量, f 是条纹面的正交方向。如图所示,其中红色虚线表示自由空间中的干涉条纹:


然而,OpticStudio 将全息图建模为薄膜,代表除了在全息图表面的平面上,在任何地方都不能有条纹。我们可以使用表面法线来考虑表面轮廓:



f' 处于薄膜平面内,所以 σ 是我们关心的值(即全息图表面平面内的条纹间距),取这个值的倒数就可以得到条纹密度。需要注意的是,所有这些计算都是纯局部的,因为确定在任何给定位置的条纹密度的计算是在整个全息图表面的点网格上执行的。

计算全息图 1 和全息图 2 表面的全息条纹频率

在使用全息图 1 和 2 表面的情况下,构造光源被定义为 XYZ 坐标中的点,在构造点和全息图表面之间的光线路径中没有光学干涉。因此,对于全息图表面上的每个点,我们可以通过纯粹的几何处理来计算两个源点光线矢量的差,而不需要追迹光线。在这种情况下,对于全息图表面上的每个采样点,我们在两个构造光源和该点之间分别作出一个矢量,然后利用这两个矢量之间的差值以及波长来确定全息图表面的条纹频率。

计算光学制造全息图的条纹频率

光学制造全息图的情况有点复杂,因为它们的特性包括两个独立光学系统产生的像差效应。当以 OFH 为分析对象时,我们必须分别打开每个构造 ZMX 文件(使用 IOpticalSystem 在后台完成),并运行批量处理光线追迹来检索全息图表面网格中每条光线的方向余弦。在光线追迹中,我们也在给定的点检索表面法向量,用于条纹密度计算。

分析设置

全息图分析允许用户绘制条纹频率(每透镜单位的条纹),或者直接在规范化尺度上显示构造光束的干涉条纹。分析设置如下:


表面序号 (Surface Number):被分析全息图表面的表面序号,只有有效的表面才会出现在该选项中(全息图 1、全息图 2、光学制造全息图)。如果在系统中没有找到有效的表面,则在加载分析时将出现错误提示。
采样 (Sampling):用于探测干涉光线的网格采样密度。追迹的实际样本光线数是这里所示值的两倍,因为两个构造光束都需要光线网格采样。
条纹缩放 (Fringe Scale):当“ 绘制条纹频率 ”启用时此功能将会被禁用。当将设置为绘制干涉时,这个比例因子决定了每个绘制的干涉条纹的实际物理干涉条纹的数量。例如,值 10 表示在图中看到的每一条条纹,在全息图表面都有 10 条实际物理条纹。对于高功率全息图,可能需要极高的采样率来查看完整的条纹图案并避免混叠效果。增加这个比例因子可以消除混叠效应,同时保持相对较低的采样。
绘制条纹频率 (Plot Fringe Frequency):决定分析运行的模式。选择此功能后将显示条纹频率(条纹/透镜单位)。当未选中时,分析窗口将显示带有标准化单位的条纹图案。
保存文本数据 (Save Text Data):允许用户选择性地将计算的原始数据保存为文本文件,该文件将被保存到与当前透镜文件相同的目录中。这里输入的文本文件名不包含路径,并以扩展名“ .txt ”结尾(即“ analysis.txt ”)。

在API中编写自定义分析设置

当打开自定义分析时,将以 UserAnalysis 模式调用可执行文件,这意味着我们只需调用 RunUserAnalysis() 函数,然后结束运行。在本例中,使用 RunUserAnalysis() 函数中定义的默认设置。加载分析之后,用户可以从操作界面打开分析设置来选择自定义选项。

在界面中,ZOS-API 自定义分析的设置窗口会像其他分析窗口一样初始化,可以从窗口左上角的“ 设置 ”下拉列表中打开。点击按钮初始化 User analysis.exe 文件,但是使用不同的模式调用它,以避免调用 RunUserAnalysis 函数,而是调用 ShowUserAnalysisSettings 函数。在附加的源代码中,这个辅助功能可以在文件的底部附近找到。在这个函数中,我们初始化了一个新的设置表单。在 Visual Studio 中,可以通过在解决方案资源管理器中的 AnalysisSettingsForm.cs 上右键单击并选择“ 打开 ”来看到设置窗口:


在这里,我们可以看到所有已定义的设置(按钮、组合框等)。通过单击单个按钮,我们可以在属性窗口中看到该设置的属性,包括其名称、类型和其他信息。您还可以从这里向表单引入其他设置实体。

这些设置实际上是通过调用 AnalysisSettingsForm() 函数在代码中使用的。通过右键单击 AnalysisSettingsForm() 函数并选择“ go to definition ”,可以看到设置表单的定义。从那里,我们可以看到一些组件出现在设置列表内:

当第一次加载设置窗口时,将调用 AnalysisSettingsForm_Load() 函数。在这里,我们使用默认的用户选项,并在设置表单的每个字段中填充默认值或之前选择的值。
当单击设置中的“ 确认 ”按钮时,将调用 b_OK_Click() 函数。这就是实际运行用户选择设置的功能,我们将设置中的数值分配给全局变量,然后调用 RunUserAnalysis() 函数,该函数将从这些全局设置变量中获取数值。
其他的功能允许用户与其他设置交互。

点击设置窗口中的 OK 按钮后,返回程序的 ShowUserAnalysisSettings() 函数。我们使用 API 的 SetIntegerValue()、SetDoubleValue() 等函数获取设置数值。最后,我们调用 RunUserAnalysis() 函数来使用所需的设置重新计算分析。在 RunUserAnalysis() 函数中,可以看到首先采取的操作之一是设置一些默认值,然后检查设置窗口之前是否调用过。如果是,则通过 GetDoubleValue()、GetIntegerValue() 等获取检索用户设置。这样就完成了设置窗口和用户分析计算之间的交互。

全息图分析中的假设

假设全息图表面的通光孔径为圆形,由 LDE 的净口径/半直径单元定义(忽略孔径在 表面属性 (Surface Properties) > 忽视孔径 (Aperture are ignored) 中定义)。在光学制造全息图的情况下,这仍然是正确的,因为全息图的大小是由重构全息图表面的通光半直径决定的。建议对全息图表面使用“ 浮动孔径 (Floating Aperture) ”或“无 (None) ”光圈类型,以避免混淆。
对于光学全息图,假设在所有三个文件(两个构造文件和一个重构文件)中的系统单位是相同的。
该分析对曲面全息图是有效的,在弯曲全息图面上计算得到结果。对于所有类型的全息图,在条纹密度计算中,条纹间距计算在采样点处的全息图表面的局部切平面内。在干涉图视图中,构造点到实际表面坐标(包括矢高)的路径长度是根据路径长度计算的。但是,由于结果被投影到 2D 数据网格中,所以在分析输出时必须小心。特别地,对于全息图 1 和 2,光线的栅格在表面通光半直径上是等距的。对于光学制造的全息图,光线在光瞳中是等间距的。还请注意,该分析目前仅适用于圆锥全息图基底形状。也就是说,不支持光学全息图中复杂的表面矢高选项(光学全息图的“ 形状 ”参数必须为0)。
对于光学制造全息图,重现全息图的几何形状必须精确匹配结构文件中的光阑表面的几何形状。
构造文件中支持反射镜。如果光学全息图构造文件的光阑面在镜像空间中(光线通过奇数面镜子反射),则认为光线入射到光阑面的“ 前方 ”(即使它们沿 -Z 方向传播)。

参考文献

1. Welford, W. T. Aberrations of the symmetrical optical system Aberrations of optical systems. A. Hilger, Bristol ; Boston, 1986.
2. Welford, W. T. “A Vector Raytracing Equation for Hologram Lenses of Arbitrary Shape.” Optics Communications, vol. 14, no. 3, 1975, pp. 322–323., doi:10.1016/0030-4018(75)90327-2.