使用“粒子采样器信息”(Particle Sampler Info)节点的示例

 
 
 

为了帮助使用“粒子采样器信息”(Particle Sampler Info)节点,已提供下列示例来帮助了解如何使用“粒子采样器信息”(Particle Sampler Info)节点来获得某些常用效果。有关“粒子采样器信息”(Particle Sampler Info)节点属性的完整信息,请参见设定粒子采样器信息节点属性(Set Particle Sampler Info node attributes)

使用“粒子采样器信息”(Particle Sampler Info)节点驱动纹理放置节点

下面是第一种策略(使用“粒子采样器信息”(Particle Sampler Info)节点驱动纹理放置节点)的一个示例,该策略会为着色器颜色上纹理。在本示例中,我们将使用粒子的年龄为粒子上色。

示例:使用粒子年龄为粒子上色

  1. 以速度 8 使圆锥体发射器向上发射,将粒子的“寿命模式”(Lifespan Mode)设定为“恒定”(Constant)“寿命”(Lifespan)为 2),然后将其渲染类型设定为云。

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

    emitter -pos 0 0 0 -type volume -r 100 -vsh cone -alx 8; particle; connectDynamic -em emitter1 particle1; setAttr particleShape1.lifespanMode 1; setAttr particleShape1.lifespan 2.0; setAttr particleShape1.particleRenderType 8;
    
  2. 选择粒子形状,并显示“属性编辑器”(Attribute Editor)
  3. 选择“particleCloud”选项卡,然后按“寿命中白炽度”(Life Incandescence)旁边的 按钮以显示“创建渲染节点”(Create Render Node)窗口。
    提示

    白炽度与颜色相同,但白炽度是自发光的,因此不需要添加灯光。

  4. 在右侧面板中,单击

    该操作会创建一个新渐变、一个纹理放置节点和一个“粒子采样器信息”(Particle Sampler Info)节点。“寿命中颜色”(Life Color)实际上根本不是一个属性,它仅仅是“属性编辑器”(Attribute Editor)中的一个控件,用于告诉 Maya 为您设置这些到颜色的连接。

  5. 播放场景,并进行渲染。

    将看到随粒子年龄的增加由渐变上纹理的粒子颜色。

    现在,我们将在“粒子采样器信息”(Particle Sampler Info)节点中更改某些控件。

  6. 选择粒子形状,并显示“属性编辑器”(Attribute Editor)。单击“particleSamplerInfo1”选项卡。
  7. 启用“UV 反向输出”(Inverse Out Uv),并重新渲染。

    会反转颜色,颜色将从蓝色变为绿色再变为红色,而不是粒子从红色变为绿色再变为蓝色。

    现在我们将更改纹理节点上的控件。

  8. 在粒子形状“属性编辑器”(Attribute Editor)中,单击“particleCloud”选项卡。
  9. 单击“寿命中白炽度”(Life Incandescence)旁边的“输入连接”(Input Connection)按钮。
  10. 单击“place2DTexture1”。
  11. “UV 向躁波”(Noise UV)设置为 1.0 和 1.0,并重新渲染。

    会将躁波应用到在红色、绿色和蓝色粒子中创建随机度的渐变的放置。

  12. “UV 向躁波”(Noise UV)更改回 0.0 和 0.0。
  13. 单击“加载属性”(Load Attributes)并显示粒子形状“属性编辑器”(Attribute Editor)
  14. “寿命模式”(Lifespan Mode)更改为“永生”(Live forever)
  15. 选择“粒子采样器信息”(Particle Sampler Info)节点对应的选项卡。
  16. “输出 UV 类型”(Out Uv Type)更改为“绝对年龄”(Absolute Age),并设定规格化值 1。
  17. 回放,播放大约 100 帧,然后进行渲染。

    请注意,粒子会随其年龄增大而多次循环渐变。

“粒子采样器信息”(Particle Sampler Info)节点与每粒子属性一起使用

下面是第二种常规策略(使用 rgbPP 直接驱动着色器颜色)的一个示例。需要使用由除年龄以外的其他属性驱动的表达式或渐变时,请使用该策略。

示例:将“粒子采样器信息”(Particle Sampler Info)节点与 rgbPP 一起使用

  1. 以速度 8 使圆锥体发射器向上发射,将粒子的“寿命模式”(Lifespan Mode)设定为“恒定”(Constant)“寿命”(Lifespan)为 2),然后将其渲染类型设定为云。

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

    emitter -pos 0 0 0 -type volume -r 100 -vsh cone -alx 8; particle; connectDynamic -em emitter1 particle1; setAttr particleShape1.lifespanMode 1; setAttr particleShape1.lifespan 2.0; setAttr particleShape1.particleRenderType 8;
    
  2. 选择粒子形状,然后选择场 > 重力(Fields > Gravity)
  3. 在选定粒子形状的情况下,显示“属性编辑器”(Attribute Editor)
  4. “添加动态属性”(Add Dynamic Attributes)下,单击“颜色”(Color)

    将显示“粒子颜色”(Particle Color)窗口。

  5. 单击“添加每粒子属性”(Add Per Particle Attribute),然后单击“添加属性”(Add Attribute)
  6. “属性编辑器”(Attribute Editor)中,单击“particleCloud1”选项卡。
  7. “颜色”(Color)属性旁边,按 贴图按钮以显示“创建渲染节点”(Create Render Node)窗口。
  8. “创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)
  9. 在右侧面板中,单击

    该操作会自动创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其颜色输出连接到颜色属性(如果已经创建了“粒子采样器信息”(Particle Sampler Info)节点,可以在连接编辑器中使用该节点并直接连接它)。

  10. “属性编辑器”(Attribute Editor)中选择粒子形状选项卡。在“每粒子(数组)属性”(Per Particle (Array)Attributes)下,在“rgbPP”上单击鼠标右键,然后选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后)。
  11. “表达式编辑器”(Expression Editor)中,输入以下表达式:
    particleShape1.rgbPP = << mag(particleShape1.velocity) /
    	10, 0.0, 1 -mag(particleShape1.velocity)/10 >>;
    

    这会告知 Maya 随着速度加快将粒子颜色从蓝色更改为红色。

    提示

    在本示例中,我们使用了一个表达式来实现某个特定效果。但是,不必将表达式与“粒子采样器信息”(Particle Sampler Info)节点一起使用。还可以使用渐变,从而获得一种不同的效果。

  12. 向场景中添加灯光。建议添加平行光。
  13. 播放大约 75 帧,然后进行渲染。

    请注意,如果“rgbPP”存在,“粒子采样器信息”(Particle Sampler Info)节点 outIncandescence 输出会自动使用“rgbPP”。如果不存在任何“rgbPP”,则该输出会使用“colorRed/colorGreen/colorBlue”(如果它们存在)。

    使用“rgbPP”的优点是,可以使用对每粒子属性可用的任何方式设定 rgbPP 的值或设置 rgbPP 的值的动画,并可以在软件中看到结果。接着还将在硬件渲染和软件渲染中使用相同的颜色属性。

    但是,仅可以使用表达式和渐变(或组件编辑器)设置“rgbPP”的动画。使用“寿命中颜色”(Life Color)的优点是,可获得一个纹理放置节点并可以充分利用其附加控件。特别是,可以使用任何纹理,而不仅仅是渐变,因为获得了 U 向控制和 V 向控制。可以连接所需的任何兼容“粒子采样器信息”(Particle Sampler Info)节点属性。

使用“粒子采样器信息”(Particle Sampler Info)节点设定透明度

与颜色一样,“寿命中透明度”(Life Transparency)仍可用。“寿命中透明度”会将“粒子采样器信息”(Particle Sampler Info)节点的“outUvCoord”属性与某个纹理放置节点一起使用,而不是与某个粒子透明度映射器和年龄映射器一起使用。

与颜色一样,可以直接使用诸如“opacityPP”之类的每粒子属性。可以使用“粒子采样器信息”(Particle Sampler Info)节点的“outTransparency”属性。

示例:创建淡出粒子

  1. 使用平面圆柱形磁盘形状创建一个体积发射器,其中速度“远离轴”(Speed Away From Axis)等于 1,而其他速度为零。

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

    emitter -pos 0 0 0 -type volume -r 100 -sro 0 -spd 1 -vsh cylinder -afx 1; scale -r 5 0.5 5 ; particle; connectDynamic -em emitter1 particle1;
    
  2. 将速率(粒子/秒)降至 50。
  3. 将粒子的渲染类型设定为云。单击“为当前渲染类型添加属性”(Add Attributes for Current Render Type),然后将“半径”(Radius)设定为 1.5。
  4. “属性编辑器”(Attribute Editor)中,在“添加动态属性”(Add Dynamic Attributes)下,单击“不透明度”(Opacity)。启用“添加每粒子属性”(Add Per Particle Attribute),然后单击“添加属性”(Add Attribute)
  5. “每粒子属性”(Per Particle Attributes)下,在“opacityPP”上单击鼠标右键,然后选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后)。
  6. “表达式编辑器”(Expression Editor)中,输入以下表达式,然后单击“创建”(Create)
    opacityPP = 1 / (0.01 + mag( position ));
    

    (我们在分母中加了 0.01,以避免粒子位于原点时除以零。)

  7. 选择 particleCloud 着色器选项卡,然后单击“透明度”(Transparency)(而不是“寿命中透明度”(Life Transparency))对应的贴图 按钮。

    将显示“创建渲染节点”(Create Render Node)窗口。

  8. “创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)
  9. 在右侧面板中,单击

    该操作会创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其 outTransparency 连接到着色器透明度。与颜色和白炽度一样,outTransparency 输出会自动使用 opacityPP(如果该属性存在),否则它会使用 opacity。

    不透明度与透明度具有反比关系:不透明度越高,透明度就越低。如果连接了“粒子采样器信息”(Particle Sampler Info)节点的 outTransparency 输出,那么该节点会自动将不透明度转化为透明度,以便获得正确的结果。

  10. 添加灯光,播放大约 50 帧的场景,然后进行渲染。从顶部沿 Y 轴向下看的摄影机视图是最好的。粒子离原点越远,它们看起来将越透明。

逐粒子控制躁波

在需要控制的着色器中,可以将任何每粒子属性连接到该属性。然后可以将某个表达式放置在每粒子属性上,以完全按所需的方式来控制每粒子属性。

示例:创建烟

  1. 创建一个垂直向上发射粒子的简单曲线发射器。

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

    curve -d 3 -p -6.861087 0 7.36723 -p -2.43128 0 2.685247 -p 2.685247 0 -2.43128 	-p 6.968851 0 -6.714884 -k 0 -k 0 -k 0 -k 1 -k 1 -k 1 ; emitter -type curve -r 100 -sro 0 -nuv 0 -cye none -cyi 5 -spd 6 -srn 0 -nsp 0 	-tsp 0 -mxd 0 -mnd 0 -dx 0 -dy 1 -dz 0 -sp 0 ; particle;
    connectDynamic -em emitter1 particle1;
    
  2. 将粒子的寿命模式设定为随机范围。将寿命设定为 2 并将 lifespanRandom 设定为 2。
  3. 将粒子渲染类型设定为云。单击“为当前渲染类型添加属性”(Add Attributes for Current Render Type),然后将“半径”(Radius)设定为 1.5。
  4. 选择“particleCloud”选项卡,然后将颜色设定为浅灰色或喜欢的任何其他颜色。

    现在我们将使用您未在使用的任何每粒子属性。例如,此处我们不需要“parentU”“parentV”,因此我们将使用这两个属性。

    注意

    为简单起见,在本示例中,我们使用了 parentU 和 parentV,因为可以很容易添加它们,且它们未在使用中。但是,可以使用任何动态属性,甚至自己定义的那些动态属性。

  5. 选择“属性 > 添加属性”(Attributes > Add Attributes)。在“添加属性”(Add attribute)窗口中,单击“粒子”(Particle)选项卡。
  6. 选择“parentU”,然后单击“添加”(Add)。选择“parentV”,然后单击“添加”(Add)。单击“确定”(OK)
  7. “parentU”“parentV”上单击鼠标右键,选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后),然后添加以下表达式:
    parentU = 0.7 + 2*(age/finalLifespanPP); parentV = age /(1.5*finalLifespanPP);
    

    我们希望随着粒子年龄增大,粒子越不密集且躁波越多,就像烟一样。

    提示

    在本示例中,我们使用了一个表达式来实现某个特定效果。但是,不必将表达式与“粒子采样器信息”(Particle Sampler Info)节点一起使用。还可以使用渐变,从而获得一种不同的效果。

  8. 在 particleCloud“属性编辑器”(Attribute Editor)中,单击躁波旁边的贴图 按钮。

    将显示“创建渲染节点”(Create Render Node)窗口。

  9. “创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)
  10. 在右侧面板中,单击

    将显示“连接编辑器”(Connection Editor)

  11. “粒子采样器信息”(Particle Sampler Info)“parentU”连接到“躁波”(Noise),并将“parentV”连接到“密度”(Density)
  12. 添加灯光。将场景播放至大约 60 帧,然后进行渲染。