Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Creating Stop motion effect

  • Creating Stop motion effect

    Posted by Peter Butler on February 25, 2014 at 2:54 pm

    Hello everyone,

    I’m creating a computer game at the moment that has the look and feel of the old Stop motion creature effects.

    I’ve read a few posts on here on how to achieve this but all of the one I’ve read use a strobe effect which isn’t exactly what I’m after.

    I can achieve the effect I want by using the Timewarp effect and I’m sure this can also be achieved with the Time remapping.

    What I’m doing is selecting “source frame” from the “adjust time by” in the Time Warp effect. Then I keyframe this parameter so that I can mess with the spacing of the animation.

    For example. I key on frame 1 and then a key at frame 3 I tell it to display frame 4, so that the speed it gets there is quicker than usual. But then at frame 5 I’ll tell it display frame 5 so that it slightly slower. In effect it creates uneven spacing in the animation which is something that Stopmotion suffers from.

    So to sum up I need an expression which can place keys down say every two frames and assign a sequential frame number that is anything from one frame ahead of the last keyframe to possibly four. Thus allowing the interpolation between the two keys to either slow down look correct or speed up but at random amounts between each set of keys.

    Is this easy to do?

    Many thanks,

    Peter

    Darby Edelen replied 12 years, 6 months ago 2 Members · 1 Reply
  • 1 Reply
  • Darby Edelen

    February 26, 2014 at 7:18 am

    Generally I’d use one of the built-in functions like posterizeTime() or temporalWiggle() to do this but it sounds like you have a very specific behavior in mind. Here’s one way to do what you’re asking, applied to the Time Remapping property (could be adapted for Timewarp as well, but I prefer Time Remapping):

    min = 1;
    max = 5;
    step = 3;

    min /= step;
    max /= step;

    f = timeToFrames(time);
    t = 0;

    for(x = 0; x < f; x++){
    seedRandom(Math.floor(x / step), true);
    t += random(min, max);
    }

    framesToTime(t);

    The above will vary between moving forward ‘min’ and ‘max’ frames every ‘step’ frames. So in the code above every 3 frames the footage will vary in speed from between 1 frame per 3 frames and 5 frames per 3 frames.

    Here’s another possibility:

    step = 5;
    seedRandom(Math.floor(time / framesToTime(step)), true);
    posterizeTime(random(12, 24));
    temporalWiggle(.5, 1);

    The above uses temporalWiggle() to change the rate at which the time remapping value animates (speeds it up or slows it down). Because temporalWiggle() is a very fluid speed change it also varies the frame rate randomly between 12 and 24 fps every 5 frames.

    Note: the temporalWiggle() function can cause the footage to move backwards if the amplitude (the second value) is set too high relative to the frequency (the first value).

    Darby Edelen

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