xxxxxxxxxx
103
let spazio = 50; // Spazio tra le sfere
let raggio = 8; // Raggio delle sfere
let dim_cubo = 4; // Dimensione del cubo (4x4x4) 64
let valore_noise;
//Incremento x di 0.01
let incremento = 0.025;
let x_increment = incremento; //zoom x
//Increment z di 0.03 ogni ciclo
let y_increment = incremento; //zoom x
//Increment z di 0.03 ogni ciclo
let z_increment = incremento; //zoom z
//0.02 buono
//valori offset
let z_off, y_off, x_off;
let val_alfa = 0;
let mic;
function setup() {
createCanvas(windowWidth, windowHeight, WEBGL);
//controllo_orbita = new p5.OrbitControls(); // Inizializza i controlli orbitanti
noiseDetail(4, 0.7);
x_off = 0;
y_off = 0;
z_off = 0;
frameRate(18);
mic = new p5.AudioIn(); // Inizializza l'input audio
mic.start(); // Avvia il microfono
}
function draw() {
background(20);
x_off = 0;
y_off = 0;
orbitControl();
// rotateX(frameCount * 0.001); // Rotazione continua lungo l'asse X
// rotateY(frameCount * 0.001); // Rotazione continua lungo l'asse Y
strokeWeight(0.01);
stroke(0, 0, 0, 120);
fill(255, 255, 0, 20);
let vol = mic.getLevel() * 100; // Ottieni il livello attuale del suono
//print(vol);
if (vol > 0.3) {
if(val_alfa <= 2) {
val_alfa += 0.2;
}
z_off += z_increment * 8;
}
else {
if(val_alfa >= 0) {
val_alfa -= 0.1;
}
}
for (let x = 0; x < dim_cubo; x++) {
x_off += x_increment;
y_off = 0;
for (let y = 0; y < dim_cubo; y++) {
for (let z = 0; z < dim_cubo; z++) {
push(); // Salva lo stato attuale
// Posiziona la sfera in base alla dimensione del cubo
translate((x - (dim_cubo - 1) / 2) * spazio,
(y - (dim_cubo - 1) / 2) * spazio,
(z - (dim_cubo - 1) / 2) * spazio);
valore_noise = noise(x_off, y_off, z_off);
// print(valore_noise);
if (valore_noise >= 0.7) {
fill(255, 255, 0, 80 + 120 * val_alfa);
}
else {
fill(255, 255, 0, 20 + 20 * val_alfa);
}
sphere(raggio, 8, 8); // Disegna la sfera
pop(); // Ripristina lo stato precedente
y_off += y_increment;
}
}
}
z_off += z_increment;
}