Forum Replies Created

Page 17 of 1081
  • Dan Ebberts

    September 15, 2024 at 2:39 pm in reply to: Dan Ebbert’s IK expression, leveling the extremities

    That’s strange. I’m not quite sure what’s going on, but if you turn off the 3 expressions on the Transform effect and use the Transform effect’s crosshairs to position its Anchor Point and Position directly on the layer’s anchor point, and then turn the Rotation Expression back on, you’ll get the leveling.

    Or, if you change the Transform effect’s Anchor Point and Position expressions to:

    toComp(anchorPoint)

    it works. I have no explanation at this point, but it will haunt me.

  • Dan Ebberts

    September 14, 2024 at 11:09 pm in reply to: Dan Ebbert’s IK expression, leveling the extremities

    Yes, please attach the file.

  • Dan Ebberts

    September 14, 2024 at 7:00 am in reply to: Find specific characters in text and apply position offset

    I’m not sure if this is what you’re asking, but maybe:

    txt = thisComp.layer("WORDING").text.sourceText;
    yOffset = (txt.includes("p") || txt.includes("q") || txt.includes("j") || txt.includes("y")) ? 15 : 0;
    value + [0,yOffset]
  • Dan Ebberts

    September 13, 2024 at 2:50 pm in reply to: Dan Ebbert’s IK expression, leveling the extremities

    I’d like to help, but I don’t know what you mean by “leveling the extremities”. Maybe you could clarify.

  • This might not be exactly what you’re looking for, but it might be helpful. If I was going to modify the animated text overshoot example on my site to animate out at the out point, I’d change this:

    freq = 2;
    decay = 5;
    delay = .15;
    dur = .12;
    myDelay = (textIndex-1)*delay;
    t = time - (inPoint + myDelay);
    startVal = 100;
    endVal = 0;
    if(t < dur){
    linear(t,0,dur,startVal,endVal);
    }else{
    amp = (endVal - startVal)/dur;
    w = freq*Math.PI*2;
    endVal + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);
    }

    to this:

    freq = 2;
    decay = 5;
    delay = .15;
    dur = .12;
    startVal = 100;
    endVal = 0;
    if (time < (inPoint + outPoint)/2){
    myDelay = (textIndex-1)*delay;
    t = time - (inPoint + myDelay);
    }else{
    myDelay = (textTotal-textIndex)*delay;
    t = outPoint - (time + myDelay) - thisComp.frameDuration;
    }
    if(t < dur){
    linear(t,0,dur,startVal,endVal);
    }else{
    amp = (endVal - startVal)/dur;
    w = freq*Math.PI*2;
    endVal + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);
    }
  • Dan Ebberts

    August 25, 2024 at 11:55 am in reply to: Keyframe with value offset

    If the ease is AE’s standard easy ease, and you use it on all keyframes, you can probably just replace linear with ease in the expression. If it’s custom easing, that’s a different story.

  • Dan Ebberts

    August 25, 2024 at 6:10 am in reply to: Keyframe with value offset

    With linear keyframes, a position expression like this should work:

    n = nearestKey(time).index;
    if (time < key(n).time)n--;
    if (n < 1){
    key(1).value + effect("Position 1 Offset")("Point").value;
    }else if (n == numKeys){
    key(numKeys).value + effect("Position " + numKeys + " Offset")("Point").value;
    }else{
    offset1 = effect("Position " + n + " Offset")("Point").value;
    offset2 = effect("Position " + (n+1) + " Offset")("Point").value;
    linear(time,key(n).time,key(n+1).time,key(n).value + offset1 ,key(n+1).value + offset2);
    }
  • Dan Ebberts

    August 22, 2024 at 11:15 pm in reply to: Song time tracker/timer help

    You’re welcome. It turns out I defined the addZero() function twice. It shouldn’t hurt anything, but this is better:

    slider = Math.round(effect("Slider Control")("Slider"));
    function addZero(n){return (n < 10 ? "0" : "") + n}
    et = Math.round(outPoint);
    sec = et%60;
    min = Math.floor(et/60);
    endtime = addZero(min) + ":" + addZero(sec);
    sec = slider%60;
    min = Math.floor(slider/60);
    addZero(min) + ":" + addZero(sec) + " / " + endtime
  • Dan Ebberts

    August 22, 2024 at 9:59 pm in reply to: Song time tracker/timer help

    Like this maybe:

    slider = Math.round(effect("Slider Control")("Slider"));
    function addZero(n){return (n < 10 ? "0" : "") + n}
    et = Math.round(outPoint);
    sec = et%60;
    min = Math.floor(et/60);
    endtime = addZero(min) + ":" + addZero(sec);
    sec = slider%60;
    min = Math.floor(slider/60);
    function addZero(n){return (n < 10 ? "0" : "") + n}
    addZero(min) + ":" + addZero(sec) + " / " + endtime
  • You could play around with this position expression. It’s not perfect, but it might work for you:

    f = 3;
    d = 4;
    att = 1.0;
    nst = 38;
    acc = [0,0];
    st = thisComp.frameDuration;
    t = time;
    w = f*Math.PI*2;
    p1 = toWorld(anchorPoint,t+st/2);
    for (i = nst; i > 0; i--){
    p0 = toWorld(anchorPoint,t);
    v2 = (p1-p0);
    pm1 = toWorld(anchorPoint,t-st/2);
    v1 = (p0-pm1);
    a = -(v2 - v1);
    del = time - t;
    if (length(a) > .01){
    acc += a*Math.sin(del*w)/Math.exp(del*d);
    }
    t -= st;
    p1 = pm1;
    }
    acc /= att;
    value + fromWorldVec(acc);
Page 17 of 1081

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy