Maya的动力学
系统和表达式是非常强大的,现在我们就来利用Maya的粒子系统和表达式来
制作随机变化下落的字母
效果。 
首先,打开Text Curves选项,将Text的类型设置为Poly,
输入全部26个
英文字母,从“a”到“z”,单击“Create”。

图1
打开Outline窗口,在这里能够找到Maya
自动创建的两个组:一个包含所有字母的曲线,另一个包含26个网格物体。删除包含有所有字母曲线的组,因为我们只需要包含全部多边形字母的组。 
现在我们需要编写一个Script来
重命名所有的多边形字母,这是为了其后能够更容易的重命名这些字母,当然也可以手动为它们重命名。 
int $i; 
string $t="abcdefghijklmnopqrstuvwxyz"; 
string $cmd="rename Trim_Char_"; 
for($i=1;$i<=26;$i++) 
{string $temp; 
$temp=eval("substring "+$t+" "+$i+" "+$i); 
print($temp); 
eval($cmd+$temp+"_1_1 "+"text"+$i); 
}; 
在Script Editor中输入上面的Script并运行,此时Outline窗口应该如下图所示。 

图2
选择所有的多边形字母和中心枢轴点,移动到abs(0,0,0),然后自由变换,之后将其全部隐藏。 
创建一个10*20 Nurbs平面;选择这个平面并加载一个粒子发射器(Particle Emitter),将发射器的类型设置为Surface;将这个平面围绕Z轴旋转180度;将发射器的的速度设置到15左右,发射率设为0.2。 
现在我们将为粒子形态(particleShape)节点添加一个属性(Attribute)。 
选择particleShape1节点,打开属性编辑器(Ettribute Editor),单击“General”下的“Add Dynamic Attributes”部分,添加一个名为“index”的属性并设置其类型为 “Array”。 

图3
接下来在Outline窗口中选择所有的多边形字母(不要选择这个组),创建粒子替代物(Particle Instancer)。在Option窗口中钩选“Allow All Data Types”,在“Particle Object To Instance”选项中选择particleShape1。

图4
现在将会看到场景中每个粒子都变成了字母“a”。我们将加载一个表达式来实现用随机变化的字母来替代每个粒子。 
选择particleShape1并且打开表达式编辑器(Expression Editor)。添加一个执行时间表达式(Runtime Expression)。 
index=rand(1,26); 
播放动画,将会发现每个粒子在每一帧都被随机变化的字母所替代。现在已经非常接近我们想要的效果了,但还需要编写一些表达式来控制每个粒子的运动。 
选择particleshape1并且添加另一个数组属性(Array Attribute)为“Gate”。无需其他设置,加载执行时间表达式(Runtime Expression)到particleshape1节点下。 
particleShape1.index=rand(1,26); 
vector $temp=particleShape1.worldVelocity; 
if ($temp.y<=rand(-10,-5)) 
{ particleShape1.gate=1;}; 
if ($temp.y>=(-1)) 
{particleShape1.gate=0;}; 
if (particleShape1.gate==1){ particleShape1.acceleration=<<0,rand(20,25),0>>; 
//print("aaaa"); 
}; 
if (particleShape1.gate==0) { 
particleShape1.acceleration=<<0,rand(-25,-20),0>>; 
//print("bbbb"); 
}; 
最后,调整摄象机并进行渲染。渲染完成后可以用Maya Fusion或其它软件来加载一些运动模糊/拖尾效果。下面是最终的效果。 

图5