Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects 23,976p rolling credits

  • 23,976p rolling credits

    Posted by Samuel Dragon on February 13, 2009 at 4:22 pm

    I know, the question pops-up every few weeks/months… But I have spent a few days browsing the Cowrums and the rest of the web only to find empty leads.

    I have read in a specific post Dave LaRonde stating he had a solution which he unfortunatly didn’t have the time to post. In the same post, he did hint that Kevin Camp had found a much simpler solution than the arithmetic one he himself had.

    So far, I’ve done many tests combining a bunch of different softwares (AE, FCP, Illustrator, photoshop, Flash, Avid) to no avail. I tried using animated vectors or even exporting to QT a roll made in Flash…

    Hopefully, someone with a solution will read this and either share or hint towards a solution. I love testing stuff, so if you can’t share but still can set me on the right tracks, I’d be extatic still!

    Thanks for any help you can provide,

    Samuel Dragon

    I.g. Romov replied 8 years, 2 months ago 4 Members · 6 Replies
  • 6 Replies
  • Kevin Camp

    February 13, 2009 at 7:11 pm

    the main thing for creating a credit roll is to limit the vertical movement to whole pixels to avoid inconsistent aliasing of the text edges which can result in ‘waviness’ as the text scrolls up the screen.

    if you have a very simple roll… it starts off screen bottom and marches up, to off screen top at the end, then a simple expression like this in the position property of the credit layer should work well:

    n = 2;
    y = n – timeToFrames(time);
    value + [0,y]

    just position the credits to of screen bottom and they will march up the screen until the end of the comp.
    the value of ‘n’ sets the speed of the roll in pixels per frame, since you are rendering progressive, you can use odd or even values. i have found that that value should be less than 1% of the comp height (so, sd would be less than 5; 720p: less than 7; 1080: less than 10, etc) or the scroll will start to look a little strobe-like.

    if your roll is more complicated, like it needs to hold at the beginning and/or end, then then i’ll post the preset i made a while back that uses dave’s calculation method and a bunch of if/else statements which started to become a bit of a monster as i kept adding things upon request. (it used to be downloadable as a preset, but i my friend’s server is down right now).

    Kevin Camp
    Senior Designer
    KCPQ, KMYQ & KRCW

  • Samuel Dragon

    February 13, 2009 at 10:43 pm

    Wow thanks!

    I’ll have to try this over the week-end. Undoubtedly, someone will ask me for more complicated rolls at one point or another. So, although I feel greedy of asking for your preset after the help you’ve provided, I’ll take advantage of your generosity one more time.

    Thanks alot for sharing your time and knowledge,

    Samuel Dragon

  • Kevin Camp

    February 15, 2009 at 5:29 pm

    you asked for it….

    there is one thing you need to do before pasting this expression in. add a check box expression control effect and name it “Field Friendly Movement“, the expression is looking for that control (the preset added that effect automatically, but i can’t get that posted right now). then paste this expression into the position property:

    // FlickerFree Credit Roll
    //
    // This expression will generate anti-alias friendly or field friendly Y movement of a list of credits (layer).
    // When first applied to a credit layer, the layer will move from off-screen bottom to off-screen top of
    // the comp based on the height (length) of the credit layer and duration of the comp.
    // If different positions or timing is required for the start or end of the credit roll, simply add a keyframe(s)
    // with the postion(s) where you need the credit roll to start and/or end, and the move will be recalculated.
    // The list length (height), comp duration and any keyframes can be modified at any point and the move
    // will be recalculated.
    // If the credit roll will be viewed progressively, uncheck the “Field Friendly Movement” Checkbox control.

    ySize = height * (scale[1] / 100);
    n = numKeys;
    if (n > 0){
    if (n == 1){ // If only one key, determine if it is start or end key
    if (key(1).time < thisComp.duration / 2){ // If key is in the first half of comp, assume start key startY = key(1).value[1]; // Start postion based on Y position from keyframe startT = key(1).time; // Start time based on first keyframe endY = (ySize / 2) * -1; // End postion based on credit length (height) endT = thisComp.duration; }else{ // If key is in last half of comp, assume end key startY = thisComp.height + (ySize / 2); // Start position based on layer Y height; startT = 0; endY = key(1).value[1]; // End postion based on Y position from keyframe endT = key(1).time; // End time based on keyframe } }else{ startY = key(1).value[1]; // Start postion based on Y position from first key startT = key(1).time; // Start time based on first key endY = key(n).value[1]; // End postion based on Y position from last key endT = key(n).time; // End time based on last key } }else{ startY = thisComp.height + (ySize / 2); // Start position based on layer Y height; startT = 0; endY = (ySize / 2) * -1; // End postion based on credit length (height) endT = thisComp.duration; } frameRate = 1 / thisComp.frameDuration; duration = frameRate * (endT - startT); // Duration (frames) between keyframes displace = startY - endY; frameNum = (frameRate * (time - startT)); if (frameNum < 0){ // If uing keyframes, there is no movement until the first key frameNum = 0; }else{ frameNum; } // Allow Y movement to be calulated as field friendly (multiple of 2) or just anti-alias friendly if (effect("Field Friendly Movement")("Checkbox") == true){ Yinc = (Math.round(((displace / duration) / 2) + 0.5)) * 2; }else{ Yinc = Math.round((displace / duration) + 0.5); } yPos = startY - (Yinc * frameNum); if (yPos < endY){ // If using keyframes, take final postion from end key y = endY; }else{ y = yPos; } [value[0],y]

    once you pasted the expression, it will automatically reposition the credit layer and create the upward movement.

    the way this expression works is a little different from how many expect it to work… it will fit the credit roll into the duration of the comp. so if the movement is too fast, you’ll need to lengthen the comp (you’ll need to check the position values to see how many pixel it moves per frame). also, you can set a position keyframe that will tell it when and where to stop and you can set a key frame for where you want the roll to stop, but the timing of when it will stop is based on how it calculates whole pixel movement.

    if the expression works you, you can select the position parameter and the expression control and save it as a preset to easily apply it later….

    Kevin Camp
    Senior Designer
    KCPQ, KMYQ & KRCW

  • Samuel Dragon

    February 18, 2009 at 6:41 pm

    Thanks alot Kevin, that was definatly what I’d been looking for. Now to try and cheat my way to speeding the roll a little without having it stutter is another matter hehe.

    You’ve been a great help, also thank you very much I didn’t know about After-Effects Expressions, (I know, I’m pretty green) guess it gave me a new passion and revived will to learn Javascript now 🙂

    Thanks again for the tremendous help!

    Samuel Dragon
    Freelancer

  • Hugh john Murray

    May 17, 2009 at 2:51 am

    Hello Mr. Camp –

    Thank you for the script! Indeed, this works beautifully as a rendered QT, 23.976, animation, but when I bring it into FCP (sony xdcam ex 1080p24 vbr) and render it, it’s jump-arama. Maybe you’re not the guy to ask as perhaps it’s an issue from animation to xdcam ex…but if you have any suggestions, would love to hear them.

    Many thanks,

    Hugh John

  • I.g. Romov

    February 20, 2018 at 8:58 am

    There’s a lot of old, useless material on the Internet. Then there’s some old, super useful material like this that make the Internet an archival jewel! Thanks, Kevin, works great.

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