Below are code used in my YouTube tutorials for your reference and usage. This page
Phyllotaxis
//thetavar myIndex = index -thisComp.layer("controls").index;var a =137.508var theta =degreesToRadians(myIndex * a);theta//positionvar myIndex = index -thisComp.layer("controls").index;var s =thisComp.layer("controls").effect("Spacing")("Slider");var theta =effect("theta")("Slider");x = s *Math.sqrt(myIndex) *Math.cos(theta);y = s *Math.sqrt(myIndex) *Math.sin(theta);[x, y] + [thisComp.width,thisComp.height] /2// Circle Sizevar theta =effect("theta")("Slider");var minSize =thisComp.layer("controls").effect("Min Size")("Slider");var maxSize =thisComp.layer("controls").effect("Max Size")("Slider");var maxRange =thisComp.layer("controls").effect("Distance Range")("Slider");var sizeFactor =linear(theta,0, maxRange, minSize, maxSize) /100;var s =thisComp.layer("controls").effect("Size")("Slider");[s, s] * sizeFactor;// Fill Colorvar theta =effect("theta")("Slider");var interval =thisComp.layer("controls").effect("Color Interval")("Slider");var numColor =thisComp.layer("colors")("Effects").numProperties;var colorIndex =Math.ceil(theta / interval) % numColor +1;thisComp.layer("colors").effect(colorIndex)("Color")
Best Motion Trails in After Effects
Wavey sine wave motion
// apply to X position after separating dimensionsvar vel =effect("waveSpeed")("Slider")*Math.PI*2;var amp =effect("waveHeight")("Slider");var offset =Math.PI*2*degreesToRadians(effect("phase")("Angle"));// main var v = amp*Math.sin(time*vel+offset);v + value;
createPath Motion Trails
//setup var l =effect("Layer Control")("Layer");var dur =effect("trailLength")("Slider");var pts = [];// calculate the trail length in frame numbers var currentFrame =timeToFrames(time);var trailLength = currentFrame - dur;// main: generate the points from the current time for (i = currentFrame; i > trailLength; i--) { t =framesToTime(i) ap =l.toWorld(l.transform.anchorPoint, t); ap -= [thisComp.width,thisComp.height] /2;pts.push(ap);}// create the path using the pointscreatePath(pts, [], [],0)
target =thisComp.layer("controls"); // set this to the layer to aim atp =thisLayer.toWorld(anchorPoint) -target.position;radiansToDegrees(Math.atan2(p[1], p[0])) -90
Cyberpunk tech lines
// user variables var pts =50;var pos = [0,100];var seed =50;// declaration var x, y; // coordinatesvar c, mul; // direction changervar 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 straightif (i %2==0) { vertices[i] = oldEle + [x, y]; } else { vertices[i] = oldEle + [0, y]; }}createPath(vertices, [], [],0);
// 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 pathseedRandom(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 // coordinatesvar c, mul // direction changervar 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 straightif (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
ring shape layer Slider Controls : size,copies, radius (anchorpoint-Y), myIndex
null layer named "controls" with Slider Controls : circle_size, circle_spacing, ring_base_size, ring_spacing, dur
null layer named "colors" with Color Controls x 3
Auto-copies
cir =2*Math.PI*effect("radius")("Slider"); // circumference of circlen =thisComp.layer("controls").effect("circle_spacing")("Slider"); // max size of a circleMath.floor(cir/n) // round down the results
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 slidern =50; // connect to sliderm = 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 durationsegMax =.8; //maximum segment durationflickerDurMin =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 EbbertyVelocity = 200; //pixels per second
Change Log
2021: Initial publish
2024.09.27: Added introduction, moved troubleshooting guide to a separate page