使用“离散化器”使浮点或整数值更加离散,从而将大范围的值降低为更易管理的子集,但会降低一定的准确性。这有助于“图形控制”子操作符的输入数据的潜在优化,也可用于其他目的。
离散基于两个值:基准和步长。对于每个传入的值,步长值乘以正整数或负整数,然后添加到基准值,以使结果尽可能接近输入值;然后将输入值四舍五入为该值。使用基准“b”和步长“s”时,子操作符可能的输出值为 b、b+s、b–s、b+2s、b–2s、b+3s、b–3s 等等。
将传入值四舍五入为最接近的离散值。如果传入值正好位于离散值之间,则将其四舍五入为下一个最高值。例如,基准为 0,步长为 1,输入值 1.5 将输出为 2,输入值 –1.5 将变为 –1。
可以在附带的文件 GridAndShapeControl.max 中查找离散化器用法的示例。流包含 10,000 个以上的粒子且并入了两个“数据”操作符(开始时均已禁用)。
第一个“数据”操作符不使用离散化器;将其启用并记录计算所有粒子的几何图形所需的时间。该过程即使在运行较快的计算机上也很慢。
下一步,禁用第一个“数据”操作符并启用第二个“数据”操作符。它在数据流中使用离散化器,并且在生成粒子图形时运行速度很快。这是因为操作符将传入数据流离散了 1 度步长。在第一种情况下,将单独计算每个粒子的图形。在第二种情况下,由于已将值捕捉到整个角度,一组可能的值将显著减少。由于“离散优化”位于第二个“数据”操作符中的“图形控制”子操作符中,因此将最多为 360 个粒子生成图形;这是在步长 1 度的情况下不同角度值的最大可能数量,然后将在粒子之间共享这些图形。肉眼无法区分这两种情况,但是第二种情况运行速度较快。
因此,“离散化器”子操作符是“图形控制”子操作符的有效优化工具。