返回首页 >> Maya文档 >> maya使用“粒子采样器信息”(Particle Sampler Info)节点的示例

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


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

示例:将粒子采样器信息节点与 rgbPP 一起使用
示例:创建淡出粒子
示例:创建烟
使用“粒子采样器信息”(Particle Sampler Info)节点驱动纹理放置节点

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

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

以速度 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;
选择粒子形状,并显示“属性编辑器”(Attribute Editor)。
选择“particleCloud”选项卡,然后按“寿命中白炽度”(Life Incandescence)旁边的 按钮以显示“创建渲染节点”(Create Render Node)窗口。
提示
白炽度与颜色相同,但白炽度是自发光的,因此不需要添加灯光。

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

播放场景,并进行渲染。
将看到随粒子年龄的增加由渐变上纹理的粒子颜色。

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

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

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

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

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

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

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

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

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

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

以速度 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;
选择粒子形状,然后选择“场 > 重力(Fields > Gravity)”。
在选定粒子形状的情况下,显示“属性编辑器”(Attribute Editor)。
在“添加动态属性”(Add Dynamic Attributes)下,单击“颜色”(Color)。
将显示“粒子颜色”(Particle Color)窗口。

单击“添加每粒子属性”(Add Per Particle Attribute),然后单击“添加属性”(Add Attribute)。
在“属性编辑器”(Attribute Editor)中,单击“particleCloud1”选项卡。
在“颜色”(Color)属性旁边,按 贴图按钮以显示“创建渲染节点”(Create Render Node)窗口。
在“创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)。
在右侧面板中,单击 。
该操作会自动创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其颜色输出连接到颜色属性(如果已经创建了“粒子采样器信息”(Particle Sampler Info)节点,可以在连接编辑器中使用该节点并直接连接它)。

在“属性编辑器”(Attribute Editor)中选择粒子形状选项卡。在“每粒子(数组)属性”(Per Particle (Array) Attributes)下,在“rgbPP”上单击鼠标右键,然后选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后)。
在“表达式编辑器”(Expression Editor)中,输入以下表达式:
particleShape1.rgbPP = << mag(particleShape1.velocity) /
10, 0.0, 1 -mag(particleShape1.velocity)/10 >>;
这会告知 Maya 随着速度加快将粒子颜色从蓝色更改为红色。

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

向场景中添加灯光。建议添加平行光。
播放大约 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”属性。

示例:创建淡出粒子

使用平面圆柱形磁盘形状创建一个体积发射器,其中速度“远离轴”(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;
将速率(粒子/秒)降至 50。
将粒子的渲染类型设定为云。单击“为当前渲染类型添加属性”(Add Attributes for Current Render Type),然后将“半径”(Radius)设定为 1.5。
在“属性编辑器”(Attribute Editor)中,在“添加动态属性”(Add Dynamic Attributes)下,单击“不透明度”(Opacity)。启用“添加每粒子属性”(Add Per Particle Attribute),然后单击“添加属性”(Add Attribute)。
在“每粒子属性”(Per Particle Attributes)下,在“opacityPP”上单击鼠标右键,然后选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后)。
在“表达式编辑器”(Expression Editor)中,输入以下表达式,然后单击“创建”(Create):
opacityPP = 1 / (0.01 + mag( position ));
(我们在分母中加了 0.01,以避免粒子位于原点时除以零。)

选择 particleCloud 着色器选项卡,然后单击“透明度”(Transparency)(而不是“寿命中透明度”(Life Transparency))对应的贴图 按钮。
将显示“创建渲染节点”(Create Render Node)窗口。

在“创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)。
在右侧面板中,单击 。
该操作会创建一个新的“粒子采样器信息”(Particle Sampler Info)节点,并会将其 outTransparency 连接到着色器透明度。与颜色和白炽度一样,outTransparency 输出会自动使用 opacityPP(如果该属性存在),否则它会使用 opacity。

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

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

逐粒子控制躁波

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

示例:创建烟

创建一个垂直向上发射粒子的简单曲线发射器。
若要执行该操作,可以从“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 并将 lifespanRandom 设定为 2。
将粒子渲染类型设定为云。单击“为当前渲染类型添加属性”(Add Attributes for Current Render Type),然后将“半径”(Radius)设定为 1.5。
选择“particleCloud”选项卡,然后将颜色设定为浅灰色或喜欢的任何其他颜色。
现在我们将使用您未在使用的任何每粒子属性。例如,此处我们不需要“parentU”和“parentV”,因此我们将使用这两个属性。

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

选择“属性 > 添加属性”(Attributes > Add Attributes)。在“添加属性”(Add attribute)窗口中,单击“粒子”(Particle)选项卡。
选择“parentU”,然后单击“添加”(Add)。选择“parentV”,然后单击“添加”(Add)。单击“确定”(OK)。
在“parentU”或“parentV”上单击鼠标右键,选择“运行时表达式”(Runtime Expression)(在动力学计算之前或之后),然后添加以下表达式:
parentU = 0.7 + 2*(age/finalLifespanPP); parentV = age /(1.5*finalLifespanPP);
我们希望随着粒子年龄增大,粒子越不密集且躁波越多,就像烟一样。

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

在 particleCloud“属性编辑器”(Attribute Editor)中,单击躁波旁边的贴图 按钮。
将显示“创建渲染节点”(Create Render Node)窗口。

在“创建渲染节点”(Create Render Node)窗口中,在“Maya”下,单击“工具”(Utilities)。
在右侧面板中,单击 。
将显示“连接编辑器”(Connection Editor)。

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

请将您关于此页内容的评论发送给我们