p5_underground

所謂クリエイティブコーディングとか音楽とかをぼちぼち楽しんでいきます

20180329_ノイズシーケンス

通称「ジェネラティブアート本」におけるノイズの扱いをまとめてみる。

 

まず予測不可能な形状を生み出すことの面白さが語られて、それをコンピュータで作り出す方法として、random()→noise()が導入される。まずは線をえがく方法として。次に、サインカーブや螺旋との組み合わせを例に、自分なりのアイデアにノイズを用いるという考え方を深める。さらにもっと面白くするには、というので次元を加える。2次元のノイズをいくつかの表現方法で可視化する。そこに時間という次元を加え、アニメーションにする。

このあたりから最近やった内容なので詳しく。アニメーションで何を動かすかというと、それまでは2次元のノイズ平面をforで走査して値を取得し、描画平面に投射していたのだが、その走査1ステップよりも小さい幅で、時間経過によってノイズ平面上を動く。これによって雲が流れているような表現ができたりする。

しかしまだこれでは1方向に流れているだけなので面白くない。そこで、毎時間ステップにおけるノイズ平面上の移動幅に、ノイズによる変動を加える。このノイズの入力値自体は、毎時間ステップで一定量増加させる。

これによって、かなり複雑で自然現象っぽい表現が可能になる。(急にあいまいな文章表現なのは、いまいち見ても何が起こっているのかよくわからなくなってきたから。)雲でいうと、不規則に流れつつ、雲の形自体も変化しているような。

この手法について、「2つの(1次元の)ノイズシーケンスをカメラ位置に与えるのに使った」と表現されている。さらに、コード全体におけるノイズシーケンスについて「結びつけることで2次元のノイズ値を得るためのxnoiseとynoise、そして動きの1次元的な方向性を与えるxstartNoiseとystartNoiseの4つを使っています」とある。

このあたりの表現がわかるようでわからないので今考えている。変数名にnoiseと入ってる変数は、ノイズの入力値。xnoiseとynoiseは2次元のノイズって言ってる通りnoise(xnoise, ynoise)の形で使って、この出力値はそれぞれの座標における描画パラメータ(色とか)に用いる。xstartNoiseとystartNoiseはnoise(xstartNoise)の形で使って、出力値はノイズ平面上の移動幅に用いる。

つまりノイズシーケンスというのは、規則的に変化するノイズの種(入力値)のことということでいいのかな。というか、そのノイズの種を変化させるためのループのことか。別のところでfor文自体をシーケンスと言ってるような記述があった。

表現をどうこう言ってるのは、自分で好きなタイミングで使えるテクニックとして体系化しておきたいから。

 

つまりは、何かに予測不可能な揺らぎを与えたいとき(空間的、時間的に)、対象とする次元の変数についてのノイズの種を用意してやって、それをノイズに放り込んで出力させればいいということか。わかったかもしれない。

うーん、こう一般的に書いてみるとかなりなんでも一般的に使えそうなテクニックに思える。

 

以上。まとめると言ったもののまだ途中です。書こうと思ったら書くと思います。