• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

combine two expressions in one overshoot and anticipation

Community Beginner ,
Sep 23, 2022 Sep 23, 2022

Copy link to clipboard

Copied

i have this overshoot expression :

MaximumAmplitude = .1;
Frequency = 1.0;
Decay = 4.0;

n = 0; if (numKeys > 0){n = nearestKey(time).index;
	if (key(n).time > time){n--;}}
if (n == 0){ t = 0;}
else{t = time - key(n).time;}
if (n > 0){v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
	if (t < 2){value + v*MaximumAmplitude*Math.sin(Frequency*t*2*Math.PI)/Math.exp(Decay*t)}
else{value;}}
else{value}

and i have this anticipation expression 

var PeriodForElastic = 0.8;
var AmplitudeForElastic = 50;
var OvershootAmount = 1.70158;

function easeandwizz_inBack(t, b, c, d) 
{return c*(t/=d)*t*((OvershootAmount+1)*t - OvershootAmount) + b;}
function easeAndWizz() {var n = 0;if (numKeys > 0) {n = nearestKey(time).index;
	if (key(n).time > time)	{ n-- }}
try {var key1 = key(n);var key2 = key(n+1);} 
catch(e) {return null;}var dim = 1;
try {key(1)[1];dim = 2;key(1)[2];dim = 3;} 
catch(e) {}t = time - key1.time;d = key2.time - key1.time;sX = key1[0];eX = key2[0] - key1[0];
if (dim >= 2) {sY = key1[1];eY = key2[1] - key1[1];
	if (dim >= 3) {sZ = key1[2];eZ = key2[2] - key1[2];}}
if ((time < key1.time) || (time > key2.time)) {return value;} 
else {val1 =  easeandwizz_inBack(t, sX, eX, d, AmplitudeForElastic, PeriodForElastic, OvershootAmount);
	switch (dim) {case 1:return val1;break;
		case 2:val2 = easeandwizz_inBack(t, sY, eY, d, AmplitudeForElastic, PeriodForElastic, OvershootAmount);return [val1, val2];break;
		case 3:val2 = easeandwizz_inBack(t, sY, eY, d, AmplitudeForElastic, PeriodForElastic, OvershootAmount);val3 = easeandwizz_inBack(t, sZ, eZ, d, AmplitudeForElastic, PeriodForElastic, OvershootAmount);return [val1, val2, val3];break;default:return null;}}}(easeAndWizz() || value);

i want to combine them to use it on one layer and have both anticipation and overshoot 

is that possible ??

Nb : if u have another expression that already dose both anticipation and overshoot  that will be more ideal!

TOPICS
Expressions , FAQ , How to

Views

55

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Sep 24, 2022 Sep 24, 2022

Copy link to clipboard

Copied

Sure it's possible, but this will take some time to clean up the source code and consolidate the functions.

 

Mylenium

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 24, 2022 Sep 24, 2022

Copy link to clipboard

Copied

LATEST

I think you've asked this on the Reddit AE forum too.  Looks like long time user Attilla has posted a solution:

https://www.reddit.com/r/AfterEffects/comments/xmfzg2/combine_two_expressions_in_one_overshoot_and/

I'm adding this link here in case any else is trying to do similar.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines