////////////////////////////////////////// class SceneCrosses extends Scene { SceneCrosses() { super(); m_iNumCubes = 300; m_aCubes = new Cube[m_iNumCubes]; for (int i = 0; i < m_iNumCubes; i++) { m_aCubes[i] = new Cube(); } m_fVelocity = 0.01; } void Draw() { super.Draw(); viewManager.SetViewType(3); m_fRotEye += m_fVelocity; float fRotAt = fTime * -0.8; camera(sin(m_fRotEye)*300, 0, cos(m_fRotEye)*300, sin(fRotAt)*200, sin(fTime * 0.3) * 50, cos(fRotAt)*200, 0, 1, 0); noStroke(); for (int i = 0; i < m_iNumCubes; i++) { m_aCubes[i].Draw(); } } void Kick() { super.Kick(); m_fVelocity = random(-0.025, 0.025); } int m_iNumCubes; Cube[] m_aCubes; float m_fRotEye; float m_fVelocity; } ////////////////////////////////////////// class Cube { Cube() { m_fDist = random(1); m_fAng = random(PI*2); m_fY = random(-1,1) * (1-m_fDist) * 200; m_iFreq = (int)((m_fDist) * (iNumAverages - 1)); m_fVelocity = random(-0.05, 0.05); m_fDistMod = 0; } void Draw() { m_fDistMod += m_fVelocity; float fExtraDist = sin(m_fDistMod) * 100 + 100; PVector vecPos = new PVector(sin(m_fAng) * m_fDist * 1000 + fExtraDist, m_fY, cos(m_fAng) * m_fDist * 1000 + fExtraDist); float fFftValue = constrain(fft.getAvg(m_iFreq), 2, 10); float fRGB = (float)m_iFreq / iNumAverages; noStroke(); fill(fRGB*140, fRGB*150,fRGB*20); pushMatrix(); translate(vecPos.x, vecPos.y, vecPos.z); box(fFftValue * 5); stroke(fRGB*30, fRGB*45, fRGB*100); strokeWeight(2); noFill(); box(50); popMatrix(); } float m_fDist; float m_fAng; float m_fY; int m_iFreq; float m_fVelocity; float m_fDistMod; }