Tutorial 89: That Grainy Texture Look

Joe Clay | Sep 22, 2017

Power is back this week. It's been a busy one, but we were able to tackle a request to turn Tutorial 85: Integrated Textures into a version of that grainy texture look that's becoming popular.

Our version is simple and it solves two main goals: do this in one layer and make sure the textures don't slip. I've seen a few of these tutorials out there already so I wasn't going to make one unless I could bring a different technique to the table. I think I've done that.

As always, if you make anything interesting, feel free to hit up @workbench_tv to tell us about it!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 88: Curving Text

Joe Clay | Sep 15, 2017

This week's tutorial is a quick look at a neat way to animate text as if it's on a curved surface using a simple Displacement Map setup.

Also, for anyone curious, our house was undamaged. A piece of soffit fell straight to the ground and that's about it. None of the many trees around me house did anything more than drop leaves and a few really small branches. However, in my alley someone's tree fell over and hit the power line, shearing the distribution line that is stepped down by my transformer near my house. So that's been fun. But hey at least my house is safe otherwise. Sev is really lucky. He could've been screwed by storm surge since he was in an evacuation zone, but his house is dry, undamaged, and he even has power. Bastard. :)

See you guys next week!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 87: Angular Controls

Joe Clay | Sep 8, 2017

In Tutorial 85: Integrated Textures, we made an interesting shadow out of a displaced layer. I thought it might be useful to change the default controls of Displacement Map from Max Horizontal and Max Vertical Displacement to Angle and Distance sliders. So I built that. And I continued to apply that expression to similar parameters—like position. That allowed me to animate things diagonally as easily as I can move things in X or Y. Because of that, we can put a bunch of things together going in the same direction and animate simple sliders like in our example GIF below.

Horizontal Only:

a = effect("Angle Control")("Angle");
d = effect("Distance")("Slider");
x = Math.cos(degreesToRadians(a));
x*d;

Vertical Only:

a = effect("Angle Control")("Angle");
d = effect("Distance")("Slider");
y = Math.sin(degreesToRadians(a));
y*d;

Both (for position style controls):

a = effect("Angle Control")("Angle");
d = effect("Distance")("Slider");
x = Math.cos(degreesToRadians(a));
y = Math.sin(degreesToRadians(a));
value+[x*d,y*d];

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 86: Quick Tips 05

Joe Clay | Sep 1, 2017

Quick Tips 05 is here! I do have two small notes though. Difference mode turns black where pixels exactly match. So it's extra useful for matching two images or things with a lot of colors. I probably could've picked a better example.

And the other note I'd like to make is that, I'm still not sure I explained the way I use LoopOut the best way possible yet, haha. Instead of having to set up an guess how to set keys on each end of a comp to get something to move for the entire duration, you can use loopOut so that you can be in the middle of the comp, and adjust the two keys to see how fast things will move. It's great for anything you want to move the entire time it's on screen as you can adjust the speed just by adjusting the spacing between the keys. Hopefully that makes more sense.

Here's timecode for each tip, and if you have any quick tips, hit me up @workbench_tv and we'll shout you out if we put it in a video!

Thanks for watching!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 85: Integrated Textures

Joe Clay | Aug 25, 2017

This week's tutorial expands upon last week's Rubber Stamp Texture tutorial. We look into different effects you can achieve by sandwiching things between CC Composite effects, including textures on layers, shadows, or both. And if you precomp and check the continuously rasterize switch, you can lock displaced textures to the layer for more utility. As with a lot of my tutorials, experimentation is necessary. This can definitely be pushed further. So if you make anything interesting using this technique, feel free to share it with me @workbench_tv!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 84: Rubber Stamp Texture

Joe Clay | Aug 18, 2017

Cheers! I'm a big fan of print looks—those are my blockprints in the corner of my studio behind me—so I decided to figure out a way to put a stamp texture on a layer, and it turned out I could do it pretty easily and using only one layer thanks to CC Composite. And boy do I love CC Composite, especially now that I know what that "RGB Only" checkbox does. So that's what this week's After Effects tutorial is all about! I hope you like this look as much as I do. The technique I developed has the potential to make quite a few different stamp looks in a few minutes. Try it out, experiment with it, and—as always—feel free to share it with me @workbench_tv!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 83: Semi-Automatic Animation

Joe Clay | Aug 11, 2017

Edit: Oops. I just realized I left a patch from my previous video over top of this one. I'm sorry if that made the code a little illegible for a moment. I wish YouTube would let you reupload over the old one like Vimeo does. Anyway, the code is below.

Yes, that was a Lil Wayne reference.

This week's After Effects tutorial shows you how to use markers to trigger and retime animations contained in a precomp from a main comp. It is based on Dan Ebberts' Triggering Animation with Markers expression with a couple of differences. First, Dan's technique uses a layer with the markers on it—we use comp markers because we finally have scripting access to them. Second, this version retimes animations using split markers while Dan's just triggers the action. To split a marker, hold option and then click and drag on the marker. I've never noticed these split markers in AE until about a week ago, so I'm doubting they were available when Dan wrote this excellent expression.

How it works

First, you animate everything in your precomp. Then you put named comp markers split around the action. Then you just put that precomp into other comps, add the expression below, and put split markers on it with the name of the action you want to put. As a side benefit, since they're comp markers, they come in with the precomp when you add it to your main comps. The best part is that this expression is completely portable to any precomp since it uses time remapping.

//Trigger and Retime Precomped Animations: Apply to Time Remap
action = comp(name);

n = 0;
if (marker.numKeys > 0){
    n = marker.nearestKey(time).index;
    if (marker.key(n).time > time){
        n--;
    }
}

if (n == 0){
    0
}else{
    m = marker.key(n);
    myComment = m.comment;
    try{
        actMarker = action.marker.key(myComment);
        originalStart = actMarker.time;
        originalEnd = originalStart + actMarker.duration;
        newStart = m.time;
        newEnd = newStart + m.duration;
        linear(time,newStart,newEnd,originalStart,originalEnd);
    }catch (err){
        0
    }
}

Other uses

Check out Triggering Animation with Markers to see how you can use this to animate characters. You can even use it to set up various elements—like transitions—in a single precomp and sequence them in your main comps. And if you're building up a brand package or a library of elements you can add elements to those precomps by animating new stuff and putting in a marker at any time without breaking anything. I'm not sure what would happen with overlapping markers since I didn't put any logic in there for that, so you might need to duplicate precomp layers in your main comp to overlay elements. I believe it'll probably just jump to the second animation at the point where the markers overlap.

I hope you enjoy this one. I'm standing on the shoulder of a giant for this one, but I'm pretty proud of how I was able to improve it. I'm going to implement it in a few projects and see what other amazing uses I can find for it! I encourage you to do the same and tell me about it! Hit me up @workbench_tv!

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 82: Pixel Sorting and More

Joe Clay | Aug 4, 2017

This week, I happened upon an effect I hadn't noticed before. It's called CC Kernel. It's part of the Cycore Effects that have been bundled with AE for quite a while now. It's actually pretty powerful. For more information—kind of—check out this PDF. I say kind of because the information is sort of vague unless you understand what convolution matrices are. I have a slight passing familiarity with the concept, but I probably should've looked at this Wikipedia article on Convolution Matrices before plowing into this tutorial, haha. And check this site out as well!

There's a lot of interesting things that can be done with CC Kernel. The most interesting to me, so far, is the ability to detect some edges while leave other edges invisible. If you can find ways to exploit that you can probably come up with some interesting effects.

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 81: Smart Bar Graphs

Joe Clay | Jul 28, 2017

This week, we go over a requested tutorial to lock items to the end of a bar graph. Since this uses a nifty way to determine the lengths of the bars, you can use real world data. Set up your Max Value slider to your largest data point, and set each bar's Value slider to its actual data point. Adjusting your Max Length will adjust how long the bars will display. I would recommend setting up one, and then making a control layer with sliders to link to Max Value, Max Length, and Thickness so you can control all of those parameters of the entire graph at once—especially if you have a lot of data points!

Patrons can find the links to the preset, and a Quiver expression file in the respective folders, but I'll also put up a quick post with direct links!

If you're building this yourself, here are the expressions used in this tutorial:

//Apply to Rectangle Size
val = effect("Value")("Slider");
maxVal = effect("Max Value")("Slider");
maxLength = effect("Max Length")("Slider");
thickness = effect("Thickness")("Slider");
length = val/maxVal*maxLength;
horizontal = effect("Horizontal")("Checkbox");
if(horizontal > 0) {
    [length,thickness];
} else {
    [thickness,length];
}
//Apply to Rectangle Position
horizontal = effect("Horizontal")("Checkbox");
if(horizontal > 0) {
    offset = content("Rectangle 1").content("Rectangle Path 1").size[0]/2;
    [offset,0];
} else {
    offset = content("Rectangle 1").content("Rectangle Path 1").size[1]/-2;
    [0,offset];
}
//Apply to Position point expression control
horizontal = effect("Horizontal")("Checkbox");
x = content("Rectangle 1").content("Rectangle Path 1").size[0];
y = content("Rectangle 1").content("Rectangle Path 1").size[1];
if(horizontal > 0) {
    [x,0];
} else {
    [0,-y];
}

For layers/nulls that you want to connect to the end of the bar, parent them to the bar layer. Then add this expression to the position property:

//Apply to postion property
this.parent.effect("Position")("Point")+value; //set the value of position to 0,0 to lock to the edge of the bar

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

Tutorial 80: Auto-scale Trimmed Paths

Joe Clay | Jul 20, 2017

This week, we take a quick look at an expression that will automatically scale Stroke Width when the length of the stroke is below a certain threshold so our trimmed strokes don't just pop on or off.

Here's the relevant code that we apply to the Stroke Width property of any strokes we want to scale. This expects a Trim Paths placed outside any shape groups—it should be under the main Contents of your shape layer.

ramp = 5;
start = content("Trim Paths 1").start;
end = content("Trim Paths 1").end;
length = Math.abs(start-end);
if(length < ramp) { ease(length,0,ramp,0,length/ramp*value)  } else { value }

Become a Patron

If you'd like to help support Workbench, check out our Patreon page. Thank you for even considering clicking this link to support what we're doing. We appreciate it. Patrons get all sorts of benefits, from additional files to early product releases depending upon the tier.

Check out our Patreon Today

 1234567891011121314151617181920