先看效果图
下面来讲解制作流程
1. 创建草的笔刷,适当调整参数如图。让草直一点,随后好任意旋转
调整笔刷生长动画。我们将主要通过设置start time来生成草地生长的动画。当然,如果你愿意,你还可以调整speed的值来获得不同的生长速度
重命名笔刷为:grass,创建一个空的组物体,我们将用它来放随后复制的笔刷物体。创建一个circle并作100帧的缩放动画。让circle发射粒子,速度为0,我们将在每一个粒子产生的地方放置一个笔刷。场景如图
选择粒子,创建creation expression:
string $grassN[]=`duplicate -rr -un grass`;//copy grass
parent $grassN[0] grassGrp; //put the duplicated brush under the grassGrp
vector $p=particleShape1.birthWorldPosition/2.5;//不知道为什么这个birthWorldPosition和绝对坐标只有出入。总较实际的小,所以我除了个系数。
move -a ($p.x) ($p.y) ($p.z) $grassN[0];
rotate -r 0 (rand(360)) 0 $grassN[0];//let brush natural
string $nTemp[]=`listHistory $grassN[0]`;//find duplicated brush curve
parent $nTemp[3] grassGrp;
string $cmd="setAttr "+$nTemp[1]+".startTime "+frame/25;//set the starting grow time
eval($cmd);
现在复制的笔刷能够顺利的生长了,但是回放的时候却不能自动删除,我们得在0帧的时候reset一下
选择grassGrp创建一个命名为reset的表达式:
if(frame==0)
{
select -r -hi grassGrp;//select group and it's children
select -tgl grassGrp; //deselect the group Obj
delete;
}