238 lines
5.9 KiB
Plaintext
238 lines
5.9 KiB
Plaintext
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
Interface Fractures III - SILICON
|
|
(c) nova@deviator.si
|
|
|
|
IF3Si.pde
|
|
|
|
*/
|
|
|
|
// undecorate window (remove window borders etc) - - - - - - - - - - - - - - -
|
|
public void init() { frame.removeNotify(); frame.setUndecorated(true);
|
|
frame.addNotify(); super.init(); }
|
|
|
|
// load libs
|
|
import oscP5.*; // Open Sound Control
|
|
import netP5.*;
|
|
|
|
|
|
// declarations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
// declare OSC object
|
|
OscP5 oscP5;
|
|
|
|
|
|
// IMAGE POOL, a 2D array
|
|
PImage[][] imgPool;
|
|
|
|
// texture (tiles)
|
|
float texX = 0;
|
|
float texY = 0;
|
|
|
|
// generate an array of random numbers
|
|
int[] rands = new int[500];
|
|
IntList randz; // arrayList
|
|
|
|
// for draw cube
|
|
int cubesnum = 20;
|
|
PGraphics[] cubes = new PGraphics[cubesnum];
|
|
PShader blur;
|
|
PGraphics bpass1, bpass2;
|
|
|
|
// spheres
|
|
int ptsW, ptsH;
|
|
|
|
int numPointsW;
|
|
int numPointsH_2pi;
|
|
int numPointsH;
|
|
|
|
float[] coorX;
|
|
float[] coorY;
|
|
float[] coorZ;
|
|
float[] multXZ;
|
|
|
|
PGraphics sphere;
|
|
|
|
|
|
|
|
void setup() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
float sizefactor = 1; // define the size of the screen, 1 = 1080p
|
|
size( int( 1920 * sizefactor ),
|
|
int( 1080 * sizefactor ),
|
|
P3D ); // renderer
|
|
|
|
// framerate
|
|
frameRate(60);
|
|
smooth(32); // 32??
|
|
noCursor();
|
|
background(10);
|
|
|
|
println("\n\n~~~ Hello. Starting Interface Fractures III - SILICON." +
|
|
" - - - - - - - - - - - - - - - - - - - - - -\n");
|
|
|
|
// start oscP5, listening for incoming messages at port 12000
|
|
println("~~~ starting oscP5 ...");
|
|
oscP5 = new OscP5(this,12000);
|
|
oscP5.plug(this,"ctlin","/ctlin"); // to be converted for PD OSC input
|
|
|
|
// get all textures into an image pool
|
|
println("\n\n~~~ loading textures into image pool ...\n");
|
|
imgPool = getImages("/images/");
|
|
|
|
// create an array of random value between -50 and 50
|
|
for (int i=0; i < 500; i++) { rands[i] = i-250; }
|
|
shuffle(rands);
|
|
|
|
|
|
// drawCube ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
|
|
// an array of PGraphics
|
|
for (int i = 0; i < cubesnum; i++) {
|
|
cubes[i] = createGraphics(width, height, P3D);
|
|
}
|
|
blur = loadShader("blur.glsl");
|
|
bpass1 = createGraphics(width, height, P3D);
|
|
bpass1.smooth();
|
|
bpass2 = createGraphics(width, height, P3D);
|
|
bpass2.smooth();
|
|
|
|
|
|
randz = new IntList(width);
|
|
for (int i=0; i < width; i++) {
|
|
randz.set(i, i);
|
|
}
|
|
randz.shuffle();
|
|
//println(randz);
|
|
|
|
// spheres
|
|
ptsW=30;
|
|
ptsH=30;
|
|
initializeSphere(ptsW, ptsH); // number of vertices around the width and height
|
|
sphere = createGraphics(width, height, P3D);
|
|
|
|
}
|
|
|
|
void draw() { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
// clean screen ````````````````````````````````````````````````````|
|
|
/*
|
|
blendMode(BLEND);
|
|
screenClean(color(50));
|
|
|
|
// SPHERES -----------------------------------------------------------
|
|
//offscreen render spheres
|
|
|
|
sphere.beginDraw();
|
|
sphere.blendMode(BLEND);
|
|
sphere.rect(0, 0, width, height);
|
|
sphere.blendMode(DARKEST);
|
|
sphere.noStroke();
|
|
sphere.pushMatrix();
|
|
sphere.translate(width/2+(width/8), height/2, 580);
|
|
sphere.rotateX(radians(float(frameCount) * 0.1));
|
|
sphere.rotateY(radians(float(frameCount) * 0.23));
|
|
sphere.rotateZ(radians(float(frameCount) * 0.2));
|
|
textureSphere(sphere, 400, 400, 400, imgPool[3][1]);
|
|
sphere.popMatrix();
|
|
|
|
sphere.pushMatrix();
|
|
sphere.translate(width/2+(width/8), height/2, 580);
|
|
sphere.rotateX(radians(float(frameCount) * 0.2));
|
|
sphere.rotateY(radians(float(frameCount) * 0.13));
|
|
sphere.rotateZ(radians(float(frameCount) * 0.01));
|
|
textureSphere(sphere, 390, 390, 390, imgPool[3][1]);
|
|
sphere.popMatrix();
|
|
|
|
sphere.endDraw();
|
|
|
|
|
|
// tint(0);
|
|
// image(sphere, 0, 0);
|
|
|
|
textureWrap(REPEAT);
|
|
//textureMode(NORMAL);
|
|
|
|
pushMatrix();
|
|
//tint(255);
|
|
translate(width/2, height/2); // center coordinate system
|
|
translate(((frameCount*1) % width) - width/2,0);
|
|
//stroke(0,50);
|
|
//strokeWeight(1);
|
|
noStroke();
|
|
|
|
float quadW = 500;
|
|
float quadH = height;
|
|
|
|
float v1x = 0; // sin(radians(frameCount))*250+400;
|
|
|
|
pushMatrix() ;
|
|
//rotate(PI/PI);
|
|
|
|
beginShape(QUADS);
|
|
texture(sphere);
|
|
vertex(-quadW/2, -quadH/2, 0, 0);
|
|
vertex( quadW/2, -quadH/2, quadW, 0);
|
|
vertex( quadW/2, quadH/2, quadW, quadH);
|
|
vertex(-quadW/2, quadH/2, 0, quadH);
|
|
endShape();
|
|
popMatrix();
|
|
popMatrix();
|
|
|
|
*/
|
|
|
|
// --------------------------------------------------------------------------
|
|
// SCENENGINES
|
|
|
|
|
|
|
|
|
|
// draw tiles `````````````````````````````````````````````````````|
|
|
tiles(boolean(1), // render on/off
|
|
color(0, 0, 0, 80), // background color (HSBA)
|
|
color(80, 70, 20, 100), // tile color
|
|
20, // tile hue distance
|
|
0, // blendMode
|
|
6, // number of tiles on X axis
|
|
1, // number of tiles on Y axis
|
|
2, // texture bank number
|
|
0, // texture number/id
|
|
10, // texture speed X
|
|
1, // texture speed Y
|
|
64 // overlap. 127 = 300%
|
|
);
|
|
|
|
|
|
|
|
// draw cubes `````````````````````````````````````````````````````|
|
|
drawCube(boolean(0), cubes,
|
|
100, height/2, -100,
|
|
400, 300, 300,
|
|
radians(frameCount), radians(frameCount*0.7), PI/2,
|
|
0);
|
|
|
|
|
|
|
|
// test pattern```````````````````````````````````````````````````|
|
|
testPattern(boolean(0), // on/off
|
|
2, 0, // img bank & ID
|
|
255, // image alpha
|
|
10, // number of horizontal 'lanes'
|
|
10, // density
|
|
4, // stroke width
|
|
255, // stroke alpha
|
|
2 // speed
|
|
);
|
|
|
|
|
|
// debug `````````````````````````````````````````````````````````|
|
|
// draw test picture
|
|
testPicture(boolean(0));
|
|
|
|
// frames per second
|
|
displayFps(true);
|
|
// document
|
|
autoSnap(false);
|
|
} // --------------------------------------------------------------------------
|
|
|
|
|
|
|