以前曾经做过一个适合做油漆等不流动的水滴,如果像车窗表面、液体沿着脸留下来(…)等效果可以用接下来的方法。
如上图整个系统可以分解为4种粒子:
- 自由沝滴,普通粒子加个gravity field和物体碰撞,event中产生第2种粒子和第4种粒子
- 引导粒子,也是表达式中主要要对付的粒子负责弯弯曲曲的沿着表面往下移动,并且发射第3种粒子
- 轨迹水滴,被引导粒子发射出来形成水滴流过的痕迹。
- 喷溅粒子自由水滴打到表面后溅出来的粒子,沒什么特别
呐,以下就是引导粒子的粒子表达式场景中有一个closestPointOnMesh节点需要预先建立,并且把用来流淌的模型连到节点的inmesh上这样每次设置不同的inposition,从outposition里取出来的就是inposition靠近inmesh最近的点
- 基于noise函数生成一个随机向量,加在目前的pos上制造曲折效果
- 讲pos往重力方向移动
- 如果只是2和3两蔀,粒子极有可能会离开了物体表面所以接下来进行了一次判断,取出移动后的目标位置所对应的最靠近mesh的点(通过ClosestPointOnMesh)判断一下和上┅帧的pos在y轴的差,如果差很小也就是说粒子基本没有往下落,说明流到了一个比较平的位置那么接下来分两种情况,5和6:
- 如果最近点處的法线点乘重力方向大于0也就是说这一点法线是朝下的,那么水滴应该脱离表面成为一个自由水滴,其他的喷溅啊继续生成引导水滴啊交给我们架设好的系统
这一点如果仔细看视频就可以看到,在弯弯曲曲的留到圆环或者圆锥的最下面后会掉下来,继续在下面的斜面上流淌 - 如果点乘小于0,也就是朝上的那么水滴是没法穿透物体往下的,所以就让它消失吧