AE表达式.doc_第1页
AE表达式.doc_第2页
AE表达式.doc_第3页
AE表达式.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ae简单表达式32010年06月14日 星期一 19:53我想做钟摆的周期性振动,既然是周期性的,那么自然而然的就想到的用sin、cos这样的函数,在AE里我找到了Math.sin(val)这样的函数,先建一层10*150模拟一下钟摆(懒),把它的锚点移到上面;先给钟摆层的Rotation加了expression:Math.sin(time)结果发现动是动了起来,但和没动也没什么差别,不细看是看不出来,因为sin的值域是1到1,也就是说这时的旋转角度是1度到1度,于是在后面我就乘上了45做为振幅,即旋转范围在-45度到45度变化Math.sin(time)*45这回效果是明显了,但动的太慢了,那么就只能在振动周期上下功夫了,time表示的是当前的秒数,它决定了钟摆的振动周期,在这里val是以弧度为单位的,不象DF中sin中val的单位是度(而DF和Shake中time的单位不是秒而是帧,Shake中val表示的也是弧度),也就是说在AE和Shake里当val的值达到6.28的整数倍时,才完成了一个周期,而在DF中,val是达到360的整数倍时才完成一个周期,如此这般,我用了下面的表达式:Math.sin(time*6.28)*45即Math.sin(time*6.28*1)*456.28后面乘上一个“1”表示1秒走一周,如果把“1”改为“1/5则表示5秒钟才走一周成了!而且摆动是附和实际的,在钟摆越往高处摆速度会越来越慢,而落下来时是越来越快的这时钟摆总是指向下的,废话,钟摆当然向下垂了,但要做不倒翁一类中心在下面的东东呢,那就给它加一个初始角吧Math.sin(time*6.28/3)*45+180经过几次试验终于摸到了一些门道,高兴ing!这个函数的意义是弄明白了,我又由此想到要是横着并列一些小棍,不停的振动,棍的下方粘着一个小球,在棍子下端接触时被粘到另一根棍上,好象小球被一根根的棍粘走了一样怎么做呢?是不是有点得寸进尺:)不要说用跟踪去做,我们这里要讨论的是表达式的运用!想ing.我稍微修正了一下,供大家直接调用钟摆的运动,Rotation属性的表达式,请注意调整layer的中心位置T = 1/2; / 运动的周期(默认值为2秒)rate = T*time*(2*Math.PI); / 角速度range = 20; / 摆动的开角(单边)Math.cos(rate)*range-90; / 90为起始位置修正值,不同的中心可能有不同的值赫赫 如果只是一个摆的话,一切都简单。用能量求的话,只能求出特定高度的速度,或者特定速度时的高度,不能推导出钟摆的运动方程式。要推出一个一般变加速运动的参数方程式,好像不是一个高中物理问题吧。但在这里钟摆的角加速度已知,应可以求得重锤的瞬时切线方向的加速度,然后分解这个加速度为水平和垂直方向,这样才得运动方程式。关键是这里有3个钟摆传递重锤,因此重锤的运动曲线为摆线,求“变加速摆线运动的运动方程式”对我来说挺难的。还不如用做重锤关键帧的方法来的快。不过oaklee上面的变通不知道是不是用手动对位的方法,我想应该可以用到null空物体!作绳子的子物体?你用条件判断语句,其实也跟关键帧差不多了。而且你的条件判断语句如果严格来说,效率还比较低。因为if的检测是每一个时间单位检测一次。你这样理解这个球运动的方式,其实就是变成了分段函数了,而实际上,这个球的运动轨迹应该可以理解成一个统一的方程式。你的方式其实跟我的“变通”并没有本质区别,我是做了两个一模一样的钟摆(每个小球的都跟着钟摆转),然后设置了小球的透明度的表达式(而且给的是钟摆的周期为参数,因此不需要if判断,后来觉得表达式太繁琐,用了关键帧,调整起来更方便)。我想我们的需要研究出一个统一的方程式。对于单摆传小球的这个问题一开始我们都只是想到了对小球用表达式做一种曲线形式的位移,并加以速度上的控制,我想了好长时间,也只能让小球沿着几个摆锤做简单的曲线运动,而对于速度的变化却实在是感到头疼,还是物理没学好:)后来就想让小球也和单摆一样做旋转运动,这样问题就简单的多了。(事实证明这样做是可行的偷笑中)通过前面的研究,我们对用表达式做旋转运动应该不成问题,关键在于如何在特定是时间改变小球的位置,让它和单摆的运动相匹配。下面说一下做法:(喝了口水,清了清嗓子)1、新建一层(10*150)当单摆,并把它的锚点移到上面做为圆心2、对它的Rotation加表达式:Math.sin(time*2*Math.PI/2+Math.PI/2)*45这里的周期是2秒,也就是说单摆从最左摆到最右是正好1秒钟,让它摆动的最大幅度是45度,这样便于计算,“Math.PI/2”是相位角,是让单摆提前摆动1/4周期,再复制两层,把中间一层的表达式改为:Math.sin(time*2*Math.PI/2Math.PI/2)*45相位变成了“Math.pi/2”,让它的摆动落后1/4周期,这样两个摆的运动正好相反3、下面就是对位置了,把第一、三摆分别向左、右移动到适当位置,让它们首尾相接,其实它们的位置最好是计算出来,上面说的45度好计算就是这个原因,算法无非就是三角函数,手工调整也问题不大,这里就不罗嗦了4、做个园,当小球,我是不是太懒了:)5、下面我们就来做最关键的事了:填加表达式为了让小球跟着单摆走,就要在两个单摆相交的时候对小球的位置进行计算,我用了“if语句,它属于条件语句,就是说当什么什么成立时执行什么,它的语法结构是if ( A ) B else C 也就是说当“A”为真时,执行“B”,否则执行“C”首先移动小球到单摆的末端,再移动锚点到单摆的园心,这样确定了小球转动的位置关系(注:这是前提条件)给小球的Position加表达式:if (time=0) & (time=1) & (time=2) & (time=0) & (time=0) & (time=1) & (time=2) & (time=2) & (time=2) & (time3) r=”时,是必须你认认真真的一个字一个字的打上去,而后面的“this_comp.layer(c).rotation”你可以拖动表达式前面的象“”一样的小按钮到第三个单摆的Rotation上,这样是不是省了很多事让我们把表达式研究的更热烈些吧!向大家推荐JJ Giffords 的expression教程,/expressions/JJ算是资格最老的ae使用者之一了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论