Forum Replies Created

Page 1 of 16
  • Oleg Pirogov

    June 12, 2020 at 8:37 pm in reply to: speed variation in typewriter effect

    As i see it, you want the increment of the revealed text to vary (wiggle) over time.

    Thus, the variable you need is the “progress” (how much of the text is revealed) multiplied by the “speedMultiplier” parameter (giving you control of the overall speed of the animation).

    Thus, your expression for the “Text” property turns to:

    speedMultiplier = 10;
    curTimer = time - thisLayer.inPoint;
    progress = effect("Progress")("Slider");
    enableOverwrite = effect("Use Overwrite Cursor")("Checkbox");
    T = speedMultiplier*progress;
    F = Math.round(curTimer % 1);

    if (F == 1 | (T, 0)) {
    if(enableOverwrite == 1){
    cursor = "_";
    } else {
    cursor = "|";
    }
    } else {
    cursor = " ";
    }
    substr(0, T) + cursor;

    (curTimer is now only to determine the mode of the “cursor”)

    The “progress” variable is assigned to the value of the “Progress” slider effect. It’s a strictly increasing function corresponding to how much of the text is revealed. The expression for the Progress slider effect is:

    spd = effect("Increment")("Slider")
    accum = 0;
    for (i = timeToFrames(inPoint); i <= timeToFrames(time); i++){
    accum += spd.valueAtTime(framesToTime(i));
    }
    value + accum*thisComp.frameDuration

    (that’s from Dan Ebberts, btw)

    “Increment” is another slider effect, whose value is non-negative and wiggles over time. It’s expression is:

    Math.abs(wiggle(1, 0.5))

    The actual parameters here are for you to play with, of cause.
    In the end, the whole scheme makes the typing speed vary over time.

  • Oleg Pirogov

    November 27, 2019 at 1:52 pm in reply to: Wiggle expression triggered by multiple keyframes

    Just to throw in something to start with, this expression activates a fading-out wiggle for one second after each keyframe which has a non-zero speed at the moment just before it (which suppose to correspond to “change of position”):


    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){
    if (speedAtTime(key(n).time-thisComp.frameDuration/10)){
    linear(time, key(n).time, key(n).time+1, wiggle(10, 100), value);
    }
    else{
    value;
    }
    }else{
    value;
    }

  • Would you please specify the structure of the Shape Layer you run this on. Cause it works just fine for me and I can’t recreate the error.

  • I would do it like this:

    1) Make a Null
    2) Add this expression to its Position property:

    t=time/10;
    n=14;
    x=100*((Math.cos(n*t)/t)+t);
    y=100*((Math.sin(n*t)/t)+t);
    [x,y]

    3) Convert expression to keyframes:

    4) Create a new shape layer with empty path and copypaste Null’s Position keyframes to that Path:

  • Oleg Pirogov

    November 25, 2019 at 11:14 am in reply to: Letters appearing in Alphabetical Order via Expression

    You should add an Expression Selector and use that expression for it, not Opacity.

  • Oleg Pirogov

    November 23, 2019 at 11:08 pm in reply to: LINEAR keyframe not linear (extendscript)

    The setInterpolationTypeAtKey deals with temporal interpolation, while you have auto-bezier for the spatial one. For turning a keyframe’s spatial interpolation to liner I would use setSpatialTangentsAtKey. Like this:


    for (var k = 1; k<=bgAnchor.numKeys ; k++) {
    bgAnchor.setInterpolationTypeAtKey(k, KeyframeInterpolationType.LINEAR);
    bgAnchor.setSpatialTangentsAtKey(k, [0,0,0], [0,0,0]);
    }

  • There’s a native script called “Smart Import” which does that – imports a folder. You may check it out and see, how folder import is realized there. “importFile” is for files (single files or sequences) only and can not be applied to a folder directly.

  • Oleg Pirogov

    November 19, 2019 at 7:50 pm in reply to: Editing Path Shape by Frame

    Selecting only the group that contains the path property gets you all the vertices unselected, so you can select those you want.

    Selecting the path property selects all the vertices (and double-clicking one of them will get you the free-transform bounding box).

  • Oleg Pirogov

    November 18, 2019 at 7:40 pm in reply to: Moving short clips in wide zoom

    Hmm ok, I see. And if you alt+mouse wheel (zooming without moving the timeline cursor) – will that help?

  • Oleg Pirogov

    November 18, 2019 at 7:05 pm in reply to: Moving short clips in wide zoom

    >Ideally, I want to place my cursor and then use a shortcut that will automatically move the clip to that place.

    Left bracket “[” moves the layer so its inPoint is at the current time – is that what you’re looking for?

Page 1 of 16

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