多边形物体(Polygon Object)

多边形物体是很常用的用户自定义物体。它可以用来定义一部分具有反射、其余部分具有折射或吸收特性的非闭合多边形表面或闭合的多边形实体。多边形物体是通过将一系列3D三角形顶点坐标放置在扩展名为POB的文件进行建模的。有关更多详细信息,请参阅"定义多边形物体(Defining Polygon Objects)"。可以将任何多边形物体用作探测器,如"物体作为探测器(Objects as detectors)"中所述。
顶点或多边形的总数没有固定限制。在多边形物体类型行的"注释"列中会引用POB文件名。例如,如果将POB文件myobject.POB保存在<objects>\Polygon Objects文件夹中(参阅"文件夹(Folders)"),则需在非序列模式元件编辑器的多边形物体类型行中的注释列中指定"myobject.POB"。多边形物体使用以下两个参数:
参数# | 描述 | 面名称 | 面# |
1 | 比例因子。POB文件中的所有顶点乘以该参数。 | NA | NA |
2 | 用于表示POB文件是定义实体还是定义表面的标记。如果"是实体?"参数为零,则OpticStudio假设POB文件定义开放的表面。如果"是实体?"参数设置为非零的任何值,则OpticStudio假设POB文件定义闭合实体。 | NA | NA |
有关通过多面体追迹光线的限制信息,请参阅"多面体的特别注意事项(Special considerations for faceted objects)"。有关用于创建作为探测器的POB文件的工具,请参见"创建多边形物体(Create Polygon Object)"中所述。
参考坐标是局部坐标(0, 0, 0),构成物体的多边形可以放在相对于参考点的任何位置。面编号:每个面都具有在POB文件中定义的面编号,请参阅下文了解详细信息。
定义多边形物体
多边形物体是在3D空间中由一系列三角面构成的用户自定义物体。三角面已在文本文件(扩展名为POB)中定义(用于多边形物体)。如果需要,可以为多边形的每个面或一组面分配唯一的面编号。任何物体编号唯一的表面总数都会受到限制,有关详细信息,请参阅"物体表面(Object faces)"。
多边形物体形成的闭合体不得包含任何内表面。每个面都必须在物体的外部,以便定义实体的内部和外部之间的边界。要使物体具有胶合边界(如分光镜),可以使用两个或多个单独的多边形物体,然后将它们相互接触放置在一起。有关将物体相互接触放置在一起的更多信息,请参阅"将物体放置在其它物体内部、或与其他物体相邻或重叠"。
可以使用任何文本编辑器创建和编辑文件格式。文件包含一系列数据行。每行以一个字母或符号开头,后跟该符号对应的数据。支持的符号及其含义的定义如下。
注释符号:!
符号"!"用于定义注释行。
语法:
! Any comment here
示例:
! A dove prism
面名称符号:C
可以使用C命令定义的面的名称。
语法:
C facenumber "any name here"
示例:
C 0 "All faces"
面名称用于在物体对话框中显示物体的各个面的名称。注意,名称必须加引号。此命令为可选命令。
不可见符号:I
可以将不需要绘制的顶点连线(如位于同一平面的两个相邻三角形之间的线)标记为不可见。要使两个顶点不可见,可以使用符号"I"后跟两个顶点编号。将不绘制标记顶点间的任何连线。
这只会影响3D视图,严格来说可增强多边形物体绘制的美观性。
语法:
I v1 v2
示例:
I 7 9
注意,顶点编号必须为整数。编号之间用空格隔开。必须在以不可见顶点为参考定义的任何三角面或矩形之前使用I命令。
顶点符号:V
顶点用符号"V"定义,后跟顶点编号以及顶点的x、y和z坐标。
语法:
V number x y z
示例:
V 1 -1.0 -1.0 0.0
注意,顶点编号必须为整数,x、y和z坐标为浮点数。编号之间用空格隔开。
三角形符号:T
三角形通过连接3个顶点定义。
语法:
T vertex1 vertex2 vertex3 isreflective face
顶点编号必须为之前在文件中定义的整数顶点。"isreflective"标记为-1表示表面吸收,为1表示表面反射,或为0表示表面折射。使用此标记可以使同一多边形物体或面中的一些三角面变成反射,使其它三角面变成折射或吸收。但是,在使用多边形物体的布尔运算所生成的物体中不考虑isreflective标记。
face的值定义了三角形所属的面编号。如果省略面编号;则假设为面0。
示例:
T 1 2 3 0 2
这将定义连接顶点1、2和3的折射三角面,属于面2。
矩形符号:R
矩形通过连接4个顶点定义;在其它情况下,它们与三角面非常类似。在内部,OpticStudio将矩形转换成2个三角形。
语法:
R vertex1 vertex2 vertex3 vertex4 isreflective face
顶点编号必须为之前在文件中定义的整数顶点。顶点的顺序不是任意的,它们必须按连续的顺时针或逆时针顺序列出,而不是"蝶形领结"顺序。不是所有由四个顶点构成的多边形都可以形成闭合的矩形;对于更复杂的形状,应使用多个三角面命令完成。"isreflective"标记为-1表示表面吸收,为1表示表面反射,或为0表示表面折射。使用此标记可以使同一多边形物体或面中的一些矩形变成反射,使其它矩形变成折射或吸收。但是,在使用多边形物体的布尔运算所生成的物体中不考虑isreflective标记。
face的值定义了矩形所属的面编号。如果省略面编号;则假设为面0。
示例:
R 1 2 3 4 1 0
这将定义连接顶点1、2、3和4形成的反射矩形,属于面0。
多边形物体中的最大三角面数量
对多边形物体可以包含的三角面数量没有固定的上限。上限由计算机所能够提供的实际或虚拟RAM的大小决定。每个三角面需占用大约100字节的内存。但是,OpticStudio通常会同时保留多份镜头数据的副本,因此,一个好的经验法则是,OpticStudio需要为每个三角面保留500字节的RAM。一个有2000个三角面的物体需要大约1Mb的可用RAM。另一个更实际的限制是计算机速度;如果三角面的数量变得很大,OpticStudio的速度将显著降低。
POB文件示例
以下是定义立方体折射材料的POB完整文本文件。文件包含在示例
CUBE.POB中。立方体的所有8个面都属于面0。
! A cube ! front face vertices V 1 -1 -1 0 V 2 1 -1 0 V 3 1 1 0 V 4 -1 1 0 ! back face vertices V 5 -1 -1 2 V 6 1 -1 2 V 7 1 1 2 V 8 -1 1 2 ! Front R 1 2 3 4 0 0 ! Back R 5 6 7 8 0 0 ! Top R 4 3 7 8 0 0 ! Bottom R 1 2 6 5 0 0 ! Left side R 1 4 8 5 0 0 ! Right side R 2 3 7 6 0 0
8个"V"命令定义了立方体的8个顶角的顶点坐标。6个"R"命令定义了立方体的6个面。注意,面的宽度为2个单位,且将后表面顶点的z坐标定义为2个单位;因此,形状是一个非常完美的立方体。所有坐标都相对于物体参考点定义;在本例中,参考点是前表面的几何中心。如果将参考点设置在立方体的中心,应将顶点定义更改为:
V 1 -1 -1 -1
V 2 1 -1 -1
V 3 1 1 -1
V 4 -1 1 -1
V 5 -1 -1 1
V 6 1 -1 1
V 7 1 1 1
V 8 -1 1 1
有关更多示例,请参阅<objects>\Polygon Objects文件夹(参阅"文件夹(Folders)")中由OpticStudio提供的POB文件。
下一部分: