关于ae的wiggle的表达式问题
区别:表达不同,含义不同。
一、表达不同:
第一个表达式:
y=wiggle(1,40);
value+[y[0],y[1]]
value+[x[0],y[1]]
第二个表达式:
x=wiggle(1,50);
y=wiggle(1,40);
二、含义不同:
在原来的数值上+x(这里的x不是赋值的变量x)轴取wiggle(1,50),在y(这里的y不是赋值的变量y)轴上取wiggle(1,40);最后的结果应该是x,y轴上分别抖动,x轴抖动的是(1,50)y轴抖动的是(1,40)。
对于time的表达式来说,在做一些动画的过程中式经常用到的,基本形式是time*n(n可以是常量,也可以是变量),意思就是每隔多少帧对你添加的关键帧做出抽帧的动作。下面我是以fractal noise(分形噪波)的演变动画来说明的。
举例来说
表达式x/y,分别使自由变量x和y定值为10和5,其输出为数字2;但在y值为0时则没有定义。
一个表达式的赋值和算符的定义以及数值的定义域是有关联的。两个表达式若被说是等值的,表示对于自由变量任意的定值,两个表达式都会有相同的输出,即它们代表同一个函数。
一个表达式必须是合式的。亦即,其每个算符都必须有正确的输入数量,在正确的地方。如表达式2+3便是合式的;而表达式*2+则不是合式的,至少不是算术的一般标记方式。
以上内容参考:百度百科-表达式
x=wiggle(1,50);
y=wiggle(1,40);
value+(x,y)
1:这句表达式对于变量x的赋值(wiggle(1,50))无意义!
2:虽然给变量x赋值了,但是你最后的value+(x,y) 其实只执行了 value+y!如果把x与y的位置相互调换一下它会执行value+x,为什么?因为你最后一句返回数据的时候value+(x,y),value就不说了,关键问题出在了(x,y)这个小句子上面,首先(value1,value2)你把它们括起来想做什么???比如sub(value1,value2)这个我想让两个数据相减!比如add,或者mul.....都可以,所以软件不知道你干什么所以他们就从上往下计算,(x的值作废,被第二行的y值代替)然后就只执行了value+y。(虽然软件没报错!!),写这个表达式的人估计没仔细看,从第二个表达式来看不难发现x,y 是一个阵列!也就是"[value1,value2,value3,...]"这个形式。如果你把他写成
x=wiggle(1,50);
y=wiggle(1,40);
value+[x,y]
这时AE会报错,因为你写的这个表达式的最后返回的数据多于了你的阵列,这个问题留着往下看↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓(第一个表达式出现了问题,所以我没办法对比了!如何改?我会改成
wig=wiggle(1,50);
value+[wig[0],wig[1]]
或者是
wig=wiggle(1,40);
value+[wig[0],wig[1]]
)
再或者是(以下列出的是第二个表达式的内容了)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wig1=wiggle(1,50);
wig2=wiggle(1,40);
value+[wig1[0],wig2[1]]
和
wig1=wiggle(1,50);
wig2=wiggle(1,40);
value+[wig2[0],wig1[1]]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么这么改咱们看完第二个表达式就行了
第二个表达式:
x=wiggle(1,50);
y=wiggle(1,40);
value+[x[0],y[1]]
我直接说他的意思了:在原来的数值上+x(这里的x不是你赋值的变量x)轴取wiggle(1,50),在y(这里的y不是你赋值的变量y)轴上取wiggle(1,40);不知道你能不能看懂,他们最后的结果应该是x,y轴上分别抖动,x轴抖动的是(1,50) y轴抖动的是(1,40)。也就是不等比抖动!从第一个表达式纠正改过以后的:
y=wiggle(1,40);
value+[y[0],y[1]]
这个表达式是x,y轴等比抖动的!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
纯人工,望采纳!!!!