5)事件“溅起水花_event”设置好了,那么父粒子从哪里来呢?很显然,落到水面上的粒子就是“产卵”的父粒子。
拖动事件“粒子发射_event”中collision 01运算符的输出手柄到事件“溅起水花_event”中的spawn运算符的输入手柄上释放鼠标。

6)这时如果播放动画可以看到一个缺陷,就是溅起的小水花运动速度有点夸张,像爆炸的弹片一样四散飞离。我们需要添加一个drag(阻力)空间弯曲来延缓其运动。
a.暂时退出粒子视图,打开create(创建)->space warps(空间弯曲),单击drag按钮在场景中拖动,将这个空间弯曲命名为“减速_drag”,进入修改面板设置其作用的时间和动画等长,x、y、z三个轴向的强度均设置为5%。
b.回到粒子视图中,拖放一个force运算符到事件“溅起水花_event”中,放在spawn 01测试下方,选择这个新建立的force 01运算符,在右侧的属性面板中单击add或者by list按钮选择空间弯曲。

7)拖放一个delete运算符到事件“溅起水花_event”中,放在最下方,选择delete 01,在右侧的属性面板中选择remove(删除)方式为by particle age(按照粒子生命),设置life span(生命长度)为20左右。


7、涟漪效果
现在我们开始制作水面上的涟漪,显然形成涟漪的事件应当接受来自事件“粒子发射_event”中的collision测试的输出。制作涟漪效果可以使用shape mark运算符。
1)在粒子视图中,从下方的运算符库中拖放一个shape mark运算符到上方视图的空白出,这样会自动建立一个新事件,将其命名为“激起涟漪_event”。

我们需要将事件“粒子发射_event”的collision测试的输出和事件“激起涟漪_event”的splash mark运算符的输入连接起来。但是在前面的操作中我们已经将collision输出指向事件“溅起水花_event”了。所以还必须想办法“分流”出一部分粒子。
2)从粒子视图下方的运算符库中拖放一个split amount测试到事件“溅起水花_event”中,并放置在最顶端。

3)将split amount的测试输出和事件“激起涟漪_event”的输入连接起来。

4)选择shape mark 01运算符,在右侧的参数面板中单击contact object按钮,然后在场景中单击选择水面物体(watersurface)。

现在我们来理一下思路,在事件“粒子发射_event”中粒子不断产生(由rate、speed等运算符控制产生的数量和速度),这些粒子经过collision检测的测试,凡是和空间弯曲“水面_pomniflect”发生碰撞的粒子都会被传递给事件“溅起水花_event”,“溅起水花_event”通过split amount运算符将一部分粒子交给事件“激起涟漪_event”处理,在“激起涟漪_event”中我们就要通过shape mark 01运算符来模拟水面的涟漪效果。

5) 这时如果播放动画可以看到,当粒子碰到水面时,水面上会出现微小的多边形,但是面积太小,几乎看不见。打开shape mark 01的参数面板,在in world space中设置width和length为较大的值,比如20左右。

6)现在还有一个比较棘手的问题,那就是水花落到水面时出现的涟漪是逐渐扩大的,如何制作这种效果呢?我们可以使用scale运算符。
从下面的运算符库中拖放一个scale运算符到shape mark 01运算符下方,注意位置不能放错,否则就失效了。选择这个新添加的scale运算符,设置其type(类型)为relative first,scale factor(缩放指数)均为10%,scale variation(缩放变化)均为5%。

