2017-05-28 6 views
1

So versuche ich einen randomisierten "bewölkten" Hintergrund mit Verarbeitung, die sich im Laufe der Zeit ändert erstellen. Dies geschieht durch zufälliges Erzeugen einer Helligkeit für eine Gruppe von Pixeln. Leider kann ich es nur einmal und dann nicht wieder rendern lassen. Code ist unterVerarbeitung ändern Bildschirm mit Rauschfunktion

float increment = 0.02; 

void setup() { 
    size(800,200); 
    noLoop(); 
} 

void draw() { 
    background(0); 

    // Optional: adjust noise detail here 
    // noiseDetail(8,0.65f); 

    loadPixels(); 

    float xoff = 0.0; // Start xoff at 0 

    // For every x,y coordinate in a 2D space, calculate a noise value and produce a brightness value 
    for (int x = 0; x < width; x++) { 
    xoff += increment; // Increment xoff 
    float yoff = 0.0; // For every xoff, start yoff at 0 
    for (int y = 0; y < height; y++) { 
     yoff += increment; // Increment yoff 

     // Calculate noise and scale by 255 
     float bright = noise(xoff,yoff)*255; 

     // Try using this line instead 
     //float bright = random(0,255); 

     // Set each pixel onscreen to a grayscale value 
     pixels[x+y*width] = color(bright); 
    } 
    } 

    updatePixels(); 
} 

Antwort

1

Zunächst einmal, Sie zum noLoop() Funktion aufrufen, die Verarbeitung verhindert den Aufruf der Funktion draw() 60 mal pro Sekunde.

Aber selbst nachdem Sie das loswerden, werden Sie immer noch dasselbe Bild sehen. Das liegt daran, dass Sie genau die gleichen Parameter in die noise() Funktion jedes Frames übergeben.

Also, die kurze Antwort auf Ihre Frage ist, dass Sie die Parameter ändern müssen, die Sie im Laufe der Zeit in die noise() Funktion übergeben. Wie Sie das tun, hängt davon ab, was genau Sie tun möchten. Sie könnten das Ganze einfach in eine bestimmte Richtung verschieben oder die internen Offsets ändern. Es gibt eine Menge verschiedener Dinge, die Sie tun können, aber die grundlegende Antwort ist, dass Sie in jedem Rahmen verschiedene Werte übergeben müssen.

Der schnellste Weg zu zeigen, was ich rede ist diese Zeile aus der draw() Funktion und an die Spitze der Skizze zu bewegen:

float xoff = 0.0; 

die zwischen Rahmen bewahrt wird nun versetzt, und Du wirst sehen, wie die ganze Sache voranschreitet. Sie müssen damit spielen, um genau den Effekt zu erzielen, den Sie anstreben.

+0

Vielen Dank, das war sehr hilfreich –

Verwandte Themen