指定给向量数组属性分量

 
 
 

表达式既不可以读取也不可以指定向量或向量数组属性分量。以下示例将介绍一项用于解除该限制的技术。有关使用颜色属性的详细信息,请参见使用颜色

示例

假定您有一个“云”(Cloud),其中包含 100 个粒子并对它们随机定位。启用“着色 > 对所有项目进行平滑着色处理”(Shading > Smooth Shade All),添加一个针对每个粒子的“rgbPP”属性。然后输入以下创建表达式:

CloudShape.position = sphrand(1);
vector $pos = CloudShape.position;
CloudShape.rgbPP = <<0,$pos.y,0>>;

将为“云”(Cloud)中的每个粒子执行一次以上三条语句。

第一条语句在半径为 1 的球形区域中为粒子提供了一个随机位置。sphrand (1) 函数为 X、Y 和 Z 位置分量提供了一个介于 -1 和 1 之间的值。

第二条语句将粒子的位置指定给向量分量 $pos。

第三条语句将 RGB 颜色指定给粒子的“rgbPP”属性。

CloudShape.rgbPP 的左侧、中间和右侧的向量分量表示 RGB 颜色方案的红色、绿色和蓝色分量。因此,第三条语句将 0(无颜色)指定给粒子的 colorRGB 的红色和蓝色分量。它为粒子的绿色分量提供其 Y 坐标位置的值。

因为值 0 或更小值会导致 0 绿色值,所以位于 XZ 平面以下的粒子为黑色。如果粒子的 Y 坐标位置位于 XZ 平面上方,则它将有一个绿色分量,该分量在从几乎为 0 到完全饱和的绿色之间变化。

这将根据粒子的位置在黑色到绿色范围内为粒子着色。

示例

particleShape1.rgbPP = <<1,0,CloudShape.position.z>>;

这将导致一个错误。Maya 将 CloudShape.position.z 解释为名为 CloudShape.position 的对象的名为 z 的属性。

您可以使用下列语句获得预期的结果:

vector $temp = CloudShape.position;
particleShape1.rgbPP = <<1,0,$temp.z>>;

第一条语句读取向量属性 CloudShape.position 的所有三个分量并将该属性指定给向量变量 $temp。第二条语句读取 $temp 的右侧分量的值,它包含 CloudShape.position 的右侧分量。然后,将该分量指定给 particleShape1.rgbPP 的右侧分量。

示例

particleShape1.rgbPP.y = 1;

这也将导致一个错误。您不能将值指定给向量数组属性分量。