この記事を書いた人

- クリエイティブコーディングで制作した作品と、上達のためにやったこと・学習過程を発信
- コンセプトは「クリエイティブコーディング1万時間の歩き方」
- 2024年にProcessingの構文のアウトプットを終え、2025年から作品制作開始(クリエイティブコーディングで作成した作品集)
目次
作品の画像とコード

アニメーション。
PImage[] imgs = new PImage[4];
float pixelSize = 50; // 初期ピクセルサイズ
float growthRate = 7; // サイズ変更の速さ
// ランダムな位置とサイズを格納する配列
int[] offsetsX = new int[4];
int[] offsetsY = new int[4];
int[] widths = new int[4];
int[] heights = new int[4];
void setup() {
size(1080, 1080);
frameRate(60);
smooth();
// 画像をロード
imgs[0] = loadImage("1.jpg");
imgs[1] = loadImage("2.jpg");
imgs[2] = loadImage("3.jpg");
imgs[3] = loadImage("4.jpg");
// ランダムな位置とサイズを生成
for (int i = 0; i < 4; i++) {
widths[i] = int(random(300, width)); // 幅を画面に合わせた大きさでランダムに
heights[i] = int(random(300, height)); // 高さを画面に合わせた大きさでランダムに
offsetsX[i] = int(random(0, width - widths[i])); // X位置をランダムに
offsetsY[i] = int(random(0, height - heights[i])); // Y位置をランダムに
}
}
void draw() {
background(0);
// 4つのランダムな画像を描画
for (int i = 0; i < 4; i++) {
drawImageAt(imgs[i], offsetsX[i], offsetsY[i], widths[i], heights[i]);
}
// ピクセルサイズを変更
pixelSize += growthRate;
if (pixelSize >= 50 || pixelSize <= 10) {
growthRate *= -1; // 逆方向へ切り替え
// 新しいランダム位置とサイズを設定
for (int i = 0; i < 4; i++) {
widths[i] = int(random(300, width)); // 大きなサイズ範囲に調整
heights[i] = int(random(300, height));
offsetsX[i] = int(random(0, width - widths[i]));
offsetsY[i] = int(random(0, height - heights[i]));
}
}
}
void drawImageAt(PImage img, int offsetX, int offsetY, int imgWidth, int imgHeight) {
PImage resizedImg = img.copy();
resizedImg.resize(imgWidth, imgHeight); // ランダムサイズにリサイズ
for (int y = 0; y < imgHeight; y += int(pixelSize)) {
for (int x = 0; x < imgWidth; x += int(pixelSize)) {
color c = resizedImg.get(x, y); // 元画像から色を取得
fill(c);
noStroke();
rect(offsetX + x, offsetY + y, pixelSize, pixelSize); // ピクセル化して描画
}
}
}

それでは今日もレッツワクワクコーディング。