gpt4 book ai didi

javascript - After Effects 中是否有一个编程/数学术语来说明 Linear() 函数的作用?

转载 作者:行者123 更新时间:2023-12-01 00:32:46 25 4
gpt4 key购买 nike

Adobe After Effects(动画/合成应用程序)具有基于 JavaScript 的脚本语言(表达式),并且附带了一堆基于 JS 构建的 After Effects 特定函数。函数 Linear() 就是其中之一。它考虑一个对象属性(例如, slider 的 X 位置)的动画变化,并将其链接到另一个属性(例如,场景中其他对象的旋转),以便第一个动画属性控制/动画第二个属性属性。

如果这个解释令人困惑,请参阅此视频中的 11:33: https://www.youtube.com/watch?v=gK1Ejt7qND0&t=693s

linear() 函数调用如下所示:

linear(ref, refStart, refEnd, outStart, outEnd);

我不知道实际的内部参数名称是什么,但这就是它们的作用:

ref ==“ Controller ”属性(在我之前的示例中,是对象的 X 位置)。通常是动画的,随时间变化。

refStart/refEnd == ref 属性的下限和上限

outStart/outEnd == 目标属性的下限和上限(在我之前的示例中,另一个对象的旋转)

是否有通用编程术语来说明此函数的作用?还是数学术语?据我所知,这是涉及“插值”的东西,也许是线性插值,但我不清楚。

是否有包含此函数等效项的通用编程/数学库? After Effects 还提供了 linear() 的缓动版本,称为 ease()easeIn()easeOut().据我所知,这些可能在编程中被称为“缓动函数”,但不确定。

奖励:我尝试从头开始对 AE 的 Linear() 进行逆向工程。相当准系统,不进行任何类型检查或错误,但除此之外,它在我的 AE 测试中似乎工作相同:

function fauxLinear( ref, refStart, refEnd, outStart, outEnd ) {
// constrain refTemp to range of refStart to refEnd
let refTemp = 0;
const refMin = Math.min( refStart, refEnd );
const refMax = Math.max( refStart, refEnd );

refTemp = (ref < refMin) ? refMin :
(ref > refMax) ? refMax : ref;

// calculate input range and ref proportion
const refRange = Math.abs( refStart - refEnd ) || .001; // avoid dbz
const refRangeTarget = Math.abs( refMin - refTemp );
const refProportion = refRangeTarget / refRange;

// calculations for final output
let outRange = [], outSlope = [], finalVal = [];
const loopLen = ( Array.isArray( outStart ) ) ? outStart.length : 1;
if (loopLen == 1) { outStart = [outStart], outEnd = [outEnd]; }

for (let i = 0; i < loopLen; i++) {
outRange[i] = Math.abs( outStart[i] - outEnd[i] );
outSlope[i] = ( outStart[i] <= outEnd[i] ) ? 1 : -1;
finalVal[i] = ( outSlope[i] * (outRange[i] * refProportion) + outStart[i] );
}

return ( loopLen == 1 ) ? finalVal[0] : finalVal;
}

最佳答案

是的,这是一个执行 Linear Interpolation 功能的函数某些语言具有 lerp() 函数或等效函数。但是 javascript Math 类中似乎没有任何内容。

关于javascript - After Effects 中是否有一个编程/数学术语来说明 Linear() 函数的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com