2017-05-28 18 views
1

時間が経つにつれて変化する処理のランダムな「曇った」背景を作成しようとしています。これは、ピクセルのグループに対して輝度をランダムに生成することによって行われます。残念ながら、私はそれを一度だけレンダリングすることができます。コードはノイズ機能付き画面の変更

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(); 
} 

答えて

1

まずオフを下回っている、あなたはdraw()機能毎秒60回の呼び出しから処理を防ぐnoLoop()機能を呼び出しています。

でも、それを取り除いても、フレームごとに同じことが表示されます。これは、フレームごとに正確な同じパラメータをnoise()関数に渡すためです。

あなたの質問に対する答えは、時間の経過とともにnoise()関数に渡すパラメータを変更する必要があるということです。どのようにするかは、あなたが何をしたいかによって決まります。特定の方向に全体を移動することも、内部オフセットを変更することもできます。あなたにできることはたくさんありますが、基本的な答えは、各フレームごとに異なる値を渡す必要があるということです。

私が話しているものを実証するための最も簡単な方法は、draw()機能のうち、とスケッチの一番上に次の行を移動することです:今

float xoff = 0.0; 

オフセットフレームの間に保持されますと、すべてが上に移動するのを見るでしょう。あなたはあなたが行っている正確な効果を得るためにそれを再生する必要があります。

+0

ありがとう、これは非常に役に立ちました –

関連する問題