Processingでクレヨンスクラッチもどきをつくる
先日テレビでクレヨンスクラッチをやっていたので、processingで実装してみました。
実際のクレヨンスクラッチは、
1.適当に色つきクレヨンで塗る
2.その上から黒のクレヨンで全体をぬりつぶす
3.クギなどでひっかく
という手順ですが、
Processingでは、
0.「スケッチ」メニュー→ライブラリをインポート→「geomerative」を探す
1.マスクをつくる
2.マスクの中に位置・色ともにランダムに円を描く
という手順になります。
マスクは「geomerative」というライブラリを使いました。重いですが、現状マスクが使える+Illustratorで編集可能なPDFに書き出せるのはこの方法しかないので・・・
こちらはマスクをリング状にしたもの。
こちらはマスクを円形にしたもの。
import geomerative.*; void setup() { size(600,600,P2D); background(0); RG.init(this); noLoop(); } void draw() { //色クレヨンで描いた上から黒クレヨンを塗りつぶす background(0); //引っ掻く回数 for (int i=0; i<50; i++) { //マスクの形 makeCircle(int(random(width)),int(random(height)),int(random(10,200))); } } void makeCircle(int x, int y, int r) { //リング形のマスク、r-は太さ(ここだとstroke(10)と同じ)、引っ掻いた形 RShape mask = RShape.createRing(x, y, r,r-10); /* //円形のマスクにする場合は、createRingではなくcreateCircleを使う RShape mask = RShape.createCircle(x, y, r); */ //画面サイズの半分だとだいたい画面が埋め尽くされる for (int i=0; i<300; i++) { //色クレヨンの色 fill(random(255),random(255),random(255)); //色クレヨンで描いた柄 RShape strip = RShape.createCircle(random(width),random(height),random(10,200)); RShape masked = strip.intersection(mask); masked.setStroke(false); RG.shape(masked); } } //マウスを押すと再描画 void mousePressed() { redraw(); }