This is officially the best tutorial for rolling credits, as it accounts for all the pitfalls that are not obvious at first, when starting to work on such animation and crediting all the great sources out there with details about the why and how. Thank you!
Hi Kyle, thanks for the expression. But what if I need to start with the first set of names on screen and smoothly start rolling to a constant speed. Working with a slider (from 0 to 4) and easing the first keyframe to change the rate don't seem to work.
if you need to go faster and you have a lot of names I think there's just really no solution. I have to have the "speed" on 7 and I feel like it's the same with or without the code.
separate layer at the same speed and distance from the main crawl, and then just have its motion keyframe stop at the time of your choosing. Then you just apply a simple fade to whatever colour or layer you wish.
rate = 20; //value in px/sec. if (marker.numKeys > 0){ if (time > marker.key(1).time){ value - [rate*timeToFrames(time-marker.key(1).time),1]; }else{ value; } }else{ value - [rate*timeToFrames(time-inPoint),1]; }
Nice tutorial. Adobe AE (and PPro) really needs an extrapolate kf move option button like other apps. For a mograph app it's sorely lacking. I also see you're a 2e fan. Yay! I'm partial to 1e myself.
Thanks! And yeah, honestly I'm a 2e fan mostly because the books are better edited for use at the table and I can scale the system up to be crunch heavy almost like 3e or down to basically a 1e clone depending on the campaign. Always have a 1e DMG at my table though for all of Gygax's weird tables.
Understandably this was posted a long time ago, but should anyone run across this in 2022 and have an answer for me nonetheless, I'd be greatly obliged. The error I'm getting is, "after effects error expression dimension must be of dimension 1, not 2". Sadly, I have no idea what this means and online searches haven't netted me any insight. Again, thanks in advance.
@@KyleMahaney Well , that's a big problem for me , i ain't got no idea how to create that kind of script. It seems that you have an idea about how this script should be written. I mean a script that will create a smooth movement in the animations with shapes Here is about a script fo scrolling credits only
I know it's too late for you, but for other folks, just switch the x,y values in the final output brackets: rate = 2; //value in px/sec. if (marker.numKeys > 0){ if (time > marker.key(1).time){ value - [rate*timeToFrames(time-marker.key(1).time) , 0]; }else{ value; } }else{ value - [rate*timeToFrames(time-inPoint) , 0]; }
@@MorganTinney hey, thanks Morgan, but how to make go Left to Right... (I'm clueless about Expressions, I tried changing other numbers around to see if I could fluke it...) Can you help me?
@@DolbroDan ope sorry forgot to do this. Here you go if you haven't figured it out: rate = 2; //value in px/sec. if (marker.numKeys > 0){ if (time > marker.key(1).time){ value - [-rate*timeToFrames(time-marker.key(1).time),0]; }else{ value; } }else{ value - [-rate*timeToFrames(time-inPoint) , 0]; }
Hi. I am following your video to produce a roll. when I paste in my text, it does not format/show properly like your it is all together almost as if it is crunched up into 1 page rather than many pages. Any idea what I have done different to you? Thanks
Hello Kyle I have input your code into After effects for addressing rolling credits. Can you tell me how I can freeze the last part of the roll rather than it roll out. Thanks
probably already fixed it yourself, but i would just put the whole thing in a subcomp and then choose "freeze frame" when you right-click on the layer and then go to "Time". greetz
Thanks! This is far better than anything else I've tried. For most of the scrolling I see the text moving wonderfully smoothly However, I still get 1 or 2 "stutters, " even in the rendered result, when scrolling text up a screen with resolution set to UHD with a frame rate of 29.97. I have tried other frame rates and the results are no better. This is on an 2017 iMac Pro that's not running anything else with the rate set to 5. Also, I'm using the latest version of AE and Media Encoder as of 4/25/20.
Hi Kyle. I have a question. If i have have a lenght imposed by clients (let's say 2min36s) how can i do with to addapt the scrolling perfectly ? Thanks.
I've a 2K (2048x858) project with a long TIFF in AE with your script (2px) and need an aprox. duration of 120 sec. Until now, the only duration witouth jitter is 240 sec. (at 2px in the script), but is too long! I'm going nuts. Can you help me? U_U
That also doesn't divide into 24 or 23.98. Make your project at 25 (not that you should actually do that for most deliverables outside of europe) and it should multiply 3x evenly to display smoothly at 75hz.
@@KyleMahaneyMonitor Hz don't matter. Everyone should be able to see perfect scrolling credits in every monitor. When you rent a DVD from a DVD store, the scrolling credits are perfect, no matter where you watch them... Monitor is not the problem.
You see stutter all the time on dvd when played at 60hz... that's why 24hz output from modern dvd and bluray players is so important along with having a tv capable of some multiple of that. This entire post is about the importance of integer pixel movement timed with the framerate of the video, on a 24hz multiple display (including the projector I played my DCP on) it looks perfectly even. If you read the endcrawl article linked, they talk about making sure you don't have any scaling going on for the deliverable, because scaling can create motion artifacts. But monitor hz absolutely does matter, 23.98 or 24fps does not evenly resample into 75hz so you will always have an odd motion cadence. Also some motion blur can help make it display better on mismatched displays.
Hi Kyle, in watching the roll example you threw together, it still looked jittery on the playback. Is it because of RUclips's player conversion or something else?
UFAndrew11 it's because you're viewing it on a 60hz display, pretty sure most RUclips apps don't support 24hz on devices so you're stuck with a pull down where you're still going to have slight jitter. This also is obvious with fast pans.
Hey Kyle! Thanks for this wonderful tutorial. I was wondering now in the 4K era, as the image ratio is roughly 2x bigger than 2K, should we double the 3pixel per second code to 6? Or will it still jitter? Thanks in advance!
The problem is not the jittery animation. It is the text flickering which is very obvious. I always have to apply Flickering plugins. When the credit titles played on DCP (in the theaters), there is no problem. The problem is the different type of monitors and their different refresh rates in Hz. The solution is not for someone to buy a high quality monitor with a very high refresh rate because the film should be suitable for every average monitor, since most people have a 60Hz one. Even the film festival's judges are watching the films that have been submitted in consumer monitors.... Bottom line is that the credit titles have to look absolutely perfect even when viewed on a less than average monitor. I never use expressions because you cannot easy ease the animation when it finishes. So you end up with an abrupt animation stop.
rate = 10; //value in px/sec. if (marker.numKeys >0){ if (time > marker.key(1).time){ value - [0,rate*timeToFrames(time-marker.key(1).time)]; }else{ value; } }else{ value - [0,rate*timeToFrames(time-inPoint)]; }
This is officially the best tutorial for rolling credits, as it accounts for all the pitfalls that are not obvious at first, when starting to work on such animation and crediting all the great sources out there with details about the why and how. Thank you!
horizontal credits?
Hi Kyle, thanks for the expression. But what if I need to start with the first set of names on screen and smoothly start rolling to a constant speed. Working with a slider (from 0 to 4) and easing the first keyframe to change the rate don't seem to work.
Yes! Best tutorial on this that I've found. I wish I found this first! Would of saved me a boat load of time. Thank you!!!
if you need to go faster and you have a lot of names I think there's just really no solution. I have to have the "speed" on 7 and I feel like it's the same with or without the code.
Any idea how to make the last element of the crawl, say the TITLE OF FILM, come to the center of the screen and stop, then fade out?
separate layer at the same speed and distance from the main crawl, and then just have its motion keyframe stop at the time of your choosing. Then you just apply a simple fade to whatever colour or layer you wish.
Good lesson. Thanks! Does anyone know how to modify the code to include stop the crawl and/or allow easing the animation in and out?
plz sir.... horizontal script will salve my issue...left to right scrolling
rate = 20; //value in px/sec.
if (marker.numKeys > 0){
if (time > marker.key(1).time){
value - [rate*timeToFrames(time-marker.key(1).time),1];
}else{
value;
}
}else{
value - [rate*timeToFrames(time-inPoint),1];
}
I get that rule, but I want to answering, how can I use HORIZONTAL titles qualitly as you did vertical?
I've been trying to edit this expression for a horizontal 'ticker tape' effect and can't get it right. Is it a simple edit?
Just swap the x/y values: [rate*timeToFrames(time-marker.key(1).time,0]
Is there an easy way to have the scroll stop at the end, so that it could stop if you have logos at the end and not scroll anymore.
Nice tutorial. Adobe AE (and PPro) really needs an extrapolate kf move option button like other apps. For a mograph app it's sorely lacking.
I also see you're a 2e fan. Yay! I'm partial to 1e myself.
Thanks! And yeah, honestly I'm a 2e fan mostly because the books are better edited for use at the table and I can scale the system up to be crunch heavy almost like 3e or down to basically a 1e clone depending on the campaign. Always have a 1e DMG at my table though for all of Gygax's weird tables.
can you plz provide script for right to left scroll
Great info! so can you please share the "expression position" formula? Thanks for sharing however
Understandably this was posted a long time ago, but should anyone run across this in 2022 and have an answer for me nonetheless, I'd be greatly obliged. The error I'm getting is, "after effects error expression dimension must be of dimension 1, not 2".
Sadly, I have no idea what this means and online searches haven't netted me any insight. Again, thanks in advance.
I believe you might have your X and Y properties serperated, combine them to one single property
Still works in January 2024! Thanks
For smoothing motions in After Effects you only have to activate Subpixel Smoothing otion and all motions become smooth.
That blurs the text though. An integer-frame scroll allows the text to remain sharp with no blurred or shimmering artifacts.
@@KyleMahaney And how to do integer-frame scroll in After Effects?
@@deepdig8502 that's literally the point of this video, the script provided moves the text an integer number of pixels per frame.
@@KyleMahaney Well , that's a big problem for me , i ain't got no idea how to create that kind of script. It seems that you have an idea about how this script should be written.
I mean a script that will create a smooth movement in the animations with shapes
Here is about a script fo scrolling credits only
This is great! Is there a way to transform the script to create crawling text (right to left) rather than scrolling?
wondering the same thing
I know it's too late for you, but for other folks, just switch the x,y values in the final output brackets:
rate = 2; //value in px/sec.
if (marker.numKeys > 0){
if (time > marker.key(1).time){
value - [rate*timeToFrames(time-marker.key(1).time) , 0];
}else{
value;
}
}else{
value - [rate*timeToFrames(time-inPoint) , 0];
}
@@MorganTinney hey, thanks Morgan, but how to make go Left to Right... (I'm clueless about Expressions, I tried changing other numbers around to see if I could fluke it...) Can you help me?
@@DolbroDan yeah I can help tomorrow. Sorry already in bed.
@@DolbroDan ope sorry forgot to do this. Here you go if you haven't figured it out:
rate = 2; //value in px/sec.
if (marker.numKeys > 0){
if (time > marker.key(1).time){
value - [-rate*timeToFrames(time-marker.key(1).time),0];
}else{
value;
}
}else{
value - [-rate*timeToFrames(time-inPoint) , 0];
}
Hi. I am following your video to produce a roll. when I paste in my text, it does not format/show properly like your it is all together almost as if it is crunched up into 1 page rather than many pages. Any idea what I have done different to you? Thanks
Hello Kyle I have input your code into After effects for addressing rolling credits. Can you tell me how I can freeze the last part of the roll rather than it roll out. Thanks
probably already fixed it yourself, but i would just put the whole thing in a subcomp and then choose "freeze frame" when you right-click on the layer and then go to "Time".
greetz
does activate the motion blur help?
nice work mate on the credits.📽
Thanks! This is far better than anything else I've tried. For most of the scrolling I see the text moving wonderfully smoothly However, I still get 1 or 2 "stutters, " even in the rendered result, when scrolling text up a screen with resolution set to UHD with a frame rate of 29.97. I have tried other frame rates and the results are no better. This is on an 2017 iMac Pro that's not running anything else with the rate set to 5. Also, I'm using the latest version of AE and Media Encoder as of 4/25/20.
My value of 1 is too fast. Is there a way I can make it slower?
Yeah. The expression takes fractions so you can always enter a fraction there instead if you want something slower. For example, 0.5 would be 1/2.
Hi Kyle. I have a question. If i have have a lenght imposed by clients (let's say 2min36s) how can i do with to addapt the scrolling perfectly ?
Thanks.
fyi my raster is 2048x858 pxl. Thanks
Start with trying different integer values to get it in the ballpark then play with the size of the text and spacing to get it right.
Hi, Romain. I've exactly the same problem. Could you fix it?
I've a 2K (2048x858) project with a long TIFF in AE with your script (2px) and need an aprox. duration of 120 sec. Until now, the only duration witouth jitter is 240 sec. (at 2px in the script), but is too long! I'm going nuts. Can you help me? U_U
Yes! This is my exact question! Does anybody have a solution to this?
There is a lot of flickering when you play the animation. If you look at the video, you will notice that the flickering is extremely obvious.
This video capture is at 60, are you playing back over a 24hz monitoring io?
No. I have a 75Hz monitor.
That also doesn't divide into 24 or 23.98. Make your project at 25 (not that you should actually do that for most deliverables outside of europe) and it should multiply 3x evenly to display smoothly at 75hz.
@@KyleMahaneyMonitor Hz don't matter. Everyone should be able to see perfect scrolling credits in every monitor. When you rent a DVD from a DVD store, the scrolling credits are perfect, no matter where you watch them... Monitor is not the problem.
You see stutter all the time on dvd when played at 60hz... that's why 24hz output from modern dvd and bluray players is so important along with having a tv capable of some multiple of that. This entire post is about the importance of integer pixel movement timed with the framerate of the video, on a 24hz multiple display (including the projector I played my DCP on) it looks perfectly even. If you read the endcrawl article linked, they talk about making sure you don't have any scaling going on for the deliverable, because scaling can create motion artifacts.
But monitor hz absolutely does matter, 23.98 or 24fps does not evenly resample into 75hz so you will always have an odd motion cadence. Also some motion blur can help make it display better on mismatched displays.
Awesome this is really cool! Much appreciated, very usefull
This is just freaking awesome! Thanks man
Hi, this expresion also work in higer resolution like 4k/6k?
Yes, but you'll have to increase the pixel rate obviously since there are more pixels.
Hi Kyle, in watching the roll example you threw together, it still looked jittery on the playback. Is it because of RUclips's player conversion or something else?
UFAndrew11 it's because you're viewing it on a 60hz display, pretty sure most RUclips apps don't support 24hz on devices so you're stuck with a pull down where you're still going to have slight jitter. This also is obvious with fast pans.
UFAndrew11 come to think of it, my screen capture was also 60hz. Only my video io was running at the native frame rate.
Thank you so much!
... "Like those syndicated TV specials" LOL, Nice!!! :0)
I get an expression error 1 of 1Please help!!!!
You didn't change the expression at all? Did you empty the stock expression before pasting?
Didn't change it all and yes cleared the stock expression before pasting in
Have u got your layer position splitted ? I got an error but it disappears if I have my position joined.
thanks bro for the tutorial
Thank you!
Thank you. That was really cool.
You are just the best.
Thank you so much. Nice Tutorial. I suscribe
Brilliant
Hey Kyle! Thanks for this wonderful tutorial. I was wondering now in the 4K era, as the image ratio is roughly 2x bigger than 2K, should we double the 3pixel per second code to 6? Or will it still jitter? Thanks in advance!
As long as it's an integer number it will be smooth.
Awesome! thank you!
The problem is not the jittery animation. It is the text flickering which is very obvious. I always have to apply Flickering plugins. When the credit titles played on DCP (in the theaters), there is no problem. The problem is the different type of monitors and their different refresh rates in Hz. The solution is not for someone to buy a high quality monitor with a very high refresh rate because the film should be suitable for every average monitor, since most people have a 60Hz one. Even the film festival's judges are watching the films that have been submitted in consumer monitors.... Bottom line is that the credit titles have to look absolutely perfect even when viewed on a less than average monitor.
I never use expressions because you cannot easy ease the animation when it finishes. So you end up with an abrupt animation stop.
What plug-ins do you usually use?
rate = 10; //value in px/sec.
if (marker.numKeys >0){
if (time > marker.key(1).time){
value - [0,rate*timeToFrames(time-marker.key(1).time)];
}else{
value;
}
}else{
value - [0,rate*timeToFrames(time-inPoint)];
}
plz sir.... horizontal script will salve my issue...left to right scrolling
Thank you so much!