feat(of): images dans toutes demos + sphere 3D
User : "pour les effects d'image etc tu mets à jour toutes les démos. puis la wave tu la fait vraiment en sphère 3D". SphereWaveVis enrichi : - 3 sphères concentriques au lieu d'une seule : * solide centrale modulée par FFT (bins par lon) * coque externe wireframe scaled 1.4x rotation inversée bass * coque interne wireframe scaled 0.6x pulsée par kick - 2 sphères pôles haut/bas (treble) pour repère 3D - Camera orbitale plus dramatique (rayon - kick, hauteur treble, vitesse modulée bpm) - Render solid + wireframes superposés - Couleurs vert / bleu / magenta selon couche Toutes les démos ont maintenant au moins 1 acte avec image OS : AMIGA → ImgWB ✓ C64 → ImgC64 ✓ ACID → ImgAtari (NEW) TUNNEL → ImgNeXT (NEW) FREQUENCIES → ImgLotus + SphereWave (NEW) GLITCH → ImgOS2 (NEW) AMBIENT → ImgApple (NEW) RAVE → ImgWin95 (NEW) MEMORY → ImgNeXT + ImgBeOS ✓ GREETINGS → 7 logos parade ✓ ESCHER → ImgWin1 (NEW) INFERNO → ImgDos ✓ OUTRUN → ImgWin311 (NEW) CUBE STORM → ImgZX + ImgIrix (NEW)
This commit is contained in:
+43
-8
@@ -674,7 +674,11 @@ void ofApp::initDemos() {
|
||||
{"ROSACE", 20.0f, polSpe(), SS::Wavy3D,
|
||||
" K=5 PETALS POLAR ROSE EACH PETAL A KICK ", "H",
|
||||
BgKind::Rose3d},
|
||||
{"COMEDOWN", 25.0f, starsWave(), SS::Mirror,
|
||||
{"ATARI", 18.0f, polSpe(), SS::Rainbow,
|
||||
" *** ATARI 2600 *** PRINT FROM 1977 "
|
||||
" THE FIRST PIXEL TRIPS WERE HERE ", "A",
|
||||
BgKind::ImgAtari},
|
||||
{"COMEDOWN", 22.0f, starsWave(), SS::Mirror,
|
||||
" AND SOFTLY BACK TO EARTH "
|
||||
" THE 303 SLEEPS IN ITS CIRCUIT ", "J", BgKind::Caustics},
|
||||
}};
|
||||
@@ -694,7 +698,10 @@ void ofApp::initDemos() {
|
||||
" A NEVER ENDING TORUS "
|
||||
" GREETINGS TO ANDROMEDA AND CONSPIRACY ", "E",
|
||||
BgKind::TorusMesh},
|
||||
{"OPENING", 30.0f, all(), SS::Rainbow,
|
||||
{"NEXT CUBE",30.0f, polSpe(), SS::Chrome,
|
||||
" THE NEXT CUBE APPEARS OBJC SMALLTALK 1989 "
|
||||
" THE OS THAT BIRTHED OS X ", "F", BgKind::ImgNeXT},
|
||||
{"OPENING", 25.0f, all(), SS::Rainbow,
|
||||
" THE TUNNEL OPENS UP EVERYTHING APPEARS "
|
||||
" PURE LIGHT BEYOND THE WALLS ", "F", BgKind::Tunnel},
|
||||
}};
|
||||
@@ -718,7 +725,14 @@ void ofApp::initDemos() {
|
||||
{"HOPF", 25.0f, polSpe(), SS::Wavy3D,
|
||||
" HOPF FIBRATION SPHERES INSIDE SPHERES "
|
||||
" HARMONIC DECOMPOSITION VISUAL ", "B", BgKind::Hopf},
|
||||
{"FULL", 25.0f, all(), SS::Rainbow,
|
||||
{"LOTUS", 22.0f, polSpe(), SS::Cascade,
|
||||
" LOTUS 1-2-3 THE FIRST KILLER APP "
|
||||
" SPREADSHEET MEETS SPECTRUM ", "Q", BgKind::ImgLotus},
|
||||
{"SPHERE", 25.0f, polSpe(), SS::Wavy3D,
|
||||
" THE SPECTRUM AS A SPHERE "
|
||||
" EACH LONGITUDE A FREQUENCY EACH LATITUDE A TIME ", "Q",
|
||||
BgKind::SphereWave},
|
||||
{"FULL", 22.0f, all(), SS::Rainbow,
|
||||
" EVERY BAND ALIVE NOW THE SPECTRUM IS COMPLETE "
|
||||
" FROM SUBSONIC TO ULTRASONIC ", "Q", BgKind::Voronoi},
|
||||
}};
|
||||
@@ -742,6 +756,9 @@ void ofApp::initDemos() {
|
||||
{"CRASH", 20.0f, all(), SS::Glitch,
|
||||
" KERNEL PANIC BUT THE BEAT GOES ON ", "Q",
|
||||
BgKind::PlasmaC64},
|
||||
{"OS/2 WARP", 20.0f, polSpe(), SS::Glitch,
|
||||
" OS/2 WARP THE BLUE SCREEN OF DESPAIR "
|
||||
" BUT THE WARP CONTINUES ", "Q", BgKind::ImgOS2},
|
||||
{"REBOOT", 18.0f, polSpe(), SS::Cascade,
|
||||
" SYSTEM REINITIALIZING NEW REALITY LOADING ", "Q",
|
||||
BgKind::Vortex},
|
||||
@@ -764,7 +781,10 @@ void ofApp::initDemos() {
|
||||
{"ENNEPER", 25.0f, polSpe(), SS::Mirror,
|
||||
" A MINIMAL SURFACE LEAST AREA POSSIBLE "
|
||||
" GREETINGS TO ASD AND CONSPIRACY ", "S", BgKind::Enneper},
|
||||
{"RETURN", 25.0f, starsWave(), SS::Mirror,
|
||||
{"APPLE", 18.0f, polSpe(), SS::Mirror,
|
||||
" THE APPLE RAINBOW 1977 - 1998 "
|
||||
" SIX BANDS OF GENTLE NOSTALGIA ", "J", BgKind::ImgApple},
|
||||
{"RETURN", 22.0f, starsWave(), SS::Mirror,
|
||||
" AND BACK TO THE STARS REMEMBER THIS QUIET "
|
||||
" YOU WERE HERE YOU LISTENED ", "J", BgKind::Starfield},
|
||||
}};
|
||||
@@ -789,7 +809,10 @@ void ofApp::initDemos() {
|
||||
" BURN THIS PLACE DOWN 180 BPM ETERNAL FLAME "
|
||||
" GREETINGS TO HARDCODE TITAN ANARCHY ", "T",
|
||||
BgKind::Fire},
|
||||
{"AFTER", 25.0f, polSpe(), SS::Mirror,
|
||||
{"WIN95", 18.0f, all(), SS::Glitch,
|
||||
" WINDOWS 95 START.WAV BRIAN ENO 6 SECONDS "
|
||||
" PLUG AND PRAY ", "Q", BgKind::ImgWin95},
|
||||
{"AFTER", 20.0f, polSpe(), SS::Mirror,
|
||||
" THE BEAT IS GONE THE WALLS STILL SHAKE "
|
||||
" YOUR HEART STILL THINKS IT IS RAVING ", "Q",
|
||||
BgKind::PlasmaFbm},
|
||||
@@ -910,7 +933,10 @@ void ofApp::initDemos() {
|
||||
" THE FRACTAL HAS NO END "
|
||||
" GREETINGS TO INIGO QUILEZ AND KNIGHTY ", "L",
|
||||
BgKind::Kifs},
|
||||
{"COLLAPSE", 20.0f, polSpe(), SS::Mirror,
|
||||
{"WIN 1.0", 18.0f, polSpe(), SS::Bouncy,
|
||||
" WINDOWS 1.0 1985 LEAKED PIXELS BLOCK BY BLOCK "
|
||||
" GEOMETRY BEFORE GUI ", "O", BgKind::ImgWin1},
|
||||
{"COLLAPSE", 18.0f, polSpe(), SS::Mirror,
|
||||
" AND THE FUNCTION RESETS BACK TO X = 0 Y = 0 ", "J",
|
||||
BgKind::Starfield},
|
||||
}};
|
||||
@@ -960,7 +986,10 @@ void ofApp::initDemos() {
|
||||
{"VAPOR ROAD", 25.0f, all(), SS::Mirror,
|
||||
" THE ROAD BECOMES MEMORY "
|
||||
" GHOSTS OF FUTURES PAST ", "R", BgKind::PlasmaFbm},
|
||||
{"HORIZON", 20.0f, starsWave(), SS::Mirror,
|
||||
{"WIN 3.11", 18.0f, all(), SS::Glitch,
|
||||
" WINDOWS 3.11 NT THE PRE-START-MENU AGE "
|
||||
" PROGRAM MANAGER RULES ", "R", BgKind::ImgWin311},
|
||||
{"HORIZON", 18.0f, starsWave(), SS::Mirror,
|
||||
" AND THE ENGINE FADES INTO THE NIGHT "
|
||||
" UNTIL TOMORROW WE RIDE AGAIN ", "U",
|
||||
BgKind::Starfield},
|
||||
@@ -985,7 +1014,13 @@ void ofApp::initDemos() {
|
||||
{"CASCADE", 25.0f, all(), SS::Wavy3D,
|
||||
" EUCLIDEAN SPACE COLLAPSES THE CUBES SCATTER ", "Q",
|
||||
BgKind::TunnelCubes},
|
||||
{"ZERO", 20.0f, polSpe(), SS::Mirror,
|
||||
{"ZX", 20.0f, polSpe(), SS::Rainbow,
|
||||
" SINCLAIR ZX SPECTRUM 7 ATTRIBUTES OF GLORY "
|
||||
" UK SCENE FOREVER ", "Q", BgKind::ImgZX},
|
||||
{"IRIX", 20.0f, polSpe(), SS::Chrome,
|
||||
" SGI IRIX WORKSTATION 9 SQUARES OF POWER "
|
||||
" JURASSIC PARK MAGIC ", "V", BgKind::ImgIrix},
|
||||
{"ZERO", 18.0f, polSpe(), SS::Mirror,
|
||||
" BACK TO ORIGIN DIMENSION COLLAPSED ", "J",
|
||||
BgKind::Starfield},
|
||||
}};
|
||||
|
||||
@@ -97,11 +97,12 @@ void SphereWaveVis::draw(int x, int y, int w, int h) {
|
||||
ofEnableDepthTest();
|
||||
ofEnableLighting();
|
||||
|
||||
// Camera orbite
|
||||
const float orbitR = 7.0f;
|
||||
const float orbitA = t_ * 0.25f;
|
||||
// Camera orbite plus dramatique : varie le rayon avec kick, hauteur
|
||||
// suit treble, angle accéléré par bpm.
|
||||
const float orbitR = 7.0f - kick_ * 2.0f;
|
||||
const float orbitA = t_ * (0.35f + bpm_ * 0.0008f);
|
||||
camera_.setPosition(std::cos(orbitA) * orbitR,
|
||||
std::sin(t_ * 0.18f) * 2.0f,
|
||||
std::sin(t_ * 0.27f) * (2.0f + treble_ * 2.0f),
|
||||
std::sin(orbitA) * orbitR);
|
||||
camera_.lookAt(ofVec3f(0, 0, 0));
|
||||
light_.setPosition(std::sin(t_ * 0.7f) * 5.0f,
|
||||
@@ -110,7 +111,7 @@ void SphereWaveVis::draw(int x, int y, int w, int h) {
|
||||
light_.enable();
|
||||
camera_.begin(ofRectangle(0, 0, w, h));
|
||||
|
||||
// Couleur cycle hue + audio
|
||||
// Sphère solide centrale — couleur cycle hue + audio
|
||||
ofColor col;
|
||||
col.setHsb(static_cast<int>(std::fmod(t_ * 25.0f, 255.0f)),
|
||||
180,
|
||||
@@ -118,17 +119,44 @@ void SphereWaveVis::draw(int x, int y, int w, int h) {
|
||||
material_.setDiffuseColor(col);
|
||||
material_.setSpecularColor(ofFloatColor(1.0f, 0.9f, 0.8f));
|
||||
material_.setShininess(48.0f);
|
||||
|
||||
// Solid pass
|
||||
ofSetColor(col);
|
||||
material_.begin();
|
||||
sphere_.drawFaces();
|
||||
material_.end();
|
||||
|
||||
// Wireframe par-dessus
|
||||
ofSetColor(255, 240, 200, 140);
|
||||
// Wireframe par-dessus (intérieur)
|
||||
ofSetColor(255, 240, 200, 180);
|
||||
sphere_.drawWireframe();
|
||||
|
||||
// Sphère wireframe EXTÉRIEURE concentrique — scaled 1.4x avec rotation
|
||||
// inversée pour un effet de coque tournante
|
||||
ofPushMatrix();
|
||||
ofRotateRad(-t_ * 0.4f, 0, 1, 0);
|
||||
ofRotateRad(t_ * 0.25f, 1, 0, 0);
|
||||
ofScale(1.4f + bass_ * 0.2f);
|
||||
ofSetColor(120, 220, 255, 80);
|
||||
sphere_.drawWireframe();
|
||||
ofPopMatrix();
|
||||
|
||||
// Sphère wireframe INTÉRIEURE — scaled 0.6x pulsée par kick
|
||||
ofPushMatrix();
|
||||
ofRotateRad(t_ * 0.6f, 0, 1, 0);
|
||||
ofRotateRad(-t_ * 0.4f, 1, 0, 0);
|
||||
ofScale(0.6f + kick_ * 0.3f);
|
||||
ofSetColor(255, 100, 200, 200);
|
||||
sphere_.drawWireframe();
|
||||
ofPopMatrix();
|
||||
|
||||
// Pôles : 2 sphères wireframe small en haut/bas pour repère
|
||||
for (float py : {-3.5f, 3.5f}) {
|
||||
ofPushMatrix();
|
||||
ofTranslate(0, py, 0);
|
||||
ofScale(0.3f + treble_ * 0.2f);
|
||||
ofSetColor(255, 220, 100, 140);
|
||||
sphere_.drawWireframe();
|
||||
ofPopMatrix();
|
||||
}
|
||||
|
||||
camera_.end();
|
||||
light_.disable();
|
||||
ofDisableLighting();
|
||||
|
||||
Reference in New Issue
Block a user