SOURCE

// just playing with keijiro's processing sketch
// https://github.com/keijiro/sketches2016/blob/master/Cubes3/Cubes3.pde
function setup(){
  createCanvas(500, 500, WEBGL);
  colorMode(RGB, 1);
  perspective(0.5, 1, 0.1, 100);
}

function draw(){
  var frames = 24 * 10;
  var t = frameCount / frames;
  background(0.1);
  noStroke();

  camera(0, 0, 25 + sin(PI * 2 * t) * 3);
  
  rotateX(0.5 - 0.05 * sin(PI * 4 * t));
  rotateY(t * PI);
  
  var columns = 8;
  var c0 = color(0.3, 0.3, 0.3);
  var c1 = color(1, 1, 1);
  
  for(var ix = 0; ix < columns; ix++){
    var x = ix - 0.5 * columns + 0.5;
    for(var iy = 0; iy < columns; iy++){
      var y = iy - 0.5 * columns + 0.5;
      for(var iz = 0; iz < columns; iz++){
        var z = iz - 0.5 * columns + 0.5;
        
        var d = sqrt(x * x + y * y + z * z);
        var s = abs(sin(d - t * 4 * PI));

        push();
        
        translate(x * 10, y * 10, z * 10);
        
        fill(lerpColor(c0, c1, s * s * s));
        box(s * 10);
        pop();
      }
    }
  } 
  
}
console 命令行工具 X clear

                    
>
console