使用渐变纹理设定粒子属性
 
 
 

渐变纹理是 2D 纹理,其中颜色或灰度值在图像范围内由一个值更改为另一个值。您可以使用渐变控制每粒子属性作为粒子年龄。还可以将渐变纹理连接到粒子的任何其他每粒子属性。通常,使用具有“rgbPP”“opacityPP”“radiusPP”属性的渐变纹理。对于大多数每粒子属性,在使用渐变控制其值之前,必须将该属性添加到粒子对象中。

注意

若要在滴状曲面粒子对象的寿命期间设定它的颜色、透明度或白炽度,请参见使用粒子采样器信息节点的示例

使用颜色渐变

您可以使用颜色渐变将向量数组(每粒子)属性更改为粒子年龄。在为向量数组(每粒子)属性创建渐变时,会将该属性连接到颜色渐变。

有关渐变属性的信息,请参见渐变

使用颜色渐变

  1. 选择粒子对象。
  2. 打开“属性编辑器”(Attribute Editor)“每粒子(数组)属性”(Per Particle (Array) Attributes)部分,然后在所需的属性上单击鼠标右键并选择“创建渐变”(Create Ramp)
    注意要控制位置、速度或加速度,请在“rampPosition”“rampVelocity”“rampAcceleration”属性框上单击鼠标右键,然后选择“创建渐变”(Create Ramp)。不能直接对位置、速度或加速度使用渐变。

    如果使用渐变和表达式来设定位置、速度或加速度,那么渐变会在表达式控制帧中的值之前设定值

    “rampPosition”“rampVelocity”“rampAcceleration”只能接收来自渐变的输入。对于每个帧,Maya 先计算渐变属性,然后根据渐变属性中的任意值计算动力学。

    这样会创建控制属性作为粒子年龄的默认渐变。

  3. “属性编辑器”(Attribute Editor)“寿命属性”(Lifespan Attributes)部分,将“寿命模式”(Lifespan Mode)设定为“恒定”(Constant),将“寿命”(Lifespan)设定为希望粒子存在于动画中的秒数。
  4. “属性编辑器”(Attribute Editor)“每粒子(数组)属性”(Per Particle (Array) Attributes)部分,在刚为其创建渐变的属性框上单击鼠标右键,然后选择“arrayMappern.outColorPP > 编辑渐变”(arrayMappern.outColorPP > Edit Ramp)

    “属性编辑器”(Attribute Editor)显示控制属性的默认颜色渐变。在粒子的整个寿命中,将该属性的三个组件值设定为渐变垂直组件 (V) 的 RGB 值。在寿命的开始阶段使用渐变底部的值,在寿命的结束阶段使用渐变顶部的值。

    默认情况下,在每个粒子寿命的开始阶段,属性的左侧、中间和右侧向量组件等于 1、0、0,这是因为渐变底部的 RGB 值为红色 (1, 0, 0)。

    在寿命的中间阶段,向量组件等于 0、1、0,因为 RGB 值为绿色 (0, 1, 0)。在寿命的结束阶段,向量组件等于 0、0、1,因为 RGB 值为蓝色 (0, 0, 1)。Maya 对这三个点之间的向量组件插值。

  5. 根据需要编辑渐变的 RGB 颜色值(有关详细信息,请参见“渲染”)。

    在编辑渐变值时,可以在“颜色编辑器”(Color Editor)中将任何数值用于 R、G 和 B。虽然 0 到 1 范围之外的值有效,但是它们在“纹理示例”(Texture Sample)样例的显示中不存在任何有意义的等效颜色。不要编辑 HSV 值,否则将有可能得到不正确的结果。

    样例中的颜色需要代表属性组件值的属性包括“rgbPP”“incandescencePP”。对于不具有等效颜色的其他属性,可以通过在 R、G 和 B 框中输入值(而不是直接单击颜色),在“颜色编辑器”(Color Editor)中编辑颜色值。

    例如,通过将渐变中相应点的 R、G 和 B 值设定为 100、0、0,您可以在“寿命”(lifespan)中的某点将“rampAcceleration”设定为 100、0、0。这些值会在等于 1、0、0 的渐变中创建红色。但是,将使用 100、0、0(而不是 1、0、0)对样例中的相邻点插值。

    还可以通过更改“属性编辑器”(Attribute Editor)中的其他渐变属性(例如,“噪波”(Noise)“噪波频率”(Noise Frequency))来更改颜色序列。有关渐变属性的详细信息,请参见“渲染”。

    请记住,默认情况下,渐变的水平组件 (U) 对属性没有任何影响。更准确地说,渐变的控制组件是“属性编辑器”(Attribute Editor)“纹理示例”(Texture Sample)最左边的垂直边。要使用水平组件,请参见使用渐变自定义每粒子属性控制

    应用于已发射粒子的默认渐变示例如下所示:

使用灰度渐变

您可以使用灰度渐变来更改浮点数组属性作为粒子年龄。为浮点数组(每粒子)属性创建渐变时,会将该属性连接到灰度渐变。在灰度渐变中,黑色代表值为 0,白色代表值为 1。

有关高级渐变功能的信息,请参见手册中的“着色”部分的下列主题

使用灰度渐变

  1. 选择粒子对象。
  2. 打开“属性编辑器”(Attribute Editor)“每粒子(数组)属性”(Per Particle (Array) Attributes)部分,然后在所需的属性上单击鼠标右键并选择“创建渐变”(Create Ramp)

    该操作会创建控制属性作为粒子年龄的默认渐变。

  3. “属性编辑器”(Attribute Editor)“寿命属性”(Lifespan Attributes)部分,将“寿命模式”(Lifespan Mode)设定为“恒定”(Constant),将“寿命”(Lifespan)设定为希望粒子存在于动画中的秒数。

    如果正在使用 emitterNameRatePP,则将“寿命”(Lifespan)设定为希望发射器存在的秒数。在指定“寿命”(Lifespan)值之后,发射粒子对象将消失。

  4. “属性编辑器”(Attribute Editor)“每粒子(数组)属性”(Per Particle (Array) Attributes)部分,在刚为其创建渐变的属性框上单击鼠标右键,然后选择“arrayMappern.outColorPP > 编辑渐变”(arrayMappern.outColorPP > Edit Ramp)

    “属性编辑器”(Attribute Editor)将显示控制属性的默认灰度渐变。在粒子的整个寿命期间,在渐变垂直组件 (V) 中,属性的值设定为 R 颜色值。在寿命的开始阶段使用渐变底部的值,在寿命的结束阶段使用渐变顶部的值。

    默认情况下,在每个粒子寿命的开始阶段,属性的值等于 1,这是因为渐变底部的 R 组件为 1(颜色为白色,RGB 值为 1、1、1)。

    在寿命的中间阶段,属性的值等于 0.5,因为渐变底部的 R 组件为 0.5。(颜色为灰色,RGB 值为 0.5、0.5、0.5。)

    在寿命的结束阶段,属性的值等于 0,因为渐变底部的 R 组件为 0。(颜色为黑色,RGB 值为 0、0、0)。

    Maya 对渐变中这三个点之间的值插值。

    提示

    默认情况下,年龄是与渐变一起使用的属性。还可以使用其他属性。

  5. 根据需要编辑渐变的 R 颜色值(有关详细信息,请参见“渲染”)。

    在编辑渐变值时,可以在“颜色编辑器”(Color Editor)中将任何数值用于 R。虽然 0 到 1 范围之外的值有效,但是它们在“纹理示例”(Texture Sample)样例的显示中不存在任何有意义的等效颜色。不要编辑 HSV 值,否则将有可能将不正确的值应用于该属性。

    通常,“opacityPP”是样例中颜色代表属性中的值的唯一属性。对于不具有等效颜色的其他属性,可以通过在 R 框中输入值(而不是直接单击颜色),在“颜色编辑器”(Color Editor)中编辑颜色值。

    还可以通过更改“属性编辑器”(Attribute Editor)中的其他渐变属性(例如,“噪波”(Noise)“噪波频率”(Noise Frequency))来更改颜色序列。有关渐变属性的详细信息,请参见“渲染”。

    请记住,渐变的水平组件对属性没有任何影响。要也使用水平组件,请参见下面的使用渐变自定义每粒子属性控制

使用渐变自定义每粒子属性控制

渐变具有两个输入 - U(水平方向)和 V(垂直方向)。默认情况下,数组映射器的 V 向输入连接到粒子的年龄,而 U 向输入未连接。在创建渐变时,可以更改这些输入连接。

其他渐变选项,例如,两个轴上的圆形、对角或长方体更改。您可以在渐变“属性编辑器”(Attribute Editor)中选择这些选项。

若要更改每粒子属性的渐变控制,可以执行下列操作:

指定粒子的属性如何从渐变中获取值

  1. 如有必要,请将属性添加到粒子中。
  2. 打开“属性编辑器”(Attribute Editor)“每粒子(数组)属性”(Per Particle (Array) Attributes)部分,然后在所需的属性上单击鼠标右键并选择“创建渐变”(Create Ramp)>

    将显示“创建渐变”(Create Ramp)选项窗口。

  3. 要使用现有渐变,请从“映射到”(Map To)菜单中选择该渐变。
  4. 要自定义控制 U 向(水平方向)和 V 向(垂直方向)渐变组件的属性,拾取“输入 U”(Input U)“输入 V”(Input V)中的其中一个属性。
  5. “输入 U”(Input U)“输入 V”(Input V)菜单中选择属性。
    提示如果将“粒子的年龄”(Particle’s Age)同时用于“输入 U”(Input U)“输入 V”(Input V),那么会通过下图
    中的对角线指示在粒子整个寿命过程中控制属性的渐变部分:

    对于以上默认渐变,将“粒子的年龄”(Particle’s Age)同时用于“输入 U”(Input U)“输入 V”(Input V)没有任何好处,因为渐变颜色不会在 U(水平)方向更改。

    如果编辑渐变属性来创建渐变(如以下示例),则为“输入 U”(Input U)“输入 V”(Input V)选择“粒子的年龄”(Particle’s Age)时会将通用性添加到属性的控制中:

    您甚至可以将纹理用作渐变的颜色的输入。例如,您可以按如下所示将 2D 棋盘格纹理映射到颜色渐变上:

编辑渐变

您还可以编辑渐变来更改颜色。

有关高级渐变功能的信息,请参见手册中的“着色”部分的下列主题

编辑渐变

  1. 显示粒子形状的“属性编辑器”(Attribute Editor)。在“rgbPP”的右侧,在“<-arrayMapper1.outColorPP”上单击鼠标右键,然后从弹出菜单中选择“编辑渐变”(Edit Ramp)

    “rgbPP”的渐变显示在“属性编辑器”(Attribute Editor)中。

  2. 在渐变中编辑颜色。有关在渐变中编辑颜色的信息,请参见“渲染”中的“渐变”。

映射到现有渐变

除了映射到默认渐变,您还可以将目标属性映射到已在场景中使用的渐变。

映射到现有渐变

  1. 将指针置于要为其创建渐变的每粒子属性的数据框中。单击鼠标右键以显示弹出菜单,然后选择“创建渐变”(Create Ramp)> 来显示“创建渐变”(Create Ramp)选项窗口。
  2. 单击“映射到”(Map to)按钮显示选项菜单。

    已在场景中使用的渐变在弹出菜单中列出。

  3. 从列表中选择其中一个渐变。

确保渐变颜色能有意义地表示属性值。

“颜色编辑器”(Color Editor)中编辑 RGB(或 R)的渐变值时,虽然 0 到 1 范围之外的值有效,但是它们在“纹理示例”(Texture Sample)样例的显示中不存在任何有意义的等效颜色}。可以按如下所示创建有意义的等效颜色:

确保渐变颜色有意义地表示属性值

  1. 将渐变中最小的 RGB(或 R)值设定为 0,将渐变中最大的 RGB(或 R)值设定为 1。
  2. 在连接到渐变的每粒子属性的属性框上单击鼠标右键,将指针滑动到向右的箭头,然后选择“编辑数组映射器”(Edit Array Mapper)

    通过数组映射器,可以缩放应用于粒子的属性值的范围。

  3. 单击“属性编辑器”(Attribute Editor)的数组映射器选项卡。
  4. 对于“最小值”(Min Value)“最大值”(Max Value),输入要用于属性的最小值和最大值。

    默认情况下,“最小值”(Min Value)设定属性在其寿命开始阶段具有的最小值 - 渐变底部的值。默认情况下,“最大值”(Max Value)设定属性在其寿命结束阶段具有的最大值 - 渐变顶部的值。

断开渐变的属性控制

要断开渐变的属性控制,请在连接到渐变的每粒子属性的属性框上单击鼠标右键,将指针滑动到向右的箭头,然后选择其中一个选项:

断开连接(Break Connection)

断开到粒子形状的数组映射器的输入。该菜单项不会删除渐变节点或数组映射器。如果不希望在断开连接时删除渐变,则使用该菜单项。

删除数组映射器(Delete Array Mapper)

通过删除数组映射器,断开到粒子形状的数组映射器的输入。如果渐变没有其他连接,那么也将删除渐变。如果不再需要场景中的渐变,则使用该菜单项。

渐变示例

根据与原点的距离设置粒子的颜色

在该示例中,我们将根据粒子与原点的距离,使用渐变的 V 坐标系来设置粒子的颜色。该示例使用发射器和场,以下章节有所介绍。在执行该示例之前,您可能希望阅读有关发射器和场的信息。或者,您可以将 MEL 节点剪切并粘贴到“脚本编辑器”(Script Editor)中来创建发射器和场。

根据粒子与原点的距离使用渐变设置粒子的颜色

  1. 创建体积发射器。按如下所示设定“体积速率属性”(Volume Speed attributes):将“远离中心”(Away From Center)设定为 1;其他所有速率都设定为 0。设定“缩放”(Scale)(10、10、10)。

    要执行此操作,您可以从“Maya 帮助”(Maya Help)复制以下 MEL 命令,并将这些命令粘贴到“脚本编辑器”(Script Editor)

    emitter -pos 0 0 0 -type volume -r 100 -sro 0 -nuv 0 -cye none -cyi 1 -spd 1 -srn 0 -nsp 1 -tsp 0 -mxd 0 -mnd 0 -dx 1 -dy 0 -dz 0 -sp 0 -vsh sphere -vof 0 0 0 -vsw 360 -tsr 0.5 -afc 1 -afx 1 -arx 0 -alx 0 -rnd 0 -drs 0 -ssz 0 ;
    scale 10 10 10;
    particle;
    connectDynamic -em emitter1 particle1;
    
  2. “体积形状”(Volume Shape)设定为“球体”(Sphere)的径向场应用于粒子。将“幅值”(Magnitude)设定为 -2,“衰减”(Attenuation)设定为 0,并禁用“使用最大距离”(Use Max Distance)。打开“体积排除”(Volume Exclusion),并将“缩放”(Scale)设定为 10、10、10。这样可使粒子保留在体积内。

    要执行此操作,您可以从“Maya 帮助”(Maya Help)复制以下 MEL 命令,并将这些命令粘贴到“脚本编辑器”(Script Editor)

    radial -pos 0 0 0 -name pushIn -m -2 -att 0 -typ 0 -mxd -1 -vsh sphere -vex 1-vof 0 0 0 -vsw 360 -tsr 0.5 ;
    scale 10 10 10;
    connectDynamic -f pushIn particle1;
    
  3. 将每粒子颜色添加到粒子。

    要执行此操作,您可以从“Maya 帮助”(Maya Help)复制以下 MEL 命令,并将该命令粘贴到“脚本编辑器”(Script Editor)

    addAttr -ln "rgbPP" -dt vectorArray particleShape1;
    
  4. 选择粒子,并显示“粒子属性编辑器”(Particle Attribute Editor)。在“rgbPP”右侧的空间中,单击鼠标右键,然后选择“创建渐变”(Create Ramp)> 来显示“创建渐变选项”(Create Ramp Options)
  5. “输入 U”(Input U)设定为“无”(None)(默认),“输入 V”(Input V)设定为“rgbVPP”“映射到”(Map to) 设定为“新渐变”(New Ramp)(默认)。单击“确定”(OK)

    请注意,名为“rgbVPP”的新属性出现在“属性编辑器”(Attribute Editor)中。

  6. “rgbVPP”旁单击鼠标右键,然后选择“运行时表达式”(Runtime Expression)(在动力学计算前或后)。在“表达式编辑器”(Expression Editor)中,复制并粘贴以下行,然后单击“创建”(Create)
     rgbVPP = mag( position ) / 10;
    

    数量 mag(位置)始终等于粒子与原点的距离。将该值除以 10,该值为设置中粒子与原点的最大距离。

    换句话说,该表达式的意思是,如果粒子位于原点,那么渐变的 V 输入的值为 0,如果渐变在球体边界的外部,则值为 10。

  7. 您可能还希望使粒子更大。

    要执行该操作,您可以从“Maya 帮助”(Maya Help)剪切以下 MEL 命令,然后将这些命令粘贴到“脚本编辑器”(Script Editor)中:

    addAttr -is true -ln "pointSize" -at long -min 1 -max 60 -dv 2 particleShape1;
    setAttr "particleShape1.pointSize" 4;
    
  8. 现在,启用平滑着色处理、回放。并播放场景。