JoshuaDavis

grid OSC Dolly Zoom

Sep 3rd, 2021 (edited)
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.53 KB | None | 0 0
  1. int      stageW   = 1440;
  2. int      stageH   = 1440;
  3. color    bgClr    = #242424;
  4.  
  5. // ********************************************************************************************************************
  6.  
  7. int       cols    = 35;
  8. int       rows    = 35;
  9. int       total   = cols * rows;
  10.  
  11. float     zDepth;
  12. int       rSize   = 100;
  13.  
  14. // ********************************************************************************************************************
  15.  
  16. //                  gray             light gray     red          purple        red
  17. color[][] clr1    = { {102,102,102}, {153,153,153}, {236,31,39}, {102,47,144}, {236,31,39} };
  18. int       clr1Len = clr1.length;
  19.  
  20. int       clr1Num = total;
  21. int       clr1Cnt = -1;
  22. int       clr1Blk = floor(clr1Num/clr1Len);
  23.  
  24. color[]   clr1A   = new color[clr1Num];
  25.  
  26. // ********************************************************************************************************************
  27.  
  28. void settings() {
  29.     size(stageW,stageH,P3D);
  30. }
  31.  
  32. void setup() {
  33.     background(bgClr);
  34.  
  35.     // set colors
  36.     for (int i = 0; i < clr1Num; ++i) {
  37.         if( i%clr1Blk==0 ) clr1Cnt = (clr1Cnt+1)%clr1Len;
  38.         color _c1 = color(clr1[(clr1Cnt)][0], clr1[(clr1Cnt)][1], clr1[(clr1Cnt)][2]);
  39.         color _c2 = color(clr1[(clr1Cnt+1)%clr1Len][0], clr1[(clr1Cnt+1)%clr1Len][1], clr1[(clr1Cnt+1)%clr1Len][2]);
  40.         clr1A[i] = lerpColor( _c1, _c2, map(i, (clr1Cnt*clr1Blk), (((clr1Cnt+1))*clr1Blk), 0.0, 1.0) );
  41.     }
  42.  
  43. }
  44.  
  45. void draw() {
  46.     background(bgClr);
  47.  
  48.     strokeWeight(0);
  49.     noStroke();
  50.     lights();
  51.  
  52.     float pers = map(sin(radians(frameCount*0.5)), -1,1, 1.75, 7.0);
  53.     perspective(PI/pers, (float)(width*2)/(height*2), 0.1, 1000000);
  54.  
  55.     translate((width/2), (height/2));
  56.  
  57.     int frameColumns = cols;
  58.     int frameRows = rows;
  59.  
  60.     for(int level=0; level<=ceil(cols/2); level++) {
  61.  
  62.         int frameWidth = frameColumns*rSize;
  63.         int frameHeight = frameRows*rSize;
  64.  
  65.         zDepth = map(sin(radians(frameCount+level*30)), -1,1, -10, -1) * rSize;
  66.  
  67.         for (int c=0; c<frameColumns; c++) {
  68.             for (int r=0; r<frameRows; r++) {
  69.                 if (c==0 || c==frameColumns-1 || r==0 || r==frameRows-1) {
  70.                     int x = c*rSize + rSize/2;
  71.                     int y = r*rSize + rSize/2;
  72.  
  73.                     fill( clr1A[ ((level*100)+(frameCount*10))%clr1Num ], 245 );
  74.  
  75.                     float dSize = map(sin(radians(frameCount+level*10)), -1,1, rSize/2, rSize*20);
  76.  
  77.                     pushMatrix();
  78.                         translate(x-frameWidth/2, y-frameHeight/2, zDepth);
  79.                         box(rSize/2, rSize/2, dSize);
  80.                     popMatrix();
  81.                 }
  82.             }
  83.         }
  84.  
  85.         frameColumns-=2;
  86.         frameRows-=2;
  87.     }
  88.  
  89.     surface.setTitle( int(frameRate) + " FPS " );
  90. }
  91.  
  92.  
  93.  
Add Comment
Please, Sign In to add comment