阵列(非序列模式几何物体)(Array (non-sequential geometry objects))

这个物体是相同物体的集合,基于单个"父"物体,沿着三维阵列排列。每个阵列元件与父物体的功能相同,就像一个父物体的副本放在每个阵列位置上。阵列的3个轴不需要正交,可以由用户自定义,请参阅下面的详述。与使用复制工具创建的等效系统(请参见"阵列物体(Replicate Object)")或者使用由小透镜1和小透镜2物体支持的类似物体阵列相比,阵列物体一般追迹速度更快,内存效率也更高。阵列物体由以下参数定义:
| 参数# | 描述 | 面名称 | 面# |
| 1 | 父物体#。在NSC编辑器中,父物体必须在阵列物体之前。 | NA | NA |
| 2-4 | X’、Y’和 Z’方向的阵列元件数 | NA | NA |
| 5-7 | X’、Y’和 Z’方向的元件间距,以镜头单位表示。有关非均匀间距的信息,请参阅其详述。 | NA | NA |
| 8-10 | 阵列的X’轴方向余弦。 | NA | NA |
| 11-13 | 阵列的Y’轴方向余弦。 | NA | NA |
| 14-16 | 阵列的Z’轴方向余弦。 | NA | NA |
| 17-19 | 元件绕X、Y和Z方向倾斜,以度为单位。注意,这些倾斜是绕"法线"局部X、Y和Z轴倾斜,而不是用户自定义X’、Y’和Z’轴。 | NA | NA |
| 20 |
绘制极限。如果每个方向的元件数量乘积(Nx x Ny x Nz)超过绘制极值,则将不会绘制单独的阵列元件。取而代之的是,将绘制一个接近阵列大小的简单框。此功能主要用于在元件数量很大时,加快阵列物体的渲染速度。 请注意,边界框的大小基于阵列元件之间的距离以及封装阵列父物体的球面半径。在父物体高度不对称(例如,长而薄)的情况下,封装球面的半径可能非常大,由此产生的边界框尺寸可能远大于物理阵列的实际尺寸。 |
NA | NA |
| 21 | 绘制边界 | NA | NA |
| 22-30 | 非线性间距系数,请参阅下面的详述。 | NA | NA |
| 31-33 | X’、Y’和Z’方向的最大阵列尺寸。这些值不是由用户设置的。而是在间距系数和定义的元件数目的基础上计算出来的。当优化非线性间距系数时,可能会使用优化操作数NPGT、NPLT和NPVA限制阵列的整体尺寸。这些参数值中指出的最大尺寸是在每个方向上从第一个阵列元件到最后一个阵列元件的中心之间的间距,不考虑单个阵列元件的尺寸大小。 | NA | NA |
父物体可以是任意的物体类型,除了光源、探测器或其它阵列物体。如果勾选了父物体的"物体作为探测器(Object Is A Detector)"复选框,则在阵列元件中将忽略这一属性。要创建光源阵列,请参阅"物体属性(Object Properties)"中的"光源(Sources)"设置。
原则上,在三个方向的阵列元件的个数可以是任何数量,但是非常大的阵列可能需要大量的计算时间或计算机内存去完成光线追迹或渲染(有关消除渲染大阵列的设置,请参阅参数20和21)。
阵列元件在一个三维的网格上排列,其中网格的轴不必是通常的正交XYZ轴。X'、Y' 和Z’轴默认为法线正交局部坐标轴方向,但是可以通过指定的这些轴的方向余弦来定义轴的任何非平行方向。元件的阵列位置是用参数ijk(i表示X’、j表示Y’、k表示Z’)并根据以下表达式计算得到:
其中,

Xx、Xy、Xz值是定义X’轴(参数8、9和10)的余弦,Y’和Z’也以同样的方式定义,Δ1值是沿轴向的元件间距(参数5、6和7)。请注意,方向余弦向量一般会自动归一化。一旦阵列元件被定位,即可执行关于X、Y和Z轴的局部旋转,方法与通常的坐标旋转相同(参阅"放置物体(Object Placement)")。
三个方向上的Δ1值用来定义元件阵列的均匀间距。然而也可以利用参数22-30来定义非均匀间距。沿X’方向的阵列元件的位置通常被定义为:
其中,Δ1为均匀间距(X’、Y’和Z’方向分别由参数5、6、7定义),参数"i"从0变化到nx-1(nx为X’方向上的元件数量),系数Δk是以镜头单位测量的第k阶项。如果任何一个Δk系数都不为零,则阵列间距是非均匀的。Y’和Z’方向上也有类似的表达式和系数集。任何两个相邻元件之间的净间距不能为负。注意,非线性系数的定义必须使得元件之间的间距不能改变符号,因为符号的更改可能会使阵列向后翻转折叠。
阵列物体的大部分属性可以用父物体定义。例外是可以使用"光线忽略此物体(Rays Ignore This Object)"和"不绘制物体(Do Not Draw Object)"设置来区分阵列物体和父物体。所有其它属性,包括表面定义、材料、膜层、散射、衍射或渐变折射率属性,与父物体的定义相同,阵列物体的设置将会被忽略。如果不需要父物体,可使用父物体上的"光线忽略这个物体"和"不绘制物体"设置(参阅"类型选项卡(Type tab)"和"绘制选项卡(Draw tab)")完成操作。即使不绘制父物体或不追迹光线,阵列物体仍然会被创建并被光线追迹。注意,光线到达一个阵列物体时将报告到达的父物体编号,而不是阵列物体编号。因此,当用ZRD文件、优化操作数或者过滤字符串时,用来参考光线数据的物体编号应该是父物体编号。
在其它物体内部或外部嵌套阵列物体时,可应用常用嵌套规则。有关更多信息请参阅"嵌套物体(Nesting volumes)"。但是,在NSC编辑器中放置的是父物体,而不是阵列物体,这就决定了该如何使用嵌套规则。具体而言,如果将某阵列物体嵌套到另一个外部物体的内部,则在编辑器中,父物体必须在此外部物体之后。
下一部分: