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 <= tMin 时,返回 value1。当 t >= tMax 时,返回 value2。当 tMin < t < tMax 时,返回线性插值后的值。

应用:

适用于需要匀速、直接过渡的动画效果,如时间进度控制透明度或位置的平滑变化。

//示例 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 <= 0 时,返回 value1。当 t >= 1 时,返回 value2。当 0 < t < 1 时,返回线性插值后的值。

应用:

适用于快速将滑块、正弦波等标准化值转换为特定范围。

//示例 1:生成数组[500,500]
x = 0.5;
linear(x,[0,0],[1000,1000]);

//示例 2:假设滑块值在0到100范围内,先标准化到0到1
x =effect("滑块控制")("滑块") / 100;
// 将x从0到1线性映射到100到300
linear(x, 100, 300)

//示例 3:将正弦波结果(范围 -1到1)先映射到0到1
sinVal=(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 <= tMin 时,返回 value1。当 t >= tMax 时,返回 value2。当 tMin < t < tMax 时,返回带缓动效果的插值值。

应用:

适用于需要自然过渡效果的动画,如缓慢启动和停止的位移动画。

// 示例 1:在0到6秒内,缓动地将不透明度从20%到80%
ease(time, 0, 5, 20, 80)

// 示例 2:获取音频振幅图层(来自于“关键帧辅助/将音频转换为关键帧”)的 "两个通道" 滑块值
amplitude = thisComp.layer("音频振幅").effect("两个通道")("滑块");
// 使用 ease 函数将振幅从 0 到 20 映射到位移从 100 到 -100
yOffset = 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 <= 0 时,返回 value1。当 t >= 1 时,返回 value2。当 0 < t < 1 时,返回带缓动效果的插值值。

应用:

适用于创建柔和的属性变化,如渐变色的平滑过渡。

// 示例 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 <= tMin 时,返回 value1。当 t >= tMax 时,返回 value2。当 tMin < t < tMax 时,返回带缓动效果的插值值。

应用:

适用于模拟加速启动的效果,如物体逐渐加速移动。

//示例 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 <= 0 时,返回 value1。当 t >= 1 时,返回 value2。当 0 < t < 1 时,返回带缓动效果的插值值。

应用:

适用于创建动画起始部分缓慢启动的效果,如文本逐字出现或图层逐渐放大。

// 示例 :将一个 0~1 范围的数 x 缓动地映射到 0~180
x = effect("滑块控制")("滑块"); // 0~1
easeIn(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 <= tMin 时,返回 value1。当 t >= tMax 时,返回 value2。当 tMin < t < tMax 时,返回带缓动效果的插值值。

应用:

适用于模拟减速停止的效果,如物体逐渐停止移动。

//示例 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 <= 0 时,返回 value1。当 t >= 1 时,返回 value2。当 0 < t < 1 时,返回带缓动效果的插值值。

应用:

适用于创建动画结尾部分缓慢过渡的效果,如按钮点击后的弹跳或图层逐渐淡出。

// 示例:使用正弦波(已映射到0~1)对图层位置的y轴做缓出插值
sinVal = (Math.sin(time*3)+1)/2;// 将sinVal从0到1缓出地映射到y轴位移从0到100
yPosition = easeOut(sinVal,0,100);// 返回新的位置
[position[0],position[1]+yPosition]

“点赞行美意,赞赏是鼓励”