一世
数组修饰符
数组是多维值类型,可以将多个值存储在一个值中。它们可以采用以下支持的任何值类型Modo,例如整数,浮点数和矩阵。但是,数组中的所有值都应为同一类型。
您可以创建复杂的数组层次结构,每个数组可以存储不同的值类型。例如,您可以有一个存储其他三个数组的数组:一个包含整数的数组,另一个包含浮点数的数组,以及另一个包含字符串的数组。
评估数组时,它们的行为类似于任何其他通道类型。它们是通过对数据集进行采样,使用修饰符进行操作以及各种操作(例如过程建模系统)使用来构造的。
您可以使用数组修饰符来生成,合并,混合,对数组排序等。向原理图添加修改器时,其某些通道在节点上公开。您可以打开Channels右侧面板上的视口,如果需要,将其他通道拖动到节点上。它们中的大多数还具有可以在右侧的“属性”面板中编辑的属性。
注意: 有关使用Channels视口,请参阅通道视口。
阵列混合
数组混合修改器在两个输入值之间进行插值,并生成一个输出数组,该数组包含在指定的步骤数中从第一个值到最后一个值混合的值。例如,如果输入值为0.0和1.0,步数为5,则输出数组包含0.0、0.25、0.5、0.75、1.0。
注意: 只有支持Value Math的值类型才能正确插值,其他任何值类型都将从第一个值步进到第二个值。
以下示例采用了两个定位器的世界位置(Locator A和Locator B)创建输出数组。的Count属性设置为10,因此修改器在定位器之间创建了八个附加点。
然后,这些点将由创建多边形产生曲线的节点:
数组混合修改器具有以下通道和属性:
Channels on the Node by Default | |
Input A/B |
要混合的值。 |
Array |
输出数组。 |
Properties Panel | |
Count |
指定在输出数组中生成的值的数量。对于支持值数学接口的值,将对这些步骤进行插值以在两个输入之间进行混合。 |
Interpolation |
允许您使用渐变编辑器重新映射插值。在第一个值和最后一个值之间的固定样本处插入0.0到1.0之间的线梯度。更改形状可以控制样品的分布。 |
数组数
Array Count修饰符返回数组中元素的数量。在下面的示例中,“数组计数”输出由数组生成的数组中元素的数量。 数组修饰符修饰符。
计数显示在Channels右侧的视口何时Locators to Array在原理图中选择。当您需要了解装备的其他方面的元素数量时,阵列计数可能会很有用。例如,如果您想使用径向阵列,您可以连接Helix Generator节点的Count的价值Count渠道。
数组计数修改器具有以下通道:
Channels on the Node by Default | |
Array |
数组通道,用于计算其中的元素数量。 |
Count |
数组中元素的数量。 |
数组元素按索引
按索引排列元素允许您使用索引访问数组中的元素。例如,如果数组包含值“ I”,“ Love”和“Modo“,访问索引0返回” I“,索引1的元素返回” Love“,索引2返回” Modo ”。如果指定的索引超出范围,它将返回存储在数组中的最后一个元素。然后,您可以使用该元素来驱动场景中的其他内容。
下例显示了使用两个定位器位置生成的数组数组修饰符。然后使用按索引排列的元素来驱动球体的位置。当您更改Index的价值Array Element by Index中的节点Properties在右侧面板上,球体将移动到3D视口中的相应位置。
由于数组通道可以存储任何值类型,因此输出通道会尝试自动转换为其所连接的通道类型。
按索引排列的元素具有以下通道:
Channels on the Node by Default | |
Array |
输入数组通道,其中包含通过索引访问的元素。 |
Index |
要从数组中读取的元素的索引。 |
Output |
数组中的元素,由索引访问。 |
数组元素类型
数组元素类型修饰符返回数组中存储的数据类型。输出值是值类型的内部名称,例如Matrix通道的“ matrix4”。这对于调试目的很有用。
数组元素类型具有以下通道:
Channels on the Node by Default | |
Array |
用于评估其包含的值类型的输入数组。 |
Index |
数组中值类型的名称。如果数组为空,则输出值为空,否则它包含值类型的内部名称。 |
数组运算符
使用“数组运算符”修改器可以访问数组中的各个元素,并使用装备修改它们。对于输入数组中的每个元素,都会对装备进行评估,计算出一个输出值,然后将其写回到数组中。
在下面的示例中,从曲线生成的数组是Input对于数组运算符。然后将数组中的每个元素乘以0.5,并馈入矩阵撰写节点。的Output然后从Matrix Compose连接到Element数组运算符的通道。在3D视口中以螺旋形状创建新的定位器,然后将其用于其他操作,例如创建多边形。
数组运算符具有以下通道:
Channels on the Node by Default | |
Input |
要修改的输入数组。 |
Output |
修改后的输出数组。 |
Additional Channels | |
Element |
评估装备的数组中的当前输出元素。可以读取以获取当前数组元素值。 |
Index |
要为其评估装备的数组中当前元素的索引。 |
Element | 要为其评估装备的数组中的当前输入元素。可以驱动它来设置当前数组元素的值。 |
Remove Element | 指定是否应删除数组中的元素。可以驱动它删除数组元素。 |
曲线到阵列
“曲线到数组”修改器沿其长度对曲线的不同属性进行采样,并根据数据生成数组。
任何提供“曲线组”通道的项目类型都可以连接到“曲线到阵列”修改器,但是最常见的连接是包含曲线的网格项目。如果连接了多条曲线,则阵列将为每个曲线包含一个子阵列,曲线样本存储在该子阵列中。
修改器可以采样四种不同的曲线属性类型:
• Percentage -存储每个样品沿曲线的百分比。例如,如果曲线在0.0到1.0之间采样了3次,则存储在Percentage是0.0、0.5和1.0。
• Position -存储沿曲线的每个样本的世界位置。
• Tangent -在采样位置存储代表曲线方向的归一化向量。向量相对于世界中心,并存储曲线的方向。
• Local Tangent -在被采样的位置与被采样的位置结合起来存储代表曲线方向的归一化矢量。
然后可以将生成的数组用于其他操作,例如创建多边形。
曲线到阵列具有以下通道和属性:
Channels on the Node by Default | |
Curves | 用于生成数组的输入曲线。 |
Output |
sampled属性的数组。如果采样了多条曲线,则阵列将包含每个采样曲线的子阵列。 |
Properties Panel | |
Index |
允许您过滤要采样的输入曲线的整数范围。它可以是单个整数,用于指定单个输入曲线,数字范围,逗号分隔的列表或组合。如果该值为空或包含“ ...”,则将采样所有曲线。 |
Property Type |
指定要采样的属性。提供以下选项: • Percentage -存储每个样品沿曲线的百分比。例如,如果曲线在0.0到1.0之间采样了3次,则存储在Percentage是0.0、0.5和1.0。 • Position (默认)-存储沿曲线的每个样本的世界位置。 • Tangent -在采样位置存储代表曲线方向的归一化向量。向量相对于世界中心,并存储曲线的方向。 • Local Tangent -在被采样的位置与被采样的位置结合起来存储代表曲线方向的归一化矢量。 |
Start/End |
默认情况下,从开始到结束评估曲线。这些字段指定曲线的起点和终点。 |
Steps |
指定沿采样曲线的步数。 |
Sampling Method |
指定走曲线进行采样的方法。 • Fraction -将曲线分成相等的长度。 • Parameter -使用基于曲线段的划分,在曲线方向变化更快的地方添加更多样本。 |
Sample Distribution Rate |
控制沿曲线长度分布的样本的梯度。默认情况下,线性梯度将样本沿曲线的长度放置在相等的距离处。缓和梯度的缓和将大多数样本放置在曲线的起点附近,缓和梯度的缓和将大多数样本放置在曲线的终点附近。属性中的迷你渐变编辑器可用于定义自定义渐变。 |
过滤阵列
“过滤器数组”修改器过滤输入数组,仅在匹配过滤器时将元素从输入数组写入输出数组。过滤器由整数范围指定,但也可以由模式驱动。
要指定过滤器,请选择Filter Array节点和Properties在右侧的Int Range领域。
例如,以下装备将从曲线生成阵列。然后对数组进行过滤,“创建多边形”网格操作仅使用位置20至45来创建另一条曲线。
筛选器数组具有以下通道和属性:
Channels on the Node by Default | |
Array | 要过滤的输入数组。 |
Output | 过滤后的输出数组。 |
Properties Panel | |
Int Range | 用于过滤的整数范围。仅将数组中与整数范围内的索引匹配的元素写入输出数组。 |
数组定位器
Locator to Array修饰符读取Locator类型的项目变换成一个数组,创建一个Matrix值数组。修改器有两种模式:
• Single -随时间从单个定位器读取数据。
• Multiple -在当前评估时间从多个定位器读取数据。
修改器上的图形输入允许连接多个定位器类型的项目。此连接允许连接具有3D变换的任何项目,例如相机,灯光或网格。
在以下示例中,四个定位器连接到数组修饰符节点。
然后将“定位器到数组”节点连接到“创建多边形”节点,该节点使用定位器位置创建多边形。
数组的定位器具有以下通道和属性:
Channels on the Node by Default | |
Locators | 用于生成数组的定位器。 |
Output |
生成的Matrix值类型数组。 |
Properties Panel | |
Mode |
定位符到数组修改器有两种模式: • Single -随着时间的推移读取单个定位器 • Multiple -在评估时读取多个定位器。 |
Index |
什么时候Mode设定为Single并且多个定位器连接到修改器,这使定位器可以求值。如果索引超出范围,则该数组为空。 |
Start Time |
什么时候Mode设定为Single,随着时间的推移将读取输入定位器转换,并在每帧中输入数组的条目。该通道指定开始对变换进行采样的第一帧。 |
End Time |
什么时候Mode设定为Single,此通道指定对变换进行采样的最后一帧。 |
Output |
生成的Matrix值类型数组。 |
合并阵列
合并数组修改器将两个数组合并为一个数组。它可以通过两种方式运行:
• Group -将两个输入数组分组为另一个数组中的各个子元素。
• Join -将第二个数组中的元素添加到第一个数组的末尾。
您可以设置Mode对于中的合并操作Properties右侧的面板。
注意: 存储在两个阵列中的数据类型必须相同或彼此兼容。如果两个数组包含不同的类型,则将转换其中一种类型,以使值类型匹配。如果这两种值类型都不能转换,则合并操作无法完成。
在此示例中,两个数组合并以创建一个用于“创建多边形”操作的数组。
数组的定位器具有以下通道和属性:
Channels on the Node by Default | |
Array A/B |
要合并的输入数组。 |
Output |
合并的输出数组。 |
Properties Panel | |
Mode |
控制两个数组的合并方式。 • 组-将两个输入数组添加为另一个数组中的单个子元素。 • 连接-将元素从第二个数组添加到第一个数组的末尾。 |
网格数据数组
“网格数据阵列”修改器从连接的网格和网格实例创建法线和位置阵列。它具有四种用于构建数组的模式:
• Selection Set -使用设置的标签名称,为每个连续的元素组生成一个位置和法线。启用Per Element为每个单独的元素而不是每个连续元素组创建法线和位置。
• Items -在每个项目的位置创建一个位置,并使用该项目的X,Y或Z方向创建法线。
• Materials -为每个网格中每种材料中的多边形创建一个位置和法线。
• Mesh Part -每个网格中连接的几何图形的每个块都会在数组中创建位置和法线。
在下面的示例中,“网格数据数组”采用其中包含四个圆锥的网格。每个圆锥的顶部顶点是称为a。在“网格数据数组”的属性中, Mode设定为Selection Set,并且将a指定为Selection Set。根据选择集中元素的位置创建一个数组。“创建多边形”网格操作使用此数组来生成曲线。
网格数据数组具有以下通道和属性:
Channels on the Node by Default | |
Items |
用于创建数组的网格。 |
Position Array |
从位置生成的数组。 |
Normal Array |
从法线生成的数组。 |
Properties Panel | |
Mode |
修饰符生成数组的方式。提供以下选项: • Selection Set -使用设置的标签名称,为每个连续的元素组生成一个位置和法线。启用Per Element为每个单独的元素而不是每个连续元素组创建法线和位置。 • Items -在每个项目的位置创建一个位置,并使用该项目的X,Y或Z方向创建法线。 • Materials -为每个网格中每种材料中的多边形创建一个位置和法线。 • Mesh Part -每个网格中连接的几何图形的每个块都会在数组中创建位置和法线。 |
Per Element |
启用后,将为每个元素分别创建数组值。禁用后,将为每个连续的几何图形创建数组值。 |
Selection Set |
什么时候Mode设定为Selection Set,这指定要使用的选择集。 |
Item Axis |
当“模式”设置为“项目”时,这将指定要使用的项目轴。 |
偏移阵列
“偏移数组”修改器将数组中的元素向前或向后移动指定的偏移量。从数组末尾推出的元素会重新插入开头。
偏移数组具有以下通道和属性:
Channels on the Node by Default | |
Array | 输入数组要偏移。 |
Output | 偏移量输出数组。 |
Properties Panel | |
Offset | 要抵消的元素数。正值使元素向前移动,负值使元素向后移动。 |
粒子阵列
“粒子到阵列”修改器对粒子模拟或静态粒子源进行采样,并将指定的粒子特征读取到阵列中。您可以读取当前时间的多个粒子,也可以读取指定时间段内的多个粒子。
在单个时间范围内读取粒子时,输出数组将包含采样的粒子特征。当随时间读取粒子时,输出数组将包含子数组,每个子数组都包含在时间步长采样的粒子。
注意: 随着时间的推移读取许多粒子需要大量的内存,并可能导致性能问题。
下面的示例显示了一个带有Surface Generator的平面,该表面生成器在该平面上创建了粒子。平面变换通过空间进行动画处理。“要阵列的粒子”修改器会在每个时间步对粒子进行采样,然后“创建多边形”网格操作会生成跟踪粒子轨迹的曲线。
粒子到阵列具有以下通道和属性:
Channels on the Node by Default | |
Particle Source | 用于生成数组的粒子源。 |
Array | 包含采样粒子特征的数组。 |
Properties Panel | |
Start Time/End Time | 在多个时间步长上采样粒子时,这指定了开始和结束采样的时间。 |
Feature | 指定要采样到阵列中的粒子特征。数组中存储的子类型将随着功能的变化而变化。 “粒子到阵列”修改器上支持的功能包括: • ID -浮动 • Position -Distance3(矢量) • Velocity -Float3(矢量) • Force -Float3(矢量) • Mass -质量 • Age -浮动 • Angular Velocity -Float3(矢量) • Torque -Float3(矢量) • Size -浮动 • Transform -Matrix3 |
Mode | 指定是在单个时间步还是在多个帧上对粒子采样。 |
排序数组
Sort Array修饰符使用根据输入顺序排序的输入数组的元素创建一个新数组。 Sorting Order渠道。order数组的长度不需要与输入数组匹配,并且可以包含多个元素。例如,如果输入数组包含字母,例如order数组中的“ a,b,c,d”,则“ 1”将输出“ a”,“ 2”将生成“ b”,“ 3”将输出“ c”,依此类推。将订单数组设置为“ 4、3、1”将产生数组“ d,c,a”。
您可以使用Sorting Tool:
1. | 选择Sort Array节点,然后在Properties在右边,单击Sorting Tool。 |
2. | 这将在3D视图中创建点,您可以单击这些点来设置输出阵列顺序。 |
3. | 单击要排序的点。 |
将新索引分配给与您单击它们的顺序相对应的点。您连接到排序数组的任何操作Output Array频道将使用新排序的数组。
注意: 您还可以使用String to Array修饰符来驱动Sorting Order渠道。
排序数组具有以下通道:
Channels on the Node by Default | |
Input Array |
要排序的输入数组。 |
Sorting Order |
您希望元素在数组中的顺序。使用Sorting Tool在修饰符的Properties面板以指定顺序。 |
Output Array |
排序后的输出数组。 |
Additional Channels |
|
Layered Array |
一个True / False值,用于告诉您输入数组是否包含任何子数组。 |
Data Type |
显示存储在输入数组中的数据类型。 |
字符串到数组
“字符串到数组”修饰符将字符串通道转换为数组,并具有按单词,字母或自定义分隔符分隔字符串的选项。
设置修饰符如何拆分数组。去做这个:
1. | 选择“字符串到数组节点”以在右侧面板上打开其属性。 |
2. | 设置Separator选项。您可以从以下选项中进行选择: |
• None -字符串未拆分。而是创建一个包含整个字符串作为第一个值的数组。
• Character -在任何时间使用字符分割字符串Modo遇到字符串中的字符,新条目将添加到数组中。例如,如果输入字符串是“ / some / file path / file name.ext”,而指定的字符是“ /”,则输出数组将是(“ some”,“ file path”,“ file name.ext ”)。
注意: 分隔符只能是单个字符,不能是多个字符的字符串。
• Letter -字符串在每个字母后分割。例如,如果字符串是“ file name.ext”,则输出数组将为(“ f”,“ i”,“ l”,“ e”,“,”,“ n”,“ a”,“ m” ,“ e”,“。”,“ e”,“ x”,“ t”)。
• Word -使用空格字符作为分割字符,在每个单词之后分割字符串。例如,如果输入字符串是“ / some / file path / file name.ext”,则输出数组将是(“ /some/file”、“path/file”、“name.ext”)。
字符串到数组具有以下通道和属性:
Channels on the Node by Default | |
String |
用于生成数组的字符串输入。 |
Array |
从字符串生成的数组。 |
Properties Panel | |
Separator |
控制使用什么元素来分割字符串。提供以下选项: • None -字符串未拆分。而是创建一个包含整个字符串作为第一个值的数组。 • Character -在任何时间使用字符分割字符串Modo遇到字符串中的字符,新条目将添加到数组中。例如,如果输入字符串是“ / some / file path / file name.ext”,而指定的字符是“ /”,则输出数组将是(“ some”,“ file path”,“ file name.ext ”)。 • Letter -字符串在每个字母后分割。例如,如果字符串是“ file name.ext”,则输出数组将为(“ f”,“ i”,“ l”,“ e”,“,”,“ n”,“ a”,“ m” ,“ e”,“。”,“ e”,“ x”,“ t”)。 • Word -使用空格字符作为分割字符,在每个单词之后分割字符串。例如,如果输入字符串是“ / some / file path / file name.ext”,则输出数组将是(“ /some/file”、“path/file”、“name.ext”)。 |
Character |
什么时候Separator设定为Character,指定要使用的字符。 |