Låta frukt - hur man gör en skulptural ljud Visualizer (6 / 6 steg)
Steg 6: Forma frukten
IDX = (idx+1)%(ptDensity);
beräkna aktuell rad
för (int jag = 0; jag < fft.avgSize(); i ++) {
flyta theta = (PI/fft.avgSize()) * i-PI/2.
den aktuella raden översätter ljud genom att plocka upp ljudbilden och sträcker det att passa på en halv cirkel. värdet på //each intervall av spektrumet översätter sedan till en magnitud förändring, strålar ut från mitten av klotet.
float lägga = (coords[idx][i].mag() + (0.05*(r+modFactor(i)*fft.getAvg(i)));
coords[IDX][i].setMag(Add);
}
Denna dubbla för-loop drar halfen-circle och roterar runt frukten, lägger att skapa en skanner som till avståndet från varje punkt på Center.
för (int j = 0; j < (ptDensity); j ++) {//loop roterar halvcirkel runt y-axeln till formuläret sfären
funktionen beginShape() sträcker sig över alla punkter på objektet och skapar den faktiska ytan som gör upp objektet.
beginShape(QUAD_STRIP);
för (int jag = 0; jag < fft.avgSize(); i ++) {//this loop drar halva cirkeln
flyta theta = (PI/fft.avgSize()) * i-PI/2.
noStroke();
stroke(Map(FFT.getAvg(i), 0, fft.avgSize(), 0, 256), 50, 55);
Fill(Map(FFT.getAvg(i), 0, fft.avgSize(), 0, 256), 50, 55);
vertex (coords [j] [i] .x, coords [j] [i] .y, coords[j][i].z);
om (j == ptDensity-1) {
vertex (coords [0] [i] .x, coords [0] [i] .y, coords[0][i].z);
}
annat {
vertex (coords [j + 1] [i] .x, coords [j + 1] [i] .y, coords[j+1][i].z);
} //create quadstrip-kompatibel geometri
}
endShape(CLOSE);
}