Cookbook

Cyberpunk tech lines

main
branch
main
// user variables
var pts = 50;
var pos = [0, 100];
var seed = 50;
โ€‹
// declaration
var x, y // coordinates
var c, mul // direction changer
var vertices = [[0, 0]] // create first point
โ€‹
// vertices array
for (i = 1; i <= pts; i++) {
seedRandom(i + seed, true);
c = random(); // create random num between 0 to 1
c > 0.5 ? mul = 1 : mul = -1; // change direction
oldEle = vertices[i - 1] // get previous vertice
โ€‹
y = random(pos[0], pos[1]);
x = y * mul;
โ€‹
// conditional: if even, go diagonal. If odd, go straight
if (i % 2 == 0) {
vertices[i] = oldEle + [x, y];
} else {
vertices[i] = oldEle + [0, y];
}
}
โ€‹
createPath(vertices, [], [], 0);
branch
// user variables
var pts = effect("pts")("Slider");
var pos = [effect("min_y")("Slider"), effect("max_y")("Slider")];
var seed = effect("seed")("Slider");
โ€‹
// get random point on first path
seedRandom(seed,true);
var myPath = content("main").path;
var myPathpts = myPath.points().length;
var myRandPt = Math.floor(random(myPathpts));
var mySelectedPt = myPath.points()[myRandPt];
โ€‹
// declaration
var x, y // coordinates
var c, mul // direction changer
var vertices = [mySelectedPt] // create first point
โ€‹
// vertices array
for (i = 1; i <= pts; i++) {
seedRandom(i + seed, true);
c = random(); // create random num between 0 to 1
c > 0.5 ? mul = 1 : mul = -1; // change direction
oldEle = vertices[i - 1] // get previous vertice
โ€‹
y = random(pos[0], pos[1]);
x = y * mul;
โ€‹
// conditional: if even, go diagonal. If odd, go straight
if (i % 2 == 0) {
vertices[i] = oldEle + [x, y];
} else {
vertices[i] = oldEle + [0, y];
}
}
โ€‹
createPath(vertices, [], [], 0);

Radial Delay Rig

tgt = thisComp.layer("control");
// d = length(L.transform.position, transform.position);
d = length(thisLayer.toWorld(transform.anchorPoint), tgt.toWorld(tgt.transform.anchorPoint));
โ€‹
delay = thisComp.layer("control").effect("maxDelay")("Slider");
offset = linear(d,0,2000,0,delay);
time-offset;

Buck Apeel Circle Ripple

Ensure you have the following

  1. ring shape layer Slider Controls : size,copies, radius (anchorpoint-Y), myIndex

  2. null layer named "controls" with Slider Controls : circle_size, circle_spacing, ring_base_size, ring_spacing, dur

  3. null layer named "colors" with Color Controls x 3

Auto-copies

cir = 2*Math.PI *effect("radius")("Slider"); // circumference of circle
n = thisComp.layer("controls").effect("circle_spacing")("Slider"); // max size of a circle
Math.floor(cir/n) // round down the results

Get myIndex

myIndex = index-thisComp.layer("controls").index-1;

Auto-scaling radius

myIndex = effect("myIndex")("Slider");
c = thisComp.layer("controls");
int = c.effect("ring_spacing")("Slider");
base = c.effect("ring_base_size")("Slider");
โ€‹
s = myIndex*int;s+ base;

Auto-alternate color

myIndex = effect("myIndex")("Slider");
num = myIndex %3+1;
thisComp.layer("color").effect(num)("Color")

Stagger-animation - balls

myIndex = effect("myIndex")("Slider");
s = thisComp.layer("controls").effect("circle_size")("Slider");
dur = framesToTime(thisComp.layer("controls").effect("dur")("Slider"));
offset = myIndex*dur;
s.valueAtTime(time-offset)

Matrix Binary Rain Code

seed = 10; // connect to slider
n = 50; // connect to slider
โ€‹
m = b = ''
โ€‹
for(i=0;i<n;i++){
seedRandom(seed+i,true);
b = Math.round(random());
m += b;
}

Vucko โ€” From Nothing to Something

Random flickering

// apply this to your Time Remap property of your Sprite render
seed = 20; // option:connect to a slider
segMin = .5; //minimum segment duration
segMax = .8; //maximum segment duration
flickerDurMin = 1;
flickerDurMax = 5;
โ€‹
end = 0;
j = 0;
โ€‹
while ( time >= end){
j += 1;
seedRandom(j,true);
start = end;
end += random(segMin,segMax);
}
flickerDur = random(flickerDurMin,flickerDurMax);
if (time > end - flickerDur){
seedRandom(j+69+seed,true);
random(outPoint);
}else{
seedRandom(j+seed,true);
random(outPoint);
}
โ€‹
// original expression from Dan Ebbert

Falling leaves [1][2]

1
2
1
//position
yVelocity = 200; //pixels per second
oscFreq = 1.5; //oscillations per second
oscDepth = 35; //oscillation depth (pixels)
drift = 25; // drift (wind?) (pixels per second: - = left, + = right)
โ€‹
value + [oscDepth*Math.sin(oscFreq*Math.PI*2*time) + drift *time, yVelocity*time,0]
โ€‹
//Z ROTATION:
โ€‹
seedRandom(index,true);
random(360);
โ€‹
//Y ROTATION:
oscFreq = 1.5;
maxTilt = 15; //degrees
โ€‹
maxTilt*Math.cos(oscFreq*Math.PI*2*time)
2
yVelocity = 200; //pixels per second
oscFreq = 1.5; //oscillations per second
oscDepth = 35; //oscillation depth (pixels)
drift = 25; // drift (wind?) (pixels per second: - = left, + = right)
floor=500; //position of floor from top
โ€‹
X=value[0] + oscDepth*Math.sin(oscFreq*Math.PI*2*time) + drift *time;
Y=easeIn(value[1]+yVelocity*time,value[1],floor)
Z=0;
โ€‹
[X,Y,Z]

Techniques

Radial arrangement

Pixilation

  • Dot-Pixilation: CC Ball Actions

  • Square-Pixilation: Mosaic

  • Plugins: tv pixels,

Multi-image spriting / instancing

// Create a marker and use that to control the length of the comp you want instance
โ€‹
seedRandom(0,true);
m = thisComp.marker.nearestKey(time).time
random(0, m)

โ€‹