| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1607 人关注过本帖
标题:制作《黑客帝国》中随机下落的字母效果
只看楼主 加入收藏
红山茶
Rank: 1
等 级:新手上路
帖 子:277
专家分:0
注 册:2004-4-13
收藏
 问题点数:0 回复次数:4 
制作《黑客帝国》中随机下落的字母效果
  
  翻译了一篇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编辑过]


搜索更多相关主题的帖子: 黑客帝国 字母 效果 随机 下落 
2004-04-15 03:12
jxywdx
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2004-12-24
收藏
得分:0 

巴实,我顶


北京超越思创科技有限公司,本公司主要代理3dlabs野猫全系列显卡,nuvision的立体眼镜及立体显示器,3dconnexion系列轨迹球:spaceball500,spacemouse,spacetraveller,数据手套,空间跟踪器,更多产品及服务请登录我们公司网站www..cn查讯,
如有任何需要可跟
2004-12-24 17:28
tiger5210
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-2-17
收藏
得分:0 
厉害

2005-02-26 16:21
Ghost№麻雀
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2004-10-15
收藏
得分:0 

这个好眼熟啊 我这里也有一个掉落字母 是个c代码 运行比较方便 虽然是DOS下的 不过意思是差不多的 #include<graphics.h> #include<dos.h> #include<stdlib.h> #include<stdio.h> #define NX 12 #define NY 25

int speed=9 ; union REGS regs ; int p[NX][3],px[NX],privatex=-1 ; char gtext[NX][2*NY][2];

/*读取鼠标状态*/ void readm(int*mx,int*my,int*mbutt) { /*,x0=*mx,y0=*my,b0=*mbutt*/ int xnew,ynew,bnew ; regs.x.ax=3 ; /* do*/ { int86(51,&regs,&regs); xnew=regs.x.cx ; ynew=regs.x.dx ; bnew=regs.x.bx ; } /* while(xnew==x0&&ynew==y0&&bnew==b0);*/ *mbutt=bnew ; *mx=xnew ; *my=ynew ; } void initrand() /*初始化随机数函数*/ { srand((unsigned)time(0)); } int randto(int s,int b) /*产生s-b的随机整数*/ { if(s>b) { s+=b ; b=s-b ; s-=b ; } if(s==b)b++; return rand()%(b+1-s)+s ; } void setregscolor(int colornum,int read0,int green0,int blue0) { union REGS r ; int num[]= { 0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63 } ; outportb(0x3c8,num[colornum%16]); outportb(0x3c9,read0); outportb(0x3c9,green0); outportb(0x3c9,blue0); }

void initcolor() { int i ; for(i=1;i<15;i++) setregscolor(i,0,i*4+3,0); setregscolor(15,10,63,40); } void initp() { int i ; for(i=0;i<NX;i++) { p[0]=randto(0,2*NY-1); p[1]=randto(1,3); p[2]=randto(0,2); } } void initpx() { int i ; for(i=0;i<NX;i++) px=randto(0,3); } void updtp() { int i,j ; for(i=0;i<NX;i++) { for(j=0;j<p[1];j++) { p[2]=(p[2]+1)%speed ; if(p[2]==0) p[0]=(NY*2+p[0]-1)%(NY*2); } } } void initgtext() { int i,j ; for(i=0;i<NX;i++) for(j=0;j<NY*2;j++) { gtext[j][0]=j<NY?' ':randto(48,49); gtext[j][1]=randto(1,14); } } void updtgtext() { int i,j ; for(i=0;i<NX;i++) { if(i!=privatex) { gtext[(p[0]+NY)%(NY*2)][0]=randto(48,49); gtext[(p[0]+NY)%(NY*2)][1]=randto(1,14); if(randto(1,2*NX)==1) for(j=0;j<NY/6;j++) gtext[(p[0]+NY+j)%(NY*2)][0]=' ' ; } } } void putword(int i,int j) { char s[2]; /*setfillstyle(1,0); bar(i*640/NX,j*480/NY,i*640/NX+640/NX-1,j*480/NY+480/NY-1); setcolor(0); sprintf(s,"%c",gtext[(p[0]+p[1]+j)%(NY*2)][0]); outtextxy(i*640/NX+210/NX,(j*3+(p[2]+2)%3-3)*160/NY,s);*/ setcolor(gtext[(p[0]+j)%(NY*2)][1]); sprintf(s,"%c",gtext[(p[0]+j)%(NY*2)][0]); outtextxy(i*640/NX+px*120/NX,(j*speed+p[2]-speed)*(480/speed)/NY,s); } void putgtext() { int i,j ; for(i=0;i<NX;i++) { bar(i*640/NX+px*120/NX-2,0,i*640/NX+px*120/NX+120/NX+2,480); for(j=0;j<NY;j++) putword(i,j); } } void inputtext(char t[],int n,int i) { int j ; if(n>NY-2)return ; for(j=0;j<n;j++) gtext[(NY*2-n+p[0]+j)%(NY*2)][0]=t[j],gtext[(NY*2-n+p[0]+j)%(NY*2)][1]=15 ; }

void main() { int gd=DETECT,gm,i,x=0,y=0,b=0 ; char t[][15]= { { 84,67,32,73,83,32,67,79,79,76 } , { 67,79,79,76,32,76,89,78,78 } , { 78,66,85,32,76,89,78,78,32,76,69,69 } , { 87,69,32,32,67,65,78,32,68,79 } } ; int tn[]= { 10,9,12,10 } ; initgraph(&gd,&gm,""); readm(&x,&y,&b); initrand(); initp(); initpx(); setfillstyle(1,1); i=0 ; p[0][1]=2 ; initcolor(); { initgtext(); while(!kbhit()) { int tx=0,ty=0,tb=0 ; readm(&tx,&ty,&tb); if(tx!=x||ty!=y||tb!=b)break ; if(i==420) { int tx ; tx=randto(0,3); privatex=randto(0,NX-1); i=0 ; inputtext(t[tx],tn[tx],privatex); } if(i==NY)privatex=-1 ; i++; putgtext(); updtp(); updtgtext(); } } closegraph(); } /*end*/

[此贴子已经被作者于2005-3-27 9:30:07编辑过]


http://www./myfe/upload/flash/127/1264184_1121270045.swf
2005-03-27 09:28
november
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-3-26
收藏
得分:0 
强人

2005-04-04 08:12
快速回复:制作《黑客帝国》中随机下落的字母效果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved