效果图2。
动画线框图。
粒子流的大体情况如下图。
先来看看树体生长的制作,下图是从根部长出的第一个粒子的产生结构分析图。
定义这个粒子的初始形态,这样以来由它所引导出的左右树支树干就全是这种形态了。
给树干加上一点扭曲。
树干底部是不能分叉的,如图。
产生分叉的测试,我并没有让它将粒子发送到其他事件,所以分叉后的粒子会受它影响继续分叉。
新长出的树支总是比老的的树支或树干细的,而且这种粗细变化是渐变的。
如图。
这里的树支是不长树叶的,所以长到一定时间后会生出长满树叶的柳梢,这也就需要下一个事件来控制。
同理,还是用这个测试来产生分叉的柳梢,只稍作了改动。
控制柳梢的生长。
引导柳树生长的粒子就已经设置好了,最后用一个Delete操纵器限制引导柳梢的粒子的寿命在45左右,不过它们是不参与渲染着色的,这里再次用到了这个分裂产卵(Spawn)的测试来制造树体。
看到 [树干树支长粗] 的这个事件来,这和上面那个使树支逐渐变细的缩放操纵是一个道理,只不过在这里是让树体长粗。
这样一棵光秃秃的柳树就诞生了。为了不让它显得一毛不拔,这里加了一个环节。
先来看一下一支树叶的生长动画,直接用Mopher修改器就可以弄出来了。
要使每个粒子都象这片树叶一样,得用 关联形态操纵器(Shape Instance)。 需要关注的是要钩选支持变形动画那一项和下面的关键帧偏移方式,另外,叶子物体的轴心必须在叶柄上。
使树叶生长方向不至于乱七八糟,需要加一个旋转操纵器来控制一下。
在所有树叶中挑出一些将会脱落的树叶。 在前面那个线框的预览动画中这些树叶是以黄色显示的。
这些将会脱落的树叶在年龄到达66左右(+/-33)时脱落下来,用年龄测试(Age Test)解决。
关于树叶的脱落如图。
为了使引导粒子不被渲染,这只是简单的在第一个事件中指定了个透明材质,当然也可以在不被渲染的事件标题栏上点右键属性并取消renderable树干材质在下面指定。
看看这个材质,为了使树枝的生长点附近的颜色偏绿,我用了ParticalAge贴图,其下的子贴图直接用渐变贴图调出来。而渐变的角度在渲染出来后就将呈现为树的受光角度,当然这属于作假的方法。
将其寿命定为83,会发现在Delete上面的AgeTest中测试的年龄为50,这是因为我并不是真想用Delete来干掉粒子,因此在粒子年龄大于50后将进入停止生长的事件中,在那指定了一个静态材质,它于粒子年龄在50时所呈现的材质相同。
至于树叶粒子的材质就直接继承树叶物体的了,只是在ShapeInstance(关联形态)的参数中要钩选Acquire Material。 但由于发送到其他事件后就无法继承,我只好笨拙地把这个操纵器在之后的所有事件中都复制了一个。
如果你觉得做实体的树会更好而你的电脑也还不错的话可以试试用BlobMesh来生成真实的网格树干,方法很简单,在场景中建立一个BlobMesh并入图选种粒子源1和其中相应的事件就行了。 许要提及的是BlobMesh的尺寸(Size)在这没有作用,是受粒子尺寸控制的,也就是说它会随着粒子的长大而变粗。另外在使用木纹的3D程序贴图时可以看到木纹的生长。这些都是很好的特性,然而它也有弊端,你必须把网格细分到足够小以产生较细的树枝。
除此,粒子的数量必须足够以使树枝不至于脱节,当然这么做会得到更真实的效果。
由于计算机速度限制而不得不改用小平面来解决。对PF稍微了解一点的人都会知道它在预览时是很慢的,尤其是在帧数比较靠后的时候,顺着时间拨动时间滑块还稍微强点,而逆拨却会造成类似死机的情况发生。因为max会花大量时间来从第0帧或第一个粒子出生的那帧来逐步推理出当前帧的精确情况。 而渲染是反倒会觉得很快,毕竟每帧只须在前一帧的基础上作一次推理计算。 于是制作是在粒子动画中最耗时的环节。