Tutorial 131: Generative Elements

Joe Clay | Jul 6, 2018

This week, we take a look at a way to build elements out of simple comps in order to build generative elements that can be used in other designs.

We also mentioned our script, StackIt, which is useful for building up grids of elements.

Expressions

For the circuit built with Particle Playground, you'd use this expression with the Random Seed Master Property from Fractal Noise:

seedRandom(index,true);
random(1000);

And for the circuit built with Form, you'd use this expression with the Random Seed Master Property:

f = time/thisComp.frameDuration;
seedRandom(index, true);
(Math.floor(f/3)*10) + random(100);

If you want them to be more different from each other, you can increase the value inside of random() on the last line. You can probably also use timeToFrames() and posterizeTime() but I think this is easier.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 130: Terminals and Cursors

Joe Clay | Jun 29, 2018

This week we take a quick look at how to make a nearly automatic cursor. We use a simple set of text animators to blink a cursor and follow the text as it types on. And you only need two keyframes! If you leave space before the write-on, the cursor will blink in place. I wish I had thought to do this sooner. It's already saved me a ton of time on the project I built it for.

Expressions

I've named the first Animator's group Typing and the second is called Cursor.

In Typing's range you add the following to Start:

Math.floor(value*text.sourceText.length);

Optionally, you can add this to End:

text.sourceText.length;

In Cursor's range add this to Start:

text.animator("Typing").selector("Range Selector 1").start;

And this goes in End:

text.animator("Cursor").selector("Range Selector 1").start+1;

And this goes in Cursor's Opacity:

Math.sin(time*10)*100;

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 129: 8-bit Glitches

Joe Clay | Jun 22, 2018

This started out with working on some visualizer techniques, and ended up being 8-bit glitches. Which you would know if you watched my live stream. And I know you didn't. Don't lie to me!

In this After Effects tutorial, we build an 8-bit look and we show a technique for making glitchy mattes that can be used for all sorts of useful things. I've used similar mattes for displacement, and techy animations, but here we put them into our 8-bit look to make a sort of generative art that can be used for backgrounds, textures, mattes, etc.

For information on how to make the Digital Grain check out Tutorial 120: One Comp to Rule Them All. And be sure to go check out JSplacement! And for more info on Text Generator, check out Tutorial 37: Glitch Text 02.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 128: I Like Turtles (Spline Animation)

Severo Ojea | Jun 15, 2018

This week we explore how you can make interesting folding meshes with MoSpline using a very simple L-System. You might have seen L-systems, or Logo programming language in school as it's often used to teach programming concepts to young children. The cursor in the UI for these graphic programs is called Turtle—which is where the name for this tutorial came from.

For additional information on L-Systems check this out. And for additional information on L-Systems in C4D read this.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 127: Tank-Style Wireframes

Joe Clay | Jun 8, 2018

This might be our longest tutorial ever. It was a difficult edit because I swapped some things around for some clarity, but it's a complicated tutorial involving using some sliders in ways they were never intended. So hopefully it's clear.

Anyway, this week we're taking a look at making a variant of the effect that Stu Maschwitz used on his short film Tank. Make sure to watch that and the BTS. This is not a copy. His work was far more intensive, and far more custom. This is a cheap imitation compared to Tank. That said, you can take this technique further and get nearer the beautiful subtle glitches and things that are present in Tank, but it will take you some time. If you use the Saber version we show, you can change Saber's flicker settings to get an approximation at least.

Here are the expressions we're using. Remember to set up a slider on each layer as the first effect, and name it with the nulls you're making a polygon out of in clockwise order. This first expression goes in a path property on your shape/solid—either in a mask or in a shape path. Shapes seem to be faster after my testing. Make sure you watch the video to see how you need to set up the shapes if you're using Saber instead of a stroked shape.

pts = effect(1).name.split(',');
offset = 1 + effect(1)("Slider");
p = new Array();
for(i = 0; i < pts.length; i++ ) {
    j = parseInt(pts[i])+offset;
    p.push(fromCompToSurface(thisComp.layer(j).toComp([0,0,0])));
}
if(effect("Open?")("Checkbox").value == 1 ) { createPath(p,[],[],false) } else { createPath(p) }

This expression gets applied to opacity.

pts = effect(1).name.split(',');
offset = 1 + effect(1)("Slider");
p1 = thisComp.layer(parseInt(pts[0])+offset).toComp([0,0,0]);
p2 = thisComp.layer(parseInt(pts[1])+offset).toComp([0,0,0]);
p3 = thisComp.layer(parseInt(pts[2])+offset).toComp([0,0,0]);

n = calculateNormal(p1,p2,p3);

function calculateNormal(p1,p2,p3){
    //Nz = UxVy - UyVx
    //cross p1p2 and p1p3
    u = [p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2]];
    v = [p3[0]-p1[0], p3[1]-p1[1], p3[2]-p1[2]];
    return cross(u, v);
}

f = linear(effect("Flip Normals")("Checkbox"),0,1,1,-1);
if(n[2] * f > 0) { 100 } else { value };

We also used Cyclops to show the nulls in the tutorial. Grab it if you need to show controls like that!

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 126: Number Crawl

Joe Clay | Jun 1, 2018

This week, we're going to check out an interesting way to make a number crawl using expressions and master properties. I wanted to avoid using time remapping because it can change the speed of our animations. I also wanted our digits to finish animating when our number stops animating. And above all else, I didn't want this expression to be slow so we needed to keep any lookback loops to a minimum.

While this is mostly an academic exploration, in the end we have a flexible but useful number crawl that has almost no limit to how large the number can be while allowing for animation from number to number.

Here's the expression we applied to our Number master property:

num = thisComp.layer("Controller").effect("Number")("Point");
str = '000000000000' + Math.floor(num[0]);
c = str.length-effect("Index")("Slider");
d = parseInt(str.charAt(c));

i = thisComp.layer("Controller").effect("Duration")("Slider");
while(i > 1) {
    j = '000000000000' + Math.floor(num.valueAtTime(time-(i*thisComp.frameDuration))[0]);
    if (d == j.charAt(c)) {
        k = '000000000000' + Math.floor(num.valueAtTime(time-((i+1)*thisComp.frameDuration))[0]);
        if(j.charAt(c) == k.charAt(c)) {
            break;
        }
    }
    i--;
}

d + i/100;

So I hope you guys learned something from this and we'll see you next week!

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 125: Secondary Motion

Severo Ojea | May 25, 2018

This week, we're going to explore adding secondary motion to your animations in Cinema 4D. We take a look at how to do it with clones as well as splines but the technique can be applied to any keyframed animation.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 124: Linked Paths

Joe Clay | May 18, 2018

This week, we're going to link paths on different layers using a slider so that we can animate them as if they're a single stroke. This lets us easily pass lines around objects in 3D space without actually having to deal with 3D space and figuring out occlusion.

To start with this effect, you need to have a Controller null that has sliders for Start and End. Then you need a slider for either Elements or Bias depending upon which version of this technique you're using. If you have multiple strokes, bias won't work.

For multiple strokes this is the expression for start and end parameters in whatever stroke effect you're using. Just change the parts that say start to end for the end parameter.

start = thisComp.layer("Controller").effect("Start")("Slider"); //0
block = 100/thisComp.layer("Controller").effect("Elements")("Slider");
thisNum = thisLayer.name.substr(1,2);
rStart = (thisNum-1)*block;
rEnd = thisNum*block;
linear(start,rStart,rEnd,0,100);

For two strokes where you need to control the bias, this will work for start/end parameters. Again, be sure to replace start with end for the end parameter.

bias = thisComp.layer("Controller").effect("Bias")("Slider");
start = thisComp.layer("Controller").effect("Start")("Slider");
linear(start,0,bias,0,100);

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 123: Object Blending

Severo Ojea | May 17, 2018

This week we're going to blend without an Osterizer. By using the same object in a few different states, we'll use the blend function in a Mograph Cloner to animate clones without keyframing. This is a powerful way to animate your clones.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad

Tutorial 122: After Effects Multi-shader

Joe Clay | May 4, 2018

This week we take another look at master properties inside of After Effects to build a sort of multi-shader. This allows us to use different mattes to apply textures to an image. If you use the angle control, which is tied to a Colorama effect on each matte, you can rotate the angle so that each copy of your multi-shader comp shows a different portion of the matte that can be textured differently. In this way, each copy of the multi-shader comp becomes a puzzle piece that locks in with the other layers.

An easy way to use this is to set the same matte layer in the master properties for the multi-shader comp, and set a different texture and angle. 360/0° is the base matte, 1° is the opposite of the matte and 180° is halfway between those (middle grey).

But of course, that's not the only way to use this. It can be taken much further than this concept, especially if you animate the various layers. Our project file includes the ability to have the textures animate, to have the mattes animate, or to have both animate. This is accomplished with a simple Checkbox Expression Control. Then on Time Remap for each of those layers we have a variant of this expression:

time*thisComp.layer("Controller").effect("Animate Mattes?")("Checkbox");

Since checkboxes return 0 or 1, we either have Time Remap set to 0 or set to time. I hope you guys enjoy this one and we'll see you next week.

Grab the Project Files

The best way to get our project files is to become a patron on Patreon. For $5 a month, you get access to all of the tutorial project files we've made available as well as other monthly projects, rigs, R&D, elements, early product previews, and BTS content not available anywhere else! You can also purchase just this project file on our Gumroad Store if you would rather do that.

Get access to all of our project files on Patreon or Get this single project file on Gumroad
 12345678910111213141516171819202122