Maya制作在粒子群中挖洞 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

MAYA的粒子系统,粒子系统不同于其他OBJECTIVE,除了对其进行宏观的位置变化,缩放,旋转,几乎不可能像ploy 和nurbs一样进行细节微调,想象一下一个有10万以上的粒子群,要把它变成个什么样子,我想没有什么人可有这样的耐性,有幸的是在maya中有两种方法可以对其进行控制变换,第一就是很常用的fields(力场)和goal,使用fields可以变换粒子个体在空间中的位置,速度等等,但要完全取得粒子系统的控制权那就是使用expression + goal,

Maya制作在粒子群中挖洞

。我接下来要讲的就是利用这种方法在各volume粒子群中挖出个球体。

首先让我们先弄清些概念

距离的公式,假设有两个物体 a,b 分布在三维空间中,他们的空间坐标分别为a(x1,y1,z1),b(x2,y2,z2),则他们的距离D关系为 D = [(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]^(1/2) ("^" 为次数),

启动maya,按f4进入dynamics mode,选择particles => particle tools,按resest tools,还原至初始状态,check "create Particle Grid",在work space(top) 中右上角点上一点,左下角点上一点,这将定义粒子的覆盖面,别分的太开,除非你有超快的机器,按下insert 键,使用鼠标m-key在left,side中调节确保两个点不在同直线上(垂直,水平),按下enter,workspace 中会出现个立方体状的粒子群,我们的目的就是在他中间挖个洞。创建个ball,在创建个locator,使用animation中的constrain =>point功能建立起ball 与locator只见的关系,我们移动locator球体应该移动,如果没有得到此效果undo,改变ball与locator选择顺序,选择ball,按shift选择粒子执行particles => goal option,uncheck"uns transform. as goal,set goal weight 0.99,按creat,

电脑资料

Maya制作在粒子群中挖洞》(https://www.unjs.com)。选择粒子进入attributes=>particlesShape1=> conserve = 0,gaol smoothness = 3,nurbsSphereShape1 = 0.9。播放动画粒子会集中到球体的表面,但我们要的结果是球体内部的粒子集中至球体表面,而其他的维持不动,将locator放在粒子群的中心,进入windows => animation editors express 写入以下expression:

vector $position = particleShape1.worldPosition;
if(($position.x-nurbsSphere1.translateX)*($position.x-nurbsSphere1.translateX)+($position.y-nurbsSphere1.translateY)*($position.y-nurbsSphere1.translateY)+($position.z-nurbsSphere1.translateZ)* ($position.z-nurbsSphere1.translateZ)<= makeNurbSphere1.radius)
particleShape1.goalPP = 1;
else
particleShape1.goalPP = 0;

现在我来解释一下上面的expression:

line 1 使用来将每个粒子的坐标数据分成3个普通的浮点数值(xyz), $position.x = x 依次类推;

line 2 是个判断操作,判段每个粒子到ball中心的位置是不是小与或等于圆球的半径,见上公式,当然也用pow直接取得平方值;

line 3 是那么goal对每个条件成立的粒子起1的作用也就是100%牵引;

line 4 除此之外;

line 5 那么goal对每个条件成立的粒子起0的作用也就是不起作用。

播放动画可以看到在球体内部的粒子集中到球体的表面。

目标达成。

教程完。

最新文章