首页 百科知识 特殊赋值方式

特殊赋值方式

时间:2023-10-16 百科知识 版权反馈
【摘要】:在进入修改rgb值之前我们先找到粒子的lifespan属性面板。接下来把生命首期调整成为constain10,使得粒子缓慢的移动。在跳出的窗口里,选择AddPerParticleAttribute,这样就为粒子添加了一个rgbPP的PerParticleAttribute,这个属性是控制粒子颜色的属性。接下来在PerParticleAttribute属性面板里面找到rgbPP,用鼠标右键单击创建一个ramp:可以看到默认的颜色出现在了粒子的颜色里面,随着粒子年龄的增加,粒子的颜色从最下面的红色变成绿色,最后是蓝色。

第五节 特殊赋值方式ramp

前面的内容讲的都是用表达式给粒子的PerParticleAttribute进行赋值操作,相信大家也注意到,几乎每个通用属性的下面都有一个以ramp开头的属性:

当你在这些属性上面右键点击以后,弹出菜单里面只有一个选项就是CreateRamp。也就是为这个属性创建一个ramp节点。

ramp材质相信大家都很熟悉可是在这里ramp就不再是材质了,而是矢量数据的输出节点,还记得前面的知识么?

矢量的数据是什么样子的?

<<R,G,B>>和<<X,Y,Z>>是一样的还记得么?也就是说可以用ramp的颜色来控制矢量的x,y,z的值。

想象一下:如果把一个<<R,G,B>>的值,赋值给一个矢量的<<X,Y,Z>>的变量,那么我们就可通过改变r,g,b来改变x,y,z的值了,这样就非常方便了,不是么?

所以ramp可以称之为可视化的表达式。接下来我们就用rgb来控制粒子的位置属性的xyz:

新建一个场景,创建一个粒子发射器(使用默认属性)在rampPosition上面点击右键,在弹出菜单里面选择createRamp,一个ramp节点就创建好了,点击播放观看:

img83

img84

粒子在运动,运动的同时,轨迹是一条直角,并且运动到一个位置就消失了,速度也很快,这是为什么?在进入修改rgb值之前我们先找到粒子的lifespan属性面板。我们会发现这里的属性被修改了,粒子的生命周期被自动修改成为constain1了。

img85

为什么会这样?这说明粒子的position属性,不仅仅是与rgb有关联,它与粒子的生命周期也有关系了,你可以试着把生命周期的值变大,会发现粒子运动的速度变慢了,如果把它变成Liveforever,那么粒子就不再运动了,而是挤成一堆,并且位置是在X轴单位1的位置上:

这更说明了,粒子的位置与粒子的“年龄”一定有关系。接下来把生命首期调整成为constain10,使得粒子缓慢的移动。

现在可以得出结论:粒子的位置随着其生命时间的增加,沿着一条直角线增加。那么这条直角线是怎么回事呢?相信你已经知道了,那就是ramp,我们将ramp的<<R,G,B>>连接到了粒子的position上面,所以这条曲线就是rampd的rgb的值决定的:

在rampposition上面点击鼠标右键,选择editramp。

进入ramp的编辑器:

img86

img87

img88

请注意这个ramp,最下面是红色<<1,0,0>>,中间是绿色<<0,1,0>>,最上面是蓝色<<0,0,1>>,那么变换成位置信息,也就是:

这个三角形的,三个顶点的坐标位置,不是吗?

img89

所以ramp控制粒子属性的方式就是,使得粒子在生命周期内,分别在:

img90

当粒子处于生命周期开始的时候,使属性值等于最低下颜色的rgb值;

当粒子处于生命周期一半的时候,使属性值等于中间颜色的rgb值;

当粒子处于生命周期结束的时候,使属性值等于最上部颜色的rgb值。

这就是ramp控制粒子属性的本质方式。

由于rgb的属性值分量最大是1,这是我们前面就学过的知识,那么如果我想这个粒子的位置大于1怎么做?

很简单,鼠标右键点击rampposition后面的显示框,在弹出菜单里面选择:

img91

然后进入的面板是数据映射设置,也就是在这里你可以将最大值和最小值进行自定义:

img92

学到现在,简单的ramp控制属性已经应该掌握了,那么就让我们把刚才那个直角曲线变成一条高为5的三角形:

img93

img94

当然了,用ramp的矢量值<<R,G,B>>直接控制粒子的颜色信息rgbPP那是最直接也是最有效果的了。

接下来我们就把第一章里面制作的那个燃烧的球体打开,我们使用Ramp来控制粒子的rgbPP来产生粒子在不同时间产生不同颜色的效果,来制造火焰的颜色。

首先是为粒子增加rgbPP粒子属性,点击color按钮:

img95

在跳出的窗口里,选择AddPerParticleAttribute,这样就为粒子添加了一个rgbPP的PerParticleAttribute,这个属性是控制粒子颜色的属性。

img96

接下来在PerParticleAttribute属性面板里面找到rgbPP,用鼠标右键单击创建一个ramp:

img97

可以看到默认的颜色出现在了粒子的颜色里面,随着粒子年龄的增加,粒子的颜色从最下面的红色变成绿色,最后是蓝色。

img98

于是我们可以通过更改Ramp里面的颜色结构来改变粒子的颜色:

img99

当然了,接下来增加opacityPP属性来控制粒子的透明属性,并为其添加Ramp用来控制粒子从出生到死亡的透明度:

img100

调整ramp效果如下:

img101

使用ramp赋值给粒子的每粒子属性(PerParticleAttribute)能够产生一个随着粒子生命年龄增加而变化的矢量<<R,G,B>>的值,依次是ramp最下面到最上面的颜色所代表的矢量数值,这是非常强大的功能。以后我们会大量使用的。

最后提一下:这里使用的粒子MutiStreak不支持软件渲染,只能使用硬件渲染(HardwareRand)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈