当前位置:首页|资讯

Ansys Zemax | 如何在OpticStudio中创建多边形物体

作者:武汉宇熠发布时间:2024-10-15

附件下载

联系工作人员获取附件

概述

在OpticStudio中,使用多边形物体 (Polygon Object, POB) 是创建用户自定义几何体的常用方法之一。本文介绍了如何创建多边形物体、定义物体表面以及如何在非序列编辑器中使用该物体。

介绍

多边形物体是由多个三角形或矩形面构成的三维空间几何体,其中三角形或矩形面的顶点由一个ASCII文本文件定义。该文本文件包含有多行数据,并且可以使用任意文本编辑器进行编辑。其中每行数据以单个字母或符号为起始,数据跟随在字母和符号之后。

为了充分演示如何构建多边形对象、定义单个面或面组、保存文件的位置以及如何在OpticStudio中加载文件,让我们使用POB功能创建一个等边三角形棱镜。等边三角形棱镜共有五个面,但只需定义总共六个顶点。然后,我们可以使用OpticStudio中多边形对象支持的矩形符号连接每个顶点。

首先打开一个空白的文本文档。在POB文件以中叹号 (!) 为起始的行表示该行为备注行。在定义多边形物体时使用备注行来描述该物体是十分有用的,它可以在之后使用时帮助您快速了解该文本文件创建了什么样的物体。



让我们首先定义棱镜的6个顶点。我们必须使用的语法由顶点符号描述:V。定义顶点的线必须以字母V开头,后跟顶点编号和顶点的x、y、z坐标:

V number x y z

该数字将x、y、z位置指定为一个顶点编号,稍后可以在我们对多边形对象的定义中使用该编号。这样做很方便,我们不必每次使用这个顶点时都定义x,y,z坐标。相反,我们只是引用数字。

x、y、z坐标相对于多边形对象的局部(0,0,0)。请注意,多边形对象的(0,0,0)坐标在NSC编辑器中全局定位。

假设棱镜的顶点位于正面下边缘的中心,棱镜的所有边的尺寸都是2。此处的坐标单位为当前系统的镜头单位。如果当前系统的镜头单位为毫米,那么棱镜的每一面都是2毫米。如果我将系统单位切换为英寸,那么每边将为2英寸。



同样,共有6个顶点由它们各自的x、y和z位置定义。这是一个代表我们刚刚定义的点集合的图形:



需要注意的是我们还未连接任何顶点。上图中的实线只是出于展示目的来帮助我们分辨棱镜的外形和顶点的空间位置。

其中棱镜前表面上的箭头表示局部坐标轴方向,它位于多边形物体的原点。每个物体的局部坐标轴都可以在对应物体的物体属性 (Object Properties) > 绘图 (Draw) 中选中显示局部坐标轴 (Draw Local Axis) 来显示:


连接顶点

上一节中我们定义了所有的顶点坐标,现在我们需要连接各个顶点组成矩形面来构建棱镜。三角形语法需要组成三角形的三个顶点数,以及其他两个参数:

T vertex1 vertex2 vertex3 isreflective face

矩形语法需要四个顶点编号:

R vertex1 vertex2 vertex3 vertex4 isreflective face

顶点编号必须为整数,并且是文本文件中已经定义顶点的编号。其中编号的定义顺序并不是任意的,编号的顺序必须为所构建棱镜顶点的逆时针或顺时针顺序。如下图中右侧显示的交叉顺序是不支持的:


例如,下面的线将创建棱镜的正面,连接顶点1、2和3:

T 1 2 3 0 0

isreflective参数是一个整数值,可以是-1、1或0。多边形对象的每个面都可以是反射的、折射的或吸收的。如果在上述示例中将反射标志设置为1,则该曲面将被视为反射曲面,语法如下所示:

T 1 2 3 1 0

对于isreflective标志,0代表折射,1代表反射,-1代表吸收。与POB文件中定义的不同,每个对象的每个面都可以从“对象属性”对话框中进行反射或吸收:

需要注意的是,在膜层/散射标签中定义的表面属性将覆盖POB文件中定义的表面属性。也就是说,如果POB文件其中一个面设为反射,则可以在不打开编辑文本文件的情况下,在膜层/散射标签中将该表面的表面属性改为吸收。如果该选项选择为“物体默认 (Object Default)”,则OpticStudio将使用POB文件中定义的表面属性。

数据行中的face标识用来定义该表面属于哪个表面组。我们将在下文中详细讨论。

因此,为了完成立方体的构建,我们总共需要两个三角形命令和四个矩形命令,每个命令都是折射的:


保存和加载POB文件

定义完的多边形物体文件需要保存在Zemax根目录下的Objects > Polygon Objects文件夹中。并且文件的扩展名必须为.POB。我们将前文创建的POB文件保存为Equilateral triangle prism.POB文件。

当我们想在OpticStudio非序列模式中使用该POB文件时,我们需要将物体的物体种类设为多边形物体。在数据文件 (Data File) 下拉菜单中选择Equilateral triangle prism.POB文件,如下所示:


打开阴影模型以确认我们刚刚构建的棱镜。


对表面分组

目前我们定义的立方体只含一个表面分组。换句话说,当我们需要定义立方体的膜层或表面散射属性时只能同时对6个表面进行定义。打开物体属性的膜层/散射标签,我们可以看到在表面下拉菜单中只有一个名为Face 0的分组,它表示立方体的所有表面。


同时,在物体编辑器 (Object Editor) 中选中Face 0表面组会看到立方体的所有表面都被选中并高亮显示为橙色。


我们可以在POB文件中对不同表面进行分组。如此一来,我们可以对不同表面组的表面定义不同的表面属性。表面组的名称和序号需要在POB文件的开头进行定义,其中定义符号为C。该定义的语法如下所示:

C facebumber “任意名称”

其中facenumber为整数,用来定义表面组的序号,该序号用于后续三角形或矩形表面构建时进行分组使用。表面组的名称可以为任意便于区分的名称。

在当前示例中,让我们编辑多边形对象以区分棱镜的正面、背面和侧面(选择编辑对象数据文件(位于NSC编辑器工具栏中)。在顶点定义之前,让我们定义3个唯一的面组:一个用于正面,一个用于背面,另一个用于棱镜的四个侧面。为此,需要3个面命令:


请记住,每个三角形/矩形定义都有一个面标志,它对应于之前在POB文件中定义的面组编号。因此,我们需要为每个三角形/矩形定义修改此标志,以区分哪些面与哪些面组或面编号相关。

描述正面的三角形的面号为1,因为这是描述“正面”的面组。定义棱镜侧面的所有矩形的面号都为0。最后,将对背面三角形应用面组编号2:


完成每个面的表面组序号设置后保存文本文件并重新加载该POB物体。我们可以看到表面下拉菜单中包含了三个表面分组:



这样一来,我们可以单独对Side Face分组的表面(POB文件中表面分组序号为0的表面)定义任意表面属性。同样的,当选择其他表面分组时(例如序号1,前表面),我们可以定义不同的表面属性。

我们可以通过物体编辑器查看所选表面分组中包含的表面。其中选中的表面将高亮显示为橙色:


注意事项

在使用多边形物体时有以下几点需要特别注意:

  • 当使用POB文件表示空间几何体时,确保POB文件中定义的矩形/三角形表面闭合为一个封闭的体积(也可以使用多边形物体在非序列编辑器中的额外数据“是实体?(Is Volume ?)”来定义封闭的空间几何体)。

  • 在定义矩形时,顶点的定义顺序不能交叉。交叉会导致光线追迹产生错误。

  • 多边形物体中没有三角形/矩形表面的数量上限。它是由计算机内存的容量决定。其中每个三角形表面大约需要100比特的存储空间。然而OpticStudio通常会在同一时间保多个透镜数据的副本,因此OpticStudio存储一个三角形表面的实际空间约为500比特。

在OpticStudio中内置有一个示例宏程序可以用来生成不同类型的多边形物体,且无需定义每个顶点。该宏程序名称为Polygon.ZPL,它保存在Zemax根目录下的Macros文件夹中。在使用时,宏程序需要用户输入物体的表面半径(表面不一定为圆形)、表面的边数、多边形物体的长度以及长度的分段数量。

小结

在OpticStudio中使用多边形物体是一种非常灵活的创建用户自定义物体的方法。通过简单的ASCII文本文件,您可以定义任意由顶点连成的三角形或矩形所组成的空间几何体。在POB文件中可以对每个表面进行分组,每组中可以包括一个或多个表面。用户可以根据分组,简单快速的定义不同分组表面的表面属性。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1