おはよう。@bioerrorlogです。
ProcessingによるGenerative Art作品
3作目を記録します。
自作品まとめはこちら: www.bioerrorlog.work
Output
フル解像度/その他出力パターンはこちら:
Generative_3 - BioErrorLog - pixiv
Material
使用言語: Processing 3.5.3
Processingというプログラミング言語に聞き覚えがない、という方は是非こちらをご参考ください:
www.bioerrorlog.work
Source Code
GitHubはこちら
float _xStart; float _xNoise, _yNoise; float _radius; float _ang; float _centX, _centY; void setup(){ size(1920,1080); // 壁紙サイズ background(255); // 255: 白 0にすれば黒 smooth(); _xStart = random(10); _xNoise = _xStart; _yNoise = random(10); _radius = random(1); _ang = random(10); _centX = width /2; _centY = height /2; } void drawPoint(float x, float y, float noiseFactor){ /* x, yを中心座標としてグレーの円を描く noiseFactorに渡すnoise関数で各要素に揺らぎを与える */ pushMatrix(); translate(x, y); rotate(noiseFactor * radians(360*4)); float edgeSize = noiseFactor * 500; float grey = 50 + (noiseFactor * 120); float alpha = 100 + (noiseFactor * 120); noStroke(); fill(grey, alpha); ellipse(0,0, edgeSize, edgeSize); popMatrix(); } void draw(){ _yNoise += 0.01; _xNoise += 0.01; _ang += 0.01; _radius += 1; float rad = radians(noise(_ang)); drawPoint(_centX/2 + cos(rad) * _radius, _centY, noise(_xNoise,_yNoise)); // noise()を二次元にしたことに特に理由はない } void keyPressed(){ /* ENTERキー押下: 画像を保存する BACKSPACEキー押下: モデルをリセットする */ if (keyCode == ENTER){ saveFrame("generative_3_####.png"); } if (keyCode == BACKSPACE){ setup(); } }
Discussion
丸を少しずつ右にずらしながら重ねたモデルです。
各要素の定義にnoise()を加えることで、丸の半径やグレーの色合い、フレームごとの丸の移動距離に揺らぎが生じます。
チェスのポーンの駒のような、滑らかながら唐突な変化を見せる表面のパターンが好きです。
See also
Reference
[普及版]ジェネラティブ・アート―Processingによる実践ガイド
- 作者:マット・ピアソン,Matt Pearson
- 発売日: 2014/11/21
- メディア: 単行本(ソフトカバー)