leader = thisComp.layer("Attractor"); // null layer // spacial offset from null seedRandom(index, true); offsetX = random(0,20)*thisComp.layer("Spacial Slider").effect("X")("Slider")*thisComp.layer("Spacial Slider").effect("XYZ")("Slider"); offsetY = random(-20,20)*thisComp.layer("Spacial Slider").effect("Y")("Slider")*thisComp.layer("Spacial Slider").effect("XYZ")("Slider"); x = leader.position[0] + offsetX*time; // the *time makes it so it is always moving, so the atan2() in the rotation expression is never dividing by 0 y = leader.position[1] + offsetY; // z bump zMin = thisComp.layer("Wave Height Sliders").effect("zMin")("Slider"); zMax = thisComp.layer("Wave Height Sliders").effect("zMax")("Slider"); target = thisComp.layer("Turbulence Layer"); samplePoint = [Math.abs(x),Math.abs(y)]; sampleRadius = [5,5]; rgb = target.sampleImage(samplePoint, sampleRadius); lum = rgbToHsl(rgb)[2]; offsetZ = ease(lum, 0, 1, zMin, zMax)*thisComp.layer("Spacial Slider").effect("Z")("Slider"); z = leader.position[2] + offsetZ; [x, y, z]
p1 = position; p2 = position.valueAtTime(time-thisComp.frameDuration*5); delta = p1-p2; radiansToDegrees(Math.atan2(delta[2],delta[0]))