• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Horizontal Judder Script?

Enthusiast ,
Jun 09, 2021 Jun 09, 2021

Copy link to clipboard

Copied

I found a script that automatically VERTICALLY moves text up and you can set the speed in whole number intervals and it removes vertical judder. How can I adjust this script to make text scroll to the left horizontally? 

rate = 2; //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)];
}

 

Basically: 

I have a bunch of horizontal scrolling text. Several layers that need to animate at the same speed. I've used two keyframes and then the expression loopOut("continue") in order to keep the speed consistent between all my text layers. I know that isn't best practice, but it works. I am using a bold text on a black background. It is taking up most of the screen. The text is moving pretty slowly. 

 

I am now running into horizontal judder / stutter of that text. It takes about 56 seconds to scroll all the text. 

 

I am familair with the technique of adding motion blur to the text and the need to move things in whole numbers per frame. Maybe there's another solution out there? 

TOPICS
Expressions

Views

968

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 09, 2021 Jun 09, 2021

Copy link to clipboard

Copied

This doesn't solve the judder, but at least I've set it up so the text only moves on whole numbers. 

 

I did XPosition*time*-690 (I.e., 1130+time*-690)

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jun 09, 2021 Jun 09, 2021

Copy link to clipboard

Copied

Your expression does not turn time into frames. A better approach is this:

movSpd = 3; // number of pixels to move per frame
frameNum = (time - inPoint)/thisComp.frameDuration;
d = movSpd * frameNum;
[value[0] + d, value[1]]

 If you want the text to roll bottom to top change the expression to this:

movSpd = 3; // number of pixels to move per frame
frameNum = (time - inPoint)/thisComp.frameDuration;
d = movSpd * frameNum;
[value[0}, value[1] - d]

This keeps the text baseline lined up precisely with the pixel grid and makes sure that it moves a whole number of pixels per frame. Using time/thisComp.frameDuration solves a motion blur problem that timeToFrames() causes. 

 

Your script works with keyframes and is automatic. My animation preset for rolling/scrolling titles adds a slider and a checkbox. I use it all the time. Anything between 2 and 6 pixels per second is a good read speed.

 

This is what my expression looks like:

moveDistance = Math.floor(effect("Pixels Per Frame")("Slider")); //speed in whole numbers

hvSwitch = effect("Horiz / Vertical")("Checkbox");
startTime = time - thisLayer.inPoint;
frameCount = startTime / thisComp.frameDuration;
pixPerFrame = frameCount * moveDistance;
if (hvSwitch == 0)
	[value[0] - pixPerFrame, value[1]]
else
	[value[0], value[1] - pixPerFrame];

 Give both a try turning motion blur on and off.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 11, 2021 Jun 11, 2021

Copy link to clipboard

Copied

Thanks Rick, that is super helpful. What a handy little script. Gotta save this one for later. 

 

I understand how to implement all three of these examples and have found the source of my problem. 

 

I'm trying to get all the text to move across comp in 15 seconds. To do that, I'm moving the text 23 pixels per frame. That's too fast and the route of my judder.

 

If I want to make it smooth I either need to increase the duration of that text crossing the comp, or increase the frame rate if playback allows, or add some motion blur (or a combination of all three things). I have tinkered around with all of those solves and the thinking seems to be correct unless I'm missing something. 

 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jun 12, 2021 Jun 12, 2021

Copy link to clipboard

Copied

Judder is caused by the interaction of frame rate, monitor refresh rate, and movement. Odd numbers can be more problematic. Frame rates that do not match the refresh rate of a display can be a problem. In general, a frame rate above 30 fps is not required to get smooth text rolls or scrolls. 23 pixels per frame is pretty fast. 

 

It is also very unlikely that you can get an accurate preview of the scroll inside After Effects or Premiere Pro because the preview will not fill the screen and be at 100%. The only surefire test is to render a full resolution MP4 and play it in a media player. Unfortunately, scaling the player window can also cause Judder. 

 

Personally, I would not go faster than about 10. If you can't read the words it's too fast. If you must be close to 23, change that to 20 and see how it looks. Even numbers are almost always best. Typically, a credit roll takes about 7 seconds to go from the bottom of the screen to the top. That is a good reading speed and it won't judder on most displays. 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 21, 2021 Jun 21, 2021

Copy link to clipboard

Copied

LATEST

I've got a big old screen so can preview at 100% no problem. 20 still causes judder for sure - this is big text where each letter takes up nearly the whole comp size. So judder is really noticeable. 8 works. Anything more than that, and I have to compromise with motion blur or something similar. Client is aware of the limitations, all good. Thanks again, Rick!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines