第一节 什么是粒子
要想控制粒子首先就必须要从根本上了解粒子。
对粒子,Maya官方的解释是:“粒子物体是具有相同属性的多个粒子的集合,在一个粒子物体中可只包含一个粒子,也可包含成千上万个粒子。场景中的每个粒子必然属于某个粒子物体。”
打一个形象的比喻:如果把蜜蜂当作单个粒子,那么蜂巢就可以认为是粒子物体,蜂巢的属性决定了每一个蜜蜂的属性(例如:是黄蜂,还是马蜂;蜜蜂的总数量等等),然而每一个蜜蜂又拥有自己独特的属性(大小、速度、颜色、体积等等)。
在数据结构上,粒子物体被定义成一个数组(Array),这个数组里每一个位置都对应放的是一个粒子(PerParticle);而每一个粒子也被定义成一个数组,里面放的是每个粒子自身的属性(PerParticleAttributes)。在软件的界面上表现形式就是以下图中的形式:
这个界面对于大家应该很熟悉了,这里就不浪费墨水描述了。
通过对粒子的根本性了解后,我们应该了解,这里的每一个属性信息,存在于每一个粒子数据里面。也就是说Maya在进行计算的时候,每一帧都会对每一个粒子的这些属性进行读取和赋值运算。
也就是:场景里面有多少个粒子,Maya每一帧就要进行多少次属性运算!
我们同样可以在Maya中得到求证:
可以看到,在ComponentEdit里面,很清楚地将粒子的数据结构表现了出来:
particleShape1是粒子物体,也就是数组;
pt[i]是每一个粒子,也就是数组元素,同时自己也是数组包含了右边的所有元素(Position、Velocity、mass、LifeSpanPP都是粒子属性)。
有编程经验的人很容易就能够理解,但没有变成经验的也不用着急,只要知道这个概念,心里有数就可以了。
正如大家所了解的,只要控制了数组(particleShape1)里面每一个粒子(pt[i])所拥有的属性值,就等于控制了粒子。
而控制这些属性,其实就是修改这表格里面的数值而已。仅此而已,原理非常简单。
那么如何修改、用什么办法才能修改呢?只有两种办法:
1.直接在ComponetEdit里面修改。
这种办法最简单,可是当场景里面有上万个粒子的时候,困难就显而易见了;更大的问题在于不能动态的修改,因为你只能一次性的输入一个值。(如果你希望这个值随着时间变化而变化呢?比如随着时间增加,粒子体积变大?)
2.使用表达式修改。
使用表达式能够完全按照自己的意愿修改这些属性值。
怎样使用表达式修改?修改什么属性值能达到什么效果?这将是本书所要表达的所有内容。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。