制作《黑客帝国》中随机下落的字母效果
翻译了一篇Maya的教程,希望大家捧个场! 用Maya制作《黑客帝国》中随机变化下落的字母效果 Maya的表达式和动力学系统是非常强大的。 我们能用玛雅制作出非常酷的效果。现在我们来学习如何用Maya的粒子系统和表达式来制作电影《黑客帝国》中的随机变化的下落字母的效果。
首先,我们需要创建全部的26个英文字母,从“A”到“Z”。菜单命令: Creat----text, 打开选项,设置text的类型为poly。输入“abcd.......xyz”到text栏里。单击“Create”。
[IMG]http://www.[/IMG]
现在你有了你想要的全部的字母。打开outline窗口,在这里你能找到Maya自动创建的两个组。一个包含所有字母全部的曲线和另一个包含着26个网格物体的组。删除包含有所有字母曲线的那个组。在这里我们只需要那个包含有全部多边形字母的组。 现在我们需要编写一个script来重命名所有的多边形字母物体,这是为了在之后的use.use script里更容易的重命名这些字母。当然你也可以以后手动的为它们重命名。(我不敢保证这个script是最好的,也许你能写出一个比它更好的。)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到script editor中并且执行它。现在你的outline窗口应该如下图所示。
[IMG]http://www.[/IMG]
现在选择所有的多边形字母和中心枢轴点,移动到abs(0,0,0),然后自由变换,之后将它们全部隐藏起来。 创建一个10*20 nurbs平面。选择这个平面并且为她加载一个粒子发射器(particle emitter)。将发射器的类型设置为surface型。将这个平面围绕Z轴旋转180度。将发射器的的速度(speed)设置到15左右,发射率设置到0.2。 现在我们将为粒子形态(particleshape)节点添加一个属性(attribute)。 选择particleshape1节点,打开属性编辑器(attribute editor)。单击“general”下的“add dynamic attributes”部分。添加一个新的属性命名为“index”并且设置其属性类型为(attribute type)“Array”。
[IMG]http://www.[/IMG]
接下来创建一个粒子替代物(particleinstancer)。在outline窗口中选择所有的多边形字母(不要选择这个组),创建粒子替代物(particle instancer)。在选项(option)窗口中,钩选“Allow All data types”。在“Particle Object To Instance”选项中选择particleshape1。
[IMG]http://www.[/IMG]
现在你将看到场景中所有的每个粒子都变成了字母“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或者其它的软件来加载一些运动模糊或者拖尾效果。下面的图片是最终效果。
[IMG]http://www.[/IMG]
[此贴子已经被作者于2004-06-29 21:38:02编辑过]