上一篇 | 下一篇

用Maya制作随机变化下落的字母效果

发布: 2007-1-25 08:06 | 作者: partical | 来源: aougu | 查看: 302次

Maya的动力学系统和表达式是非常强大的,现在我们就来利用Maya的粒子系统和表达式来制作随机变化下落的字母效果。
\Yd Mwd'r 奥古多媒体"R3Q/P@uxb
首先,打开Text Curves选项,将Text的类型设置为Poly,输入全部26个英文字母,从“a”到“z”,单击“Create”。
*K B;JysaR`%C G 奥古多媒体2]:[ gWSh
奥古多媒体,X M+~"WEo&?u9~3s"{

Qwo8fm:sy 图1
$V qUmWJ 打开Outline窗口,在这里能够找到Maya自动创建的两个组:一个包含所有字母的曲线,另一个包含26个网格物体。删除包含有所有字母曲线的组,因为我们只需要包含全部多边形字母的组。
#{DO1X5d2sh
0p3t%p ^BG5W 现在我们需要编写一个Script来重命名所有的多边形字母,这是为了其后能够更容易的重命名这些字母,当然也可以手动为它们重命名。
bq#n$J+U"W1j V U_4f 奥古多媒体)p rRaZ]z Gv
int $i;
Gm9pHH$MOs,Zt4a,Y-a string $t="abcdefghijklmnopqrstuvwxyz"; 奥古多媒体 F&p#T t_9g
string $cmd="rename Trim_Char_";
iy)W UW+[,U'BM[&a for($i=1;$i<=26;$i++) 奥古多媒体t,C`M1Ng
{string $temp;
~2Q8ZiST $temp=eval("substring "+$t+" "+$i+" "+$i);
)Ybl1O L3qG w print($temp);
)O/|+Zl7{U eval($cmd+$temp+"_1_1 "+"text"+$i);
*T$F kuVa9w6W|K }; 奥古多媒体$LO ]r#C.f

#F*loI8lq(G(]-G 在Script Editor中输入上面的Script并运行,此时Outline窗口应该如下图所示。
8t{p_\C 奥古多媒体:cq?g2n&`

b;oh)w5f'j q*{Q:E 图2奥古多媒体K t+Uw'Y(Rc

p*sU tvT} 选择所有的多边形字母和中心枢轴点,移动到abs(0,0,0),然后自由变换,之后将其全部隐藏。 奥古多媒体? XG$~ K

3h8uYj;Z0C;} 创建一个10*20 Nurbs平面;选择这个平面并加载一个粒子发射器(Particle Emitter),将发射器的类型设置为Surface;将这个平面围绕Z轴旋转180度;将发射器的的速度设置到15左右,发射率设为0.2。 奥古多媒体7_BULb:d

Mk PO"}vr9h*bm 现在我们将为粒子形态(particleShape)节点添加一个属性(Attribute)。
^m~8Lx)E Y 奥古多媒体&Z0nT R B|
选择particleShape1节点,打开属性编辑器(Ettribute Editor),单击“General”下的“Add Dynamic Attributes”部分,添加一个名为“index”的属性并设置其类型为 “Array”。
%W*}/F4haxgw 奥古多媒体{WuY5t-[8L

nK5R lz 图3
4Oq2c2D3vy&{x`
!g2O9P;R4I 接下来在Outline窗口中选择所有的多边形字母(不要选择这个组),创建粒子替代物(Particle Instancer)。在Option窗口中钩选“Allow All Data Types”,在“Particle Object To Instance”选项中选择particleShape1。奥古多媒体M.J~(l1j&}e+L

e8g:a8E_0D!P 奥古多媒体q}R!NQg
图4
E/t*}aSe(g,e?E o
5os]-Om,? m2G0u 现在将会看到场景中每个粒子都变成了字母“a”。我们将加载一个表达式来实现用随机变化的字母来替代每个粒子。 奥古多媒体G sy3f.X"O.^:qz
奥古多媒体u%Mx9EY t'O
选择particleShape1并且打开表达式编辑器(Expression Editor)。添加一个执行时间表达式(Runtime Expression)。
5a1v N5O,T(j 奥古多媒体8qW:PI u'[
index=rand(1,26);
B5r7k5|#S 奥古多媒体;Vg(hp Yi`D C9u
播放动画,将会发现每个粒子在每一帧都被随机变化的字母所替代。现在已经非常接近我们想要的效果了,但还需要编写一些表达式来控制每个粒子的运动。 奥古多媒体:iI1m#[)WH%u`M"uZ
奥古多媒体Z^A1?7C E YY
选择particleshape1并且添加另一个数组属性(Array Attribute)为“Gate”。无需其他设置,加载执行时间表达式(Runtime Expression)到particleshape1节点下。 奥古多媒体A.`&VD5u O {"@
奥古多媒体G2c)E ^-ia
particleShape1.index=rand(1,26); 奥古多媒体nw9ur+A%Ss}
vector $temp=particleShape1.worldVelocity; 奥古多媒体4M+w[~_ }.@
if ($temp.y<=rand(-10,-5))
e4Y*Sv8VS { particleShape1.gate=1;}; 奥古多媒体1J U Z|s+a)Be
if ($temp.y>=(-1)) 奥古多媒体 Xn2J8[-_\,lD9T
{particleShape1.gate=0;};
M q0_K2ndT%W
;N6dl D3`T1k-F|t~ if (particleShape1.gate==1){ particleShape1.acceleration=<<0,rand(20,25),0>>; 奥古多媒体h `L"u:{R uJZn
//print("aaaa");
4[ X0j/p M&lA }; 奥古多媒体1x n$E w;qS
if (particleShape1.gate==0) { 奥古多媒体(Sd*~2OrU G
particleShape1.acceleration=<<0,rand(-25,-20),0>>; 奥古多媒体 cF x sZJ"g
//print("bbbb");
:j3f[BAH };
#X;q#U @2@:C"j 奥古多媒体%Q@1i i;Jp:X
最后,调整摄象机并进行渲染。渲染完成后可以用Maya Fusion或其它软件来加载一些运动模糊/拖尾效果。下面是最终的效果。
[-gNG? ]-j.j3pR D 奥古多媒体b5FUdW zn

Z bs T \ 图5

字号: | 推荐给好友

 

评分:0

我来说两句

seccode