Render.ru

Bounce начинается раньше ключа. Как?

Petro111

Активный участник
Рейтинг
7
#1
Есть работающий скрипт

n = 0;
t = 0;
if (marker.numKeys > 0){
n = marker.nearestKey(time).index;
m = marker.key(n).time
S = 3; ///опережение
if (m-((1+S)* thisComp.frameDuration) > time) n--;
}
if (n > 0) t = time - m+((1+S)* thisComp.frameDuration);
amp = 15; // амплитуда
freq = 1; //частота
decay = 3.0; ///затухание
angle = freq * 2 * Math.PI * t;
scaleFact = (100 + amp * Math.sin(angle) / Math.exp(decay * t)) / 100;
[value[0] * scaleFact, value[1] / scaleFact];

На маркере объект по скэйлу как бы вздравгивает. Но анимация начинается не с самого маркера, а чуть раньше. И это хорошо. Мне надо чтобы происходило вздрагивание с опережением, но как реакция не на маркер, а на ключ, рсположенный в другом слое. Такой экспрешн тоже есть

myProperty = thisComp.layer("scale_controller").transform.xPosition;
if (myProperty.numKeys > 0){
n = (myProperty.nearestKey(time).index);
if (myProperty.key(n).time > time){
n--;
}
if (n > 0) t = time - myProperty.key(n).time;
v = velocityAtTime(myProperty.key(n).time - thisComp.frameDuration/10);
amp = 10;
freq = 1;
decay = 3.0;
angle = freq * 2 * Math.PI * t;
scaleFact = (100 + amp * Math.sin(angle) / Math.exp(decay * t)) / 100;
[value[0] * scaleFact, value[1] / scaleFact];
}

Вот только никак не могу прикрутить к нему опережение. Помогите, пожалуйста. Я уже мозг сломал
 
Сверху