Tutorial 97: Improved Single-Layer Track Mattes

Joe Clay | Nov 17, 2017

I received a comment on an old tutorial and realized there is a way to improve upon it now that we have access to mask path points in expressions. The expression below looks at our first position key and uses that to calculate an offset so that the mask that we apply this to stays put. Take note, if you need to tie it to a different key or a differently named mask, you'll need to modify the expression.

If you're a patron with access to my Quiver expressions, it should already be saved in there for you if you want to download a txt file to use with Quiver.

Lock Mask Expression

p = transform.position;
s = transform.scale/100;
offset = p.key(1).value - p.value;
offset = [offset[0] / s[0], offset[1] / s[1]];
pts = mask("Mask 1").maskPath.points();
for(i = 0; i < pts.length; i++)  {
    pts[i] = pts[i] + offset;
}
createPath(pts);

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 96: Mask Vertex Expressions plus Grading

Joe Clay | Nov 10, 2017

This video was sponsored by VideoBlocks. And because of that we have some nice footage to work with. And we're using that footage to take a quick look at a feature I've been dying to have in AE since at least 2005—mask vertex expression access! It's finally here in CC 2018!

I've needed this so many times, from locking other layers to masks to generating connecting lines on the fly without having to resort to scripts or a bunch of Beam effects. Here, we're using it to draw triangles on our footage. But combined with After Effects facial tracker and some setup, you can make polygonal faces that move with real footage, or whatever you can think up. I have some other ideas in the works, but I'm going to need some time to experiment. Until then, take this technique and run wild! Also, if you watched the grading section, I'm sorry I said "little bit" about a bajillion times. I'll keep it down next time. I just didn't realize I was doing it.

Here's some code for you to use. You're going to need to mix and match this code to get what you're after.

Get Points from Mask and Make a Triangle

Don't forget to add a Layer control and a Slider control called 'Offset.'

l = effect("Layer Control")("Layer");
offset = Math.floor(effect("Offset")("Slider"));
numPts = this.parent.mask("Mask 1").maskPath.points().length;

p = new Array();
p.push(toComp(l.mask("Mask 1").maskPath.points()[(offset+1) % numPts]));
p.push(toComp(l.mask("Mask 1").maskPath.points()[(offset+2) % numPts]));
p.push(toComp(l.mask("Mask 1").maskPath.points()[(offset+3) % numPts]));

createPath(p);

Get Points from Face Tracking and Make a Triangle

Don't forget to add a Layer control, Checkbox control called 'Random' and a Slider control called 'Offset.'

l = effect("Layer Control")("Layer");
r = effect("Random")("Checkbox").value;
offset = Math.floor(effect("Offset")("Slider"));

pts = new Array();
pts.push(l.effect("Face Track Points")("Left Eyebrow Inner").value);
pts.push(l.effect("Face Track Points")("Left Eyebrow Middle").value);
pts.push(l.effect("Face Track Points")("Left Eyebrow Outer").value);
pts.push(l.effect("Face Track Points")("Left Eye Inner").value);
pts.push(l.effect("Face Track Points")("Left Pupil").value);
pts.push(l.effect("Face Track Points")("Left Eye Outer").value);
pts.push(l.effect("Face Track Points")("Right Eyebrow Inner").value);
pts.push(l.effect("Face Track Points")("Right Eyebrow Middle").value);
pts.push(l.effect("Face Track Points")("Right Eyebrow Outer").value);
pts.push(l.effect("Face Track Points")("Right Eye Inner").value);
pts.push(l.effect("Face Track Points")("Right Pupil").value);
pts.push(l.effect("Face Track Points")("Right Eye Outer").value);
pts.push(l.effect("Face Track Points")("Nose Bridge").value);
pts.push(l.effect("Face Track Points")("Nose Tip").value);
pts.push(l.effect("Face Track Points")("Left Nostril").value);
pts.push(l.effect("Face Track Points")("Right Nostril").value);
pts.push(l.effect("Face Track Points")("Mouth Left").value);
pts.push(l.effect("Face Track Points")("Mouth Top").value);
pts.push(l.effect("Face Track Points")("Mouth Right").value);
pts.push(l.effect("Face Track Points")("Mouth Bottom").value);
pts.push(l.effect("Face Track Points")("Left Cheek Top").value);
pts.push(l.effect("Face Track Points")("Left Cheek Middle").value);
pts.push(l.effect("Face Track Points")("Right Cheek Top").value);
pts.push(l.effect("Face Track Points")("Right Cheek Middle").value);
pts.push(l.effect("Face Track Points")("Chin").value);

numPts = pts.length;

p = new Array();
if(r > 0) {
    seedRandom(offset,true);
    p.push(toComp(pts[Math.floor(random(0,numPts))]));
    seedRandom(offset+1,true);
    p.push(toComp(pts[Math.floor(random(0,numPts))]));
    seedRandom(offset+2,true);
    p.push(toComp(pts[Math.floor(random(0,numPts))]));
} else {
    p.push(toComp(pts[(offset) % numPts]));
    p.push(toComp(pts[(offset+1) % numPts]));
    p.push(toComp(pts[(offset+2) % numPts]));
}
createPath(p);

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 95: Fluid Motion

Joe Clay | Nov 3, 2017

In this week's tutorial we take a look back at two of our first few tutorials—Tutorial 02: Radial Delay and Tutorial 03: Blobs—in order to simulate what's going on in a shot on Dribbble by Alexander Pyatkov for Motion Design School called Telegram Logo Animation.

This concept can be done in other ways—you could probably do it with Time Displacement for example—but since we can add additional code this example can be pretty powerful. For example, you can have different sized circles and use their size to assign a mass, and thus have some move more slowly due to inertia. Or you could code in a movable point to determine where the delay comes from. There's a lot that can be done. As most of our tutorials go, this is just showing the idea of a technique—using delays to simulate a fluid motion.

If you want to get closer to the example, you might want to use this as a reference for animating shape paths, or for drawing frames. There's a lot of possibilities to using delays with blobbed objects in this fashion, so download the project file below and send @workbench_tv some gifs!

Here's the code used in the project if you want to build your own. Add Linear Delay the position property on all of your component layers.

//Linear Delay
delay = -thisComp.layer("Controller").effect("Delay")("Slider"); //in seconds
x = Math.pow(value[0],2);
y = Math.pow(value[1],2);
d = Math.sqrt(x+y);
t = time + linear(d,0,2203,0,delay);
value+(thisComp.layer("Controller").transform.position.valueAtTime(t)-[960,540]);

Add Inertial Bounce 2 to the controller's movement so that everything bounces back into place.

//Inertial Bounce 2
amp = .1;
freq = 2.0;
decay = 2.0;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}}
if (n == 0){ t = 0;
}else{
t = time - key(n).time;
}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}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

Grab the Project Files

Feel free to download the project file that you can use in your own projects!

Tutorial 94: Quick Tips 06

Joe Clay | Oct 27, 2017

Here's another collection of Quick Tips for you guys. The time for each tip is as follows:

And that's it. I hope some of these help speed up your workflow! Also go grab Overlord from Battle Axe! And check out John Colombo and Devil Cube! Thanks dudes!

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 93: Slit-Scan Displacement

Joe Clay | Oct 20, 2017

I guess I should've mentioned that slit-scan photography is where the name for this came from. Special cameras expose time across the frame so you can easily discern things like a photo-finish for example. For some reason this is more explained on Wikipedia in Strip Photography than in the Slit-Scan Photography article.

By building on that basic premise, we can make an interesting matte that we can use for other purposes like displacement, or with something like CC Image wipe for reveals. Take it for a test spin with the project below, and see what you can come up with. If you come up with something interesting, hit up @workbench_tv!

Also, I put an angle control on the first matte, so you can set it to any direction. Have fun!

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

Grab the Project Files

Feel free to download the project file that you can use in your own projects!

Tutorial 92: Stacking Text Animators

Joe Clay | Oct 13, 2017

If you're like me, you probably feel like you've animated text every which way by now. I always feel like finding a new way to animate text that looks good and doesn't feel cheesy or forced is one of the most challenging aspects of working on a project and it's often the part I dread the most. It's great when you've figured it out, but I usually procrastinate on my way to getting there.

Unless you're going to split apart text and animate each piece, it's often difficult to get things to work well with animators. In a previous tutorial, Tutorial 26: Text Animations Simplified, we looked at building elements in separate animators to make the task easier. This tutorial expands on that by building those parts into presets that can be quickly combined into more complex text animations. And it's even easier if you add in expression controls like we did way back in Tutorial 05: Sliders and Presets.

This can help to speed up your workflow and hopefully remove a barrier between you and more creative work. I didn't note it in the tutorial, but I also find it great to use animators to move text rather than using position keyframes. That way you can change text and layouts quickly when a client asks for a change.

If you're a patron that gets presets, you'll have access to the presets I built in this tutorial, as well as additional ones I'm going to build into my own library in the coming weeks. We're glad to finally be bringing more presets to you guys. We've basically been building out a campaign for arenas across the country, which means we haven't had much chance to make anything new as we've been resizing and retiming things to fit various LED boards for a bit now, haha.

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 91: LEGO Style

Joe Clay | Oct 6, 2017

LEGO my EGGO. Sorry, I've got nothing better than that. Well, hopefully this tutorial is better than that, and if not there's a project file below.

A couple of weeks ago, Victoria Nece, AE's project manager, posted a sweet LEGO rig she made. I mentioned that it'd make a neat tutorial and she said to go for it. She graciously offered up her rig, but I decided to see what I could come up with.

I ended up going a different route to even out the shading from the CC Ball Action effect. Victoria either used Posterize or Cartoon, but I ended up using Minimax. That just goes to show there's a bunch of different ways to get similar effects.

Anyway, I hope you enjoy it! Get the project below the example image!

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

Grab the Project Files

Feel free to download the project file that you can use in your own projects!

Tutorial 90: Engraving

Joe Clay | Sep 29, 2017

First, I realized while editing this that I didn't use my Workbench space so the main comp is a little smaller than I'd like, but I've provided a project file, so you can mess around with that.

This is a quick technique using the same method we went over in Tutorial 03: Blobs in order to make an engraving-style effect. I feel like I could've explained it a little better in this tutorial. Basically we set our Venetian Blinds/Lines layer and our image to around 50% opacity. Then we blur that so our lines can have varying thickness—i.e. if dark areas bleed together we'll see thicker lines. Then we use Brightness and Contrast to compress our tonal range to black and white so that overlapping blacks give us lines that vary in thickness according to how much black is in the area. Hopefully that makes sense. If not, there's the project file. Playing around with that should solidify it for you.

These two examples are in the project file. The second uses an additional noise layer—a halftone in this case—to break up the lines a little bit and really mimic an older style engraving.

In case you're wondering, this photo is from, I believe, the Burgert Brother's collection. I downloaded it a bit ago, but almost all images of old Tampa come from them. They photographed Tampa in its early years, and you can't find a larger part of our culture than cigar rolling—except perhaps our Cuban Sandwich. I was going to say a photo of a sandwich might not show off this technique, but it probably does! I might need to make an infographic animation on sandwiches, haha.

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

Grab the Project Files

Feel free to download the project file that you can use in your own projects!

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

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

Check out our Patreon Today

 123456789101112131415161718192021