为了帮助使用“粒子采样器信息”(Particle Sampler Info)节点,已提供下列示例来帮助了解如何使用“粒子采样器信息”(Particle Sampler Info)节点来获得某些常用效果。有关“粒子采样器信息”(Particle Sampler Info)节点属性的完整信息,请参见设定粒子采样器信息节点属性(Set Particle Sampler Info node attributes)。
下面是第一种策略(使用“粒子采样器信息”(Particle Sampler Info)节点驱动纹理放置节点)的一个示例,该策略会为着色器颜色上纹理。在本示例中,我们将使用粒子的年龄为粒子上色。
若要执行该操作,可以从“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;
该操作会创建一个新渐变、一个纹理放置节点和一个“粒子采样器信息”(Particle Sampler Info)节点。“寿命中颜色”(Life Color)实际上根本不是一个属性,它仅仅是“属性编辑器”(Attribute Editor)中的一个控件,用于告诉 Maya 为您设置这些到颜色的连接。
下面是第二种常规策略(使用 rgbPP 直接驱动着色器颜色)的一个示例。需要使用由除年龄以外的其他属性驱动的表达式或渐变时,请使用该策略。
示例:将“粒子采样器信息”(Particle Sampler Info)节点与 rgbPP 一起使用
若要执行该操作,可以从“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;
该操作会自动创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其颜色输出连接到颜色属性(如果已经创建了“粒子采样器信息”(Particle Sampler Info)节点,可以在连接编辑器中使用该节点并直接连接它)。
particleShape1.rgbPP = << mag(particleShape1.velocity) / 10, 0.0, 1 -mag(particleShape1.velocity)/10 >>;
请注意,如果“rgbPP”存在,“粒子采样器信息”(Particle Sampler Info)节点 outIncandescence 输出会自动使用“rgbPP”。如果不存在任何“rgbPP”,则该输出会使用“colorRed/colorGreen/colorBlue”(如果它们存在)。
使用“rgbPP”的优点是,可以使用对每粒子属性可用的任何方式设定 rgbPP 的值或设置 rgbPP 的值的动画,并可以在软件中看到结果。接着还将在硬件渲染和软件渲染中使用相同的颜色属性。
但是,仅可以使用表达式和渐变(或组件编辑器)设置“rgbPP”的动画。使用“寿命中颜色”(Life Color)的优点是,可获得一个纹理放置节点并可以充分利用其附加控件。特别是,可以使用任何纹理,而不仅仅是渐变,因为获得了 U 向控制和 V 向控制。可以连接所需的任何兼容“粒子采样器信息”(Particle Sampler Info)节点属性。
与颜色一样,“寿命中透明度”(Life Transparency)仍可用。“寿命中透明度”会将“粒子采样器信息”(Particle Sampler Info)节点的“outUvCoord”属性与某个纹理放置节点一起使用,而不是与某个粒子透明度映射器和年龄映射器一起使用。
与颜色一样,可以直接使用诸如“opacityPP”之类的每粒子属性。可以使用“粒子采样器信息”(Particle Sampler Info)节点的“outTransparency”属性。
若要执行该操作,可以从“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;
opacityPP = 1 / (0.01 + mag( position ));
该操作会创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其 outTransparency 连接到着色器透明度。与颜色和白炽度一样,outTransparency 输出会自动使用 opacityPP(如果该属性存在),否则它会使用 opacity。
不透明度与透明度具有反比关系:不透明度越高,透明度就越低。如果连接了“粒子采样器信息”(Particle Sampler Info)节点的 outTransparency 输出,那么该节点会自动将不透明度转化为透明度,以便获得正确的结果。
在需要控制的着色器中,可以将任何每粒子属性连接到该属性。然后可以将某个表达式放置在每粒子属性上,以完全按所需的方式来控制每粒子属性。
若要执行该操作,可以从“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;
现在我们将使用您未在使用的任何每粒子属性。例如,此处我们不需要“parentU”和“parentV”,因此我们将使用这两个属性。
parentU = 0.7 + 2*(age/finalLifespanPP); parentV = age /(1.5*finalLifespanPP);