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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

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 R&D files, setups, and elements to early product releases.

Check out our Patreon Today

Tutorial 79: Procedural Mattes

Joe Clay | Jul 14, 2017

This week, we're exploring a technique to make a procedural grid matte to use as an element, a track matte, or a displacement map. I'm sure there's a ton of other stuff you can do with this technique. It also pairs nicely with Tutorial 77: Glitchy Dot LED Thing.

You can add in other lines with effects like Venetian Blinds, or even combine it with Tutorial 67:Glitch Mapping. Hell, while you're at it, you might want to check out our Glitchy YouTube playlist and just throw all of that stuff together. We've got a couple of playlists up for specific topics like this.

I also quickly explain what I did to make this image. But that part is just a bonus, it's not a step by step tutorial—making the matte is the meat of this one. I used a texture I generated in JSPlacement and a LUT from IWLTBAP to make this image. Make sure to check those two out! And as always, thank you 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 R&D files, setups, and elements to early product releases.

Check out our Patreon Today

Tutorial 78: Unconventional Bouncing Boxes

Joe Clay | Jul 7, 2017

This week, we're looking an an interesting interaction between offset paths and open path shapes. It allows us to make simple strokes into stroked shapes. It can definitely be taken further than this and I encourage you to do so. For example if you want to have a bunch of offset lines that won't work with a repeater (like complex curves or lines that change angles) you can use multiple offsets to make additional strokes spaced perfectly apart that can be trimmed. And if you link the paths in each one together, you can edit it all with one path.

You'll just have to modify your trims so that they go out from the center—begin with start and end set to 50% and then end with start set to 0% and end set to 100%. Then adjust your offset to compensate. If you don't want the ends closing, you can trim them or mask them separately.

Experiment. Good things happen.

Also, we've released StackIt so check that out! Youtube user Neckless won a free copy by spotting my hidden youtube joke! I think I'll do more of these fun giveaways in the future. So stay sharp!

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 R&D files, setups, and elements to early product releases.

Check out our Patreon Today

 123456789101112131415161718192021