发信人: wds1234max(猪头三)
整理人: avexdesign(2003-11-11 19:49:47), 站内信件
|
从北京回来后空闲时间比较多,有空就学习了一下表达式。写点心得算是和大家共同学习。
写得不好还请指正。
一,初识表达式:
在埸景中建立一个球体和一个立方体,取名为ball,box.
设置表达式快鍵为ctrl+e或者在window/animation editors/expression edior打开表达式的编辑框。
保证球被选择。
现在我们要用球的位移来控制立方体的位移。
在expressino name中输入表达式名称(也可以不输入,maya会自动创建一个名称“expression1”并递增 )
基本格式:
物体名.可控制项=物体名.可控制项; //注解
在编辑窗口中输入:
box.ty=ball.ty;
单击Create创建了一个表达式。如果语法上有错误命令行会提出。
注意:(当创建完成后原来的create会变成edit,每对表达式进行修改后一定要点击edit。
“;”号是一句的结束。如果不加上语法就会有错误。maya不会执行表达式。)
现在移动球体Y轴,立方体也跟着做同样的运动。
也可以输入:
box.translateY=ball.translateY;
两个表达式是完全一样的。第一个是简写。t为translate,y是轴。
现在对这个表达式做一些修改
box.ty=ball.ty*2;
立方体的Y轴运动等球体Y轴运动乘2。这样当球的Y轴为1时立方体Y轴就是2。
再输入:
box.ty=ball.ty*/2;
立方体的Y轴运动等球体Y轴运动除2。
用球的x轴移动来控制立方体的Y轴移动。
box.ty=ball.tx;
用球的x轴移动来控制立方体的z轴旋转。
box.rz=ball.tx;
移动球的X轴试试看立方体有什么变化。可能效果不是很明显。再改一下表达式。
box.rz=ball.tx*10;
当球X轴移动为1立方体就会旋转10度。
time,frame(maya的变量)的使用。
隐藏球和立方体。
建一个锥体改名为“cone”(名字和表达式里的名字要注意大小写相同)
cone.ty=time;
播放动画看看效果。
锥体的Y轴移动随着时间的递增而递增。
改写表达式为:
cone.ty=-time;
锥体的Y轴移动随着时间的递增而递减。
按下表达式编辑窗口下方的delete。删除当前的表达式。删除锥体。
把刚才隐藏的球和立方体显示出来.
在表达式窗口select filter/by expression name
选择“expression1”并修改表达式为:
box.rotateZ=ball.translateX*10;
ball.translateX=time;
我们可以针对时间做一些修改。
如:box.rotateZ=ball.translateX*10;
ball.translateX=time*2;
或者:box.rotateZ=ball.translateX*10;
ball.translateX=time/2;
box.rotateZ=ball.translateX*10;
ball.translateX=-time;
再对表达式进行修改:
box.rotateZ=ball.translateX*10;
ball.translateX=frame;
frame是帧。第一句:“立方体Z轴旋转等于球的X轴移动乘10”
第二句:“球的X轴移动等于帧,也就是说当动画播放时,每增加一帧,球就会向X正方向移动1个单位”
总结:“因为立方体Z轴旋转等于球的X轴移动乘10,而球的X轴移动又等于帧,
所以动画播放时帧不但控制了球的X轴移动,同时也控制了立方体Z轴的旋转”
如果觉得球的移动太快了,可以改写表达式为:
box.rotateZ=ball.translateX*10;
ball.translateX=frame/8;
下面我们使用运用上面学习的内容来制作一个车轮向前运动的动画表达式。
新建埸景,创建一个平面和一个圆柱(创建的轴向为X)。放大平面,将圆柱改名为“tyre”并进行适当的修改使它更像一个车轮。设sections为“30”增加分段便于观察。
打开表达式的编辑框。编辑表达式为:
tyre.rotateX=tyre.translateZ;
现在我们已经创建了一个用移动来控制旋转表达式。
移动圆柱的Z轴,好像没有什么效果。因为当圆柱体沿Z轴向前移动“1”单位时,其旋转角度仅为“1”
所以看起来变化不明显。现在修改这个表达式:
tyre.rotateX=tyre.translateZ*60;
再一次移动圆柱的Z轴。现在效果比较明显。但因为60是随意给的值,所以并不精确。
再一次改表达式:
tyre.rotateX=tyre.translateZ*360/(1*3.14);
“tyre.rotateX(圆柱的X轴旋转)=tyre.translateZ(圆柱的Z移动)*(360/(1*3.14))(求圆柱每移动1个单位,圆柱所旋转的角度值);(其中1为半径,3.14为圆周率)”
再移动圆柱的Z轴看看。现在圆柱的旋转已经正确了。
还有图片和别的内容以后写完了才传上来,我的小猫太慢了!
---- 我是社会主义的接班人 |
|