每粒子属性包含每个对象粒子的属性值。例如,“rgbPP”属性包含每个粒子的“rgbPP”值的值。
每个粒子都具有唯一的数值粒子标识符。粒子的标识符存储在粒子对象的每粒子“particleId”属性中。创建粒子对象的粒子时,Maya 按连续顺序(从 0 开始)为每个粒子指定 particleId。
例如,假设通过单击工作区中的位置来使用“粒子工具”(Particle tool)创建五粒子对象。第一次单击鼠标会创建 particleId 为 0 的粒子,第二次单击时会创建 particleId 为 1 的粒子,第三次单击时会创建 particleId 为 2 的粒子,以此类推。
发射器发射粒子时,Maya 按连续顺序(从第一个发射的粒子开始)指定 particleId 编号。第一个发射的粒子的 particleId 为 0,第二个发射的粒子的 particleId 为 1,第三个发射的粒子的 particleId 为 2,以此类推。
可以使用 particleId 属性将每粒子属性值指定给特定粒子。
假设您已使用“粒子工具”(Particle tool)创建 9 个粒子的栅格,名为“ColorGrid”。在“属性编辑器”(Attribute Editor)中,您已将粒子的“粒子渲染类型”(Particle Render Type)设定为“球体”(Spheres)。您已选择“着色 > 对所有项目进行平滑着色处理”(Shading > Smooth Shade All)来显示着色的粒子。
您可以根据它们的 particleId 为粒子设置不同的颜色。
若要根据 particleId 设置粒子的颜色,请执行下列操作:
该操作会添加名为“rgbPP”的每粒子属性,控制每个粒子的红、绿和蓝颜色方案。
未选择粒子时,这些粒子会在您添加“rgbPP”属性之后变为黑色。添加 rgbPP 属性会禁用粒子的默认颜色,并为它们赋值 <<0,0,0>>。
if (particleId <= 2) rgbPP = <<1,0,0>>; else if ((particleId > 2) && (particleId < 6)) rgbPP = <<1,1,1>>; else rgbPP = <<0,0,1>>;
创建表达式在回放动画时执行。粒子尚未显示颜色指定。“数值”(Numeric)“粒子渲染类型”(particle render type)会忽略指定给“rgbPP”的颜色。
表达式的第一个语句指定 particleId 小于或等于 2 的所有粒子为红色。在 RGB 颜色方案中,值 <<1,0,0>> 为红色。
第二个语句指定 particleId 大于 2 且小于 6 的所有粒子为白色。在 RGB 颜色方案中,值 <<1,1,1>> 为白色。
第三个语句指定不满足以上两个语句条件的所有粒子为蓝色。也就是说,particleId 大于或等于 6 的所有粒子变为蓝色。在 RGB 颜色方案中,值 <<0,0,1>> 为蓝色。
若要将一半粒子的颜色设置为红色,另一半粒子的颜色设置为蓝色,请执行以下操作:
if ((particleId % 2) == 0) rgbPP = <<1,0,0>>; else rgbPP = <<0,0,1>>;
运行时表达式在播放动画时执行每个帧。particleId 为偶数的粒子为红色。particleId 为奇数的粒子为蓝色。
第一个语句使用模除运算符 (%) 计算 particleId 除以 2 的余数。然后,将余数和 0 进行比较。如果余数等于 0,那么语句指定粒子为红色。值 <<1,0,0>> 为红色。
如果模除操作的余数不等于 0,那么第二个语句指定粒子为蓝色。值 <<0,0,1>> 为蓝色。例如,particleId 0 除以 2 等于 0,余数为 0。由于余数为 0,因此 particleId 为 0 的粒子接收红色。
particleId 1 除以 2 等于 0,余数为 1。由于余数为 1,因此 particleId 为 1 的粒子接收蓝色。
particleId 2 除以 2 等于 1,余数为 0。由于余数为 0,因此 particleId 为 1 的粒子接收蓝色。对对象中的每个粒子执行该表达式。