Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Delay / Offset Posterize Time Effect

  • Delay / Offset Posterize Time Effect

    Posted by Tom Slinger on December 7, 2020 at 12:57 pm

    I’m looking to delay / offset the start frame of the Posterize Time effect. (not expression)

    5 fps Posterize Time effect. 25 fps comp.

    The reason for this is I want the stop motion animation to have more of a flow instead of all layers changing frame on 0,5,10,15,20.25 etc…

    It’d be great if:

    Layer A changed frame on 0,5,10,15,20,25 etc…

    Layer B changed frame on 2,7,12,17,22,27 etc…

    Layer B changed frame on 4,9,14,19,24,29 etc…

    Any help would be greatly appreciated!

    Many thanks,

    Tom

    Ifeanyi anyi replied 2 months, 2 weeks ago 5 Members · 10 Replies
  • 10 Replies
  • Trent Armstrong

    December 7, 2020 at 2:29 pm

    Well, I see that you indicate in your post that you’re not looking for an expression, but expressions would really help you here. Put those in and play around with the numbers in the parentheses. Using the posterizeTime() expression keeps you from having to use the Posterize Time effect which can mess with other effects.

    Layer A timeremap could be

    posterizeTime(6);

    value

    Layer B timeremap could be

    posterizeTime(5);

    value

    Layer C timeremap could be

    posterizeTime(4);

    value

  • Tom Slinger

    December 8, 2020 at 11:18 am

    Thanks Trent!

    Thats really helpful. I’ll use expressions instead, I didn’t know you could add posteriseTime to timeremap.

    Ideally I’d want all layers to be 5 fps, is there a way of offsetting each layer by a different value so that the layers will be changing frame on different frames? I appreciate your suggest would do this but I’m wondering if it’s possible to maintain the 5 fps?

  • Trent Armstrong

    December 11, 2020 at 1:17 am

    So sorry. I haven’t had time to look at this again. I actually think you might need to precomp and offset the layers in time if you want to have the all at 5 fps but offset.

  • Tom Slinger

    December 15, 2020 at 12:29 pm

    No worries! Thanks for your help.

    I’ve taken your advice on using different values and created this which works well:

    seedRandom(index,true);

    posterizeTime(Math.round(random(4,6)));

    value

  • Trent Armstrong

    December 15, 2020 at 1:20 pm

    That’s pretty awesome! I hope it looks good for you!

  • Jakob Werner

    December 15, 2020 at 4:21 pm

    I encountered the same problem and managed to write a custom posterizeTime() expression.<div>

     

    Just use .vaueAtTime(newT); on your desired property.

    newFramerate = 5; and frameOffset = 2; will change the values on frame 2, 7, 12, 17, 22, …

    I hope that works for you, too!

    Jakob

    // Custom posterizeTime()

    //
    // Use .valueAtTime(newT) on your desired property
    // and set your new frame Rate and your Offset value
    var newFramerate = 5; //set your new Framerate in frames per second here
    var frameOffset = 2; //set your offset in frame here

     

    var frameRate = 1/thisComp.frameDuration;
    var t = (time*frameRate);
    var newT = Math.floor((t-frameOffset)/(frameRate/newFramerate));
    newT = newT*(frameRate/newFramerate) + frameOffset;
    newT /= frameRate;

     

    transform.position.valueAtTime(newT);


    </div>

  • Tom Slinger

    January 13, 2021 at 2:37 pm

    Ah! AMAZING! Thanks Jacob, this is so helpful.

    Exactly what I needed. 🙂

  • Trent Armstrong

    January 13, 2021 at 2:51 pm

    Great stuff!

  • Chloé Richmond

    January 27, 2026 at 9:45 pm

    I came up with this solution, which I found more useful:

    let framerate = 1/thisComp.frameDuration;
    let targetFrameRate = 12;
    let frameOffset = 1; // (offset in frames);
    Math.floor(value*targetFrameRate)/targetFrameRate+frameOffset/framerate

    There’s also the solution of precomping it and then adding an adjustment layer with posterize time that you can move around, but I found that a bit too cumbersome for my liking.

  • Ifeanyi anyi

    February 15, 2026 at 12:02 am

    If you want true 5 fps across all layers but staggered updates, expressions are really the cleanest route.

    Use posterizeTime(5) on the property, then offset each layer’s sampling with valueAtTime(time – framesToTime(offset)). That keeps the same cadence but shifts when each layer updates.

    Precomping and time shifting also works, but it gets messy fast once you have many layers.

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