Perlin Noise Motion

Smooth, organic movement using layered noise — like underwater or floating in air.

Expression Code

// Perlin Noise Motion
// Apply to Position

xFreq = 0.5;   // X movement speed
yFreq = 0.7;   // Y movement speed
xAmp = 100;    // X range
yAmp = 60;     // Y range
detail = 4;    // Noise detail layers
seed = index;

seedRandom(seed, true);

x = 0; y = 0;
for (i = 0; i < detail; i++) {
  s = Math.pow(2, i);
  x += wiggle(xFreq * s, xAmp / s, 1, 0.5)[0] - value[0];
  y += wiggle(yFreq * s, yAmp / s, 1, 0.5)[1] - value[1];
}

value + [x / detail, y / detail];
Apply to Position. Adjust xFreq/yFreq for movement speed and xAmp/yAmp for range. The detail parameter adds layers of noise for more organic results.