关于After Effects中linear()函数的功能是否有编程/数学术语?

问题描述 投票:0回答:1

Adobe After Effects(一种动画/合成应用程序)具有一种基于JavaScript的脚本语言(表达式),并且附带了许多基于JS的After Effects特定功能。功能linear()是其中之一。它考虑了一个对象的属性中的动画更改(例如,滑块的X位置),并将其链接到另一个属性(例如,场景中某个其他对象的旋转),因此第一个动画属性控制/设置第二个动画属性的动画财产。

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

linear()函数调用看起来像这样:

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

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

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;
}

[Adobe After Effects(动画/合成应用程序)具有基于JavaScript的脚本语言(表达式),并且它附带了许多基于JS的After Effects特定功能。...

javascript math easing easing-functions
1个回答
0
投票
Ì在许多其他事情中,直线非常简单。一个正方形是线性的4倍,我想你可以这么说。在与声音(EQ)一起使用的工具中,其线性范围为0hz至20k。你在做什么听起来很难。如果a和b是线,则它们在您的彩绘球处相遇。球可以向左,向右,向上移动,也可以向左或向右移动。这让我很难思考。还剩什么?数学术语也是线性的,所以您是对的。我认为您缺少2个功能!
© www.soinside.com 2019 - 2024. All rights reserved.