ae表达式 果冻效果

      学习 2006-8-23 10:4

新建一comp,一solid,进行缩放,将solid的scale改为20*50然后对scale添加表达式:

max=10;
sudu=10;
decay=0.1;

x=scale[0]+max*Math.sin(sudu*(time-in_point))/Math.exp(decay*time);
y=scale[0]*scale[1]/x;
[x,y]

ps:这里sin函数中的time-in_point大家先不用管,可以先看作是time,可为什么要减去in_point呢?后面我会提及,接着往下看

这个表达式中,max表示缩放变化的最大值,sudu就是速度,是指变化的速度,decay是控制变化的时长的。大家可以自己改变数值来查看各种效果。

正弦函数的图大家肯定都知道,波浪形,在正一与负一之间往返,这就是我们这里变化的核心,我们只是把这个函数的函数值的范围进行控制,那就是max的作用,sin的函数值只是1到-1,max乘以函数使其函数值变成max到-max。

exp函数是指数函数,不断增加的图象,忘了的话翻高中数学书~~这里sin函数下面除以了exp函数,那就是表示对一个固定变化范围的函数值除以一个不断增大的函数值,其结果?~当然最终的数值是不断的减小的,而且是非线性的,这对最后的效果会显得很自然~


上面两段说的是x=scale[0]+max*Math.sin(sudu*(time-in_point))/Math.exp(decay*time);

我们来看y=scale[0]*scale[1]/x;

变化一下scale[0]*scale[1]/x就是scale[0]/x*scale[1],我们变换了一下位置而已,但是可以更好的理解,前两项scale[0]/x中,我们从上面的内容可以了解到,x=scale[0]+max*Math.sin(sudu*(time-in_point))/Math.exp(decay*time),这是指x要比scale[0]大了max*Math.sin(sudu*(time-in_point))/Math.exp(decay*time)此时的scale[0]/x当然的就是一个很小的数了,其结果基本同x的倒数相似了,但不等同于其倒数,我们换算一下就可以了解,此时x,y既能有关联,但关联尺度范围又不一样.


接着,预览,该solid开始上下左右的缩放,上下的幅度大于左右的,效果类似于果冻掉到桌子上。。。嘿嘿。为了看的效果明显一点,我把上面的表达式中的decay的0.1改成了0.3



标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}