视频:http://v.youku.com/v_show/id_XNDQwNTE4Mzg4.html

以前曾经做过一个基于打湿贴图的maya粒子打倒表面产生的喷溅效果,适合做油漆等不流动的水滴,如果像车窗表面、液体沿着脸留下来(…)等效果,可以用接下来的方法。

如上图,整个系统可以分解为4种粒子:

  1. 自由水滴,普通粒子加个gravity field。和物体碰撞,event中产生第2种粒子和第4种粒子。
  2. 引导粒子,也是表达式中主要要对付的粒子,负责弯弯曲曲的沿着表面往下移动,并且发射第3种粒子。
  3. 轨迹水滴,被引导粒子发射出来,形成水滴流过的痕迹。
  4. 喷溅粒子,自由水滴打到表面后溅出来的粒子,没什么特别。
呐,以下就是引导粒子的粒子表达式,场景中有一个closestPointOnMesh节点需要预先建立,并且把用来流淌的模型连到节点的inmesh上。这样每次设置不同的inposition,从outposition里取出来的就是inposition靠近inmesh最近的点。
[cpp] view plain copy
  1. particleShape3Shape.velocity = <<0,0,0>>;
  2. // pos
  3. float $noiseScale = 1.4,$overallScale = 0.05;
  4. float $displacement = 0.05;
  5. vector $pos = particleShape3Shape.position;
  6. $pos+=<<noise($pos),noise($pos+<<100,0,0>>)*0.2,noise($pos+<<0,100,100>>)>>*$noiseScale*$overallScale;
  7. $pos+=<<0,-1.5,0>>*$overallScale;
  8. setAttr closestPointOnMesh1.inPositionX ($pos.x);
  9. setAttr closestPointOnMesh1.inPositionY ($pos.y);
  10. setAttr closestPointOnMesh1.inPositionZ ($pos.z);
  11. float $px,$py,$pz,$nx,$ny,$nz;;
  12. $px = `getAttr closestPointOnMesh1.positionX`;
  13. $py = `getAttr closestPointOnMesh1.positionY`;
  14. $pz = `getAttr closestPointOnMesh1.positionZ`;
  15. $nx = `getAttr closestPointOnMesh1.nx`;
  16. $ny = `getAttr closestPointOnMesh1.ny`;
  17. $nz = `getAttr closestPointOnMesh1.nz`;
  18. vector $pos2 = <<$px,$py,$pz>>+<<$nx,$ny,$nz>>*$displacement;
  19. vector $lastpos = particleShape3Shape.lastPos;
  20. if(abs($pos2.y-$lastpos.y)<0.0001){
  21. particleShape3Shape.lifespanPP = 0;
  22. if(dot(<<$nx,$ny,$nz>>,<<0,-1,0>>)>0){
  23. emit -object particle1 -pos ($pos.x) ($pos.y-0.01) ($pos.z);
  24. }
  25. }
  26. //print(id+": "+abs($pos2.y-$pos.y)+"\n");
  27. particleShape3Shape.position = $pos2;
  28. particleShape3Shape.lastPos = $pos2;

原理是这样的:

  1. 把速度清零
  2. 基于noise函数生成一个随机向量,加在目前的pos上,制造曲折效果
  3. 讲pos往重力方向移动
  4. 如果只是2和3两部,粒子极有可能会离开了物体表面,所以接下来进行了一次判断,取出移动后的目标位置所对应的最靠近mesh的点(通过ClosestPointOnMesh),判断一下和上一帧的pos在y轴的差,如果差很小,也就是说粒子基本没有往下落,说明流到了一个比较平的位置,那么接下来分两种情况,5和6:
  5. 如果最近点处的法线点乘重力方向大于0,也就是说这一点法线是朝下的,那么水滴应该脱离表面,成为一个自由水滴,其他的喷溅啊继续生成引导水滴啊交给我们架设好的系统。
    这一点如果仔细看视频就可以看到,在弯弯曲曲的留到圆环或者圆锥的最下面后,会掉下来,继续在下面的斜面上流淌。
  6. 如果点乘小于0,也就是朝上的,那么水滴是没法穿透物体往下的,所以就让它消失吧。

大家久等,文件终于找到了,统一回复:

Maya粒子-水滴表面流动效果相关推荐

  1. android 倒水动画,MAYA粒子制作逼真的倒水动画效果

    这篇教程教脚本之家的MAYA FANS们用MAYA粒子制作倒水动画,教程属于基础的MAYA粒子模块教程.难度一般.转发过来和脚本之家的朋友们一起分享.希望脚本之家的朋友们喜欢这篇教程.先来看看最终的效 ...

  2. Maya粒子特效制作(二)

    继续上次的粒子特效工作,本周已经完成该特效的制作. 首先创建一个新的摄像机,并固定到合适的位置,首先是背景的创建,为其创建一个图像平面. 为该平面创建一个渐变纹理Ramp,使背景呈现渐变的效果,然后创 ...

  3. CAEmitterLayer粒子发射器的神奇效果

    想必以前QQ空间的点赞效果大家都知道吧,点赞之后按钮周围会有一圈爆裂的小圆点:还有微信的红包雨表情动画等,以及烟花,火焰效果.这些看似很炫酷的动画可能让我们敬而远之,但是其实iOS封装的很好,利用简单 ...

  4. 粒子系统与流动效果——HW7

    粒子系统与流动效果--HW7 参考 http://i-remember.fr/en 这类网站,使用粒子流编程控制制作一些效果, 如"粒子光环" 粒子系统在之前的飞碟游戏中已有使用, ...

  5. unity 模型渐变消失_Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  6. HT for Web中3D流动效果的实现与应用

    流动效果在3D领域有着广泛的应用场景,如上图中医学领域可通过3D的流动直观的观察人体血液的流动,燃气领域可用于监控管道内流动的液体或气体的流向.流速和温度等指标. 如今企业数据中心机房普遍面临着设备散 ...

  7. unity 随机数_Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  8. Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  9. 【Python 3.7】分子运动:修改 rw_visual.py,将其中的 plt.scatter() 替换为 plt.plot() 。为 模拟花粉在水滴表面的运动路径

    [Python 3.7]}分子运动:修改 rw_visual.py,将其中的 plt.scatter() 替换为 plt.plot() .为 模拟花粉在水滴表面的运动路径,向 plt.plot() 传 ...

  10. 主界面边框流动效果长时间挂机后会卡顿

    1)主界面边框流动效果长时间挂机后会卡顿 ​2)检测内存是否超过阈值问题 3)堆内存会持续上升,如何用UWA报告来分析 4)关于AssetBundle加密这块,如何重新实现LoadFromFile接口 ...

最新文章

  1. 通用社区登陆组件技术分享(开源)中篇:OAuth 登陆组件流程及组件集成方法...
  2. 347. Top K Frequent Elements 前 K 个高频元素
  3. Linux下进程间通信方式——信号量(Semaphore)
  4. 《scikit-learn》数据预处理与特征工程(三)特征选择
  5. DLL的Export和Import及extern
  6. mysql5.1 系列 关于用户授权的一个bug
  7. 服务器硬盘一般怎样备份,GHOST对硬盘系统分区(一般是C盘)的备份和恢复图文教程,对操作系统的备份和恢复...
  8. 2018中国食品工业年鉴2017PDF版
  9. 焕然一新的 Vue3 中文文档来了!
  10. 项目启动时就执行某些操作、@Scheduled定时项目启动时执行一次
  11. paypal php 退款,PayPal的Restful-API方式退款、WEB支付、回调
  12. 患上糖尿病,为什么要做OCT眼底照相检查?
  13. .git文件泄露的一次渗透darkhole2
  14. c语言函数大全 pdf,C语言标准库函数大全.pdf
  15. linux 开机画面
  16. 悼念512汶川大地震遇难同胞——重建希望小学
  17. 互联网产品经理(PM)的工作内容和职责
  18. OpenLayers加载WMS
  19. Word让目录页码和正文页码独立分开计算,分隔符中分页符、“下一页”分节符的区别与使用选择
  20. rtthread工业使用_在STM32平台跑RT-Thread下的C++详尽使用指南

热门文章

  1. 阿里云oss中解决IE浏览器下载中文文件时乱码问题
  2. win7“您可能没有权限使用网络资源”的解决办法
  3. Vue CLI脚手架安装及使用
  4. 如何安全删除电脑上的个人信息和隐私资料
  5. 论《计算机网络技术》与素质教育
  6. 用python的re库统计《斗破苍穹》词频
  7. absolute 宽度自适应
  8. 网络综合布线应用指南
  9. react从入门到入魔
  10. Excel 某招聘网站职位分析项目