摘要:Interpolation (插值方法)组中 提供了多种插值工具,通过线性或缓动曲线将数值在不同范围间平滑过渡,控制动画属性的变化速度和方式,适用于 After Effects 中创建自然、流畅和动态的动画效果。
Interpolation (插值方法)组中 提供了多种插值工具,通过线性或缓动曲线将数值在不同范围间平滑过渡,控制动画属性的变化速度和方式,适用于 After Effects 中创建自然、流畅和动态的动画效果。
linear( t, tMin, tMax, value1, value2 )
将输入值 t 从范围 [tMin, tMax] 线性地映射到范围 [value1, value2]。
参数:
t :要映射的输入值(Number)。
tMin :输入范围的最小值(Number)。
tMax :输入范围的最大值(Number)。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = tMax 时,返回 value2。当 tMin
应用:
适用于需要匀速、直接过渡的动画效果,如时间进度控制透明度或位置的平滑变化。
//示例 1:在0到6秒内,将时间线性映射到不透明度从20%到80%linear(time, 0, 6, 20, 80)//示例 2:获取当前帧数currentFrame = timeToFrames;// 将帧数从0到60线性映射到旋转从0度到360度rotationValue = linear(currentFrame, 0, 60, 0, 360);// 返回旋转角度rotationValue;//示例 3:生成数组[500,500]x = 0.5;linear(x,0,1,[0,0],[1000,1000]);linear( t, value1, value2 )
将归一化的 t 值(通常在 [0, 1] 范围内)线性映射到 [value1, value2] 范围。
相当于五参数的 linear 方法中省略了 tMin=0 及 tMax=1 两个参数。
参数:
t :要映射的输入值(Number)。通常在 [0, 1] 范围内。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = 1 时,返回 value2。当 0
应用:
适用于快速将滑块、正弦波等标准化值转换为特定范围。
//示例 1:生成数组[500,500]x = 0.5;linear(x,[0,0],[1000,1000]);//示例 2:假设滑块值在0到100范围内,先标准化到0到1x =effect("滑块控制")("滑块") / 100;// 将x从0到1线性映射到100到300linear(x, 100, 300)//示例 3:将正弦波结果(范围 -1到1)先映射到0到1sinVal=(Math.cos(time*3)+1)/2;// 将sinVal从0到1线性映射到0到360度rotation = linear(sinVal, 0, 360)ease( t, tMin, tMax, value1, value2 )
缓动。与具有五参数的 linear 方法类似 , 但插值过程中带有缓入缓出效果(Ease In and Out),使得动画在起点和终点的速度为 0,实现平滑过渡。
参数:
t :要映射的输入值(Number)。
tMin :输入范围的最小值(Number)。
tMax :输入范围的最大值(Number)。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = tMax 时,返回 value2。当 tMin
应用:
适用于需要自然过渡效果的动画,如缓慢启动和停止的位移动画。
// 示例 1:在0到6秒内,缓动地将不透明度从20%到80%ease(time, 0, 5, 20, 80)// 示例 2:获取音频振幅图层(来自于“关键帧辅助/将音频转换为关键帧”)的 "两个通道" 滑块值amplitude = thisComp.layer("音频振幅").effect("两个通道")("滑块");// 使用 ease 函数将振幅从 0 到 20 映射到位移从 100 到 -100yOffset = ease(amplitude, 0, 20, 100, -100);[position[0],position[1]+yOffset];ease( t,value1, value2 )
缓动。与具有三参数的 linear 方法类似 , 但插值过程中带有缓入缓出效果(Ease In and Out),使得动画在起点和终点的速度为 0,实现平滑过渡。
参数:
t :要映射的输入值(Number)。通常在 [0, 1] 范围内。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = 1 时,返回 value2。当 0
应用:
适用于创建柔和的属性变化,如渐变色的平滑过渡。
// 示例 1:使用正弦波(已映射到0~1)对图层旋转做缓动插值sinVal = (Math.sin(time) + 1) / 2;// 将sinVal从0到1缓动地映射到0到360度rotation = ease(sinVal, 0, 360)easeIn( t, tMin, tMax, value1, value2 )
缓入。与具有五参数的 linear 方法类似 , 只不过进行缓入插值(Ease In),即动画开始时(速度为 0)变化缓慢,随后逐渐加速。
参数:
t :要映射的输入值(Number)。
tMin :输入范围的最小值(Number)。
tMax :输入范围的最大值(Number)。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = tMax 时,返回 value2。当 tMin
应用:
适用于模拟加速启动的效果,如物体逐渐加速移动。
//示例 1:在0到2秒内,图层从左到右移动,起始移动较缓慢easeIn(time, 0, 2, [0, 200], [500, 200])//示例 2:获取滑块值(0到10范围)sliderVal = effect("滑块控制")("滑块");// 将滑块值从0到10缓入地映射到旋转角度从0到180度easeIn(sliderVal, 0, 10, 0, 180)easeIn( t, value1, value2 )
缓入。与具有三参数的 linear 方法类似 , 只不过进行缓入插值(Ease In),即动画开始时(速度为 0)变化缓慢,随后逐渐加速。
参数:
t :要映射的输入值(Number)。通常在 [0, 1] 范围内。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = 1 时,返回 value2。当 0
应用:
适用于创建动画起始部分缓慢启动的效果,如文本逐字出现或图层逐渐放大。
// 示例 :将一个 0~1 范围的数 x 缓动地映射到 0~180x = effect("滑块控制")("滑块"); // 0~1easeIn(x, 0, 180)easeOut( t, tMin, tMax, value1, value2 )
缓出。与具有五参数的 linear 方法类似 ,只不过 进行缓出插值(Ease Out),即动画在临近结束时缓慢减速,直至速度为 0。
参数:
t :要映射的输入值(Number)。
tMin :输入范围的最小值(Number)。
tMax :输入范围的最大值(Number)。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = tMax 时,返回 value2。当 tMin
应用:
适用于模拟减速停止的效果,如物体逐渐停止移动。
//示例 1:在0到3秒内,将缩放从d缓出到100%x = easeOut(time, 0, 3, 0, 1);[value[0]*x,value[1]*x]//示例 2:在位置属性上实现缓出的跳动效果,需事先为位置属性添加关键帧d = Math.abs(time - nearestKey(time).time); //当前时间距离最近关键帧的时间差(绝对值)yOffset = easeOut(d, 0, 0.1, 100, 0); //根据 d,使用 easeOut 将偏移量从 100 缓出地降到 0[position[0], position[1] - yOffset] //保持 X 轴位置不变,Y 轴向上偏移 yOffset 像素easeOut( t,value1, value2 )
缓出。与具有三参数的 linear 方法类似 ,只不过 进行缓出插值(Ease Out),即动画在临近结束时缓慢减速,直至速度为 0。
参数:
t :要映射的输入值(Number)。通常在 [0, 1] 范围内。
value1 :输出范围的起始值(Number 或 Array)。
value2 :输出范围的结束值(Number 或 Array)。
返回值:映射后的数值或数组(Number 或 Array)。
当 t = 1 时,返回 value2。当 0
应用:
适用于创建动画结尾部分缓慢过渡的效果,如按钮点击后的弹跳或图层逐渐淡出。
// 示例:使用正弦波(已映射到0~1)对图层位置的y轴做缓出插值sinVal = (Math.sin(time*3)+1)/2;// 将sinVal从0到1缓出地映射到y轴位移从0到100yPosition = easeOut(sinVal,0,100);// 返回新的位置[position[0],position[1]+yPosition]“点赞行美意,赞赏是鼓励”
来源:超耿教育