a-13 課題制作のヒント
- 2010年7月12日 14:40
- 2010-a
画像を指定した範囲でランダムに配置する
角度、大きさ、座標、色をランダムに指定する。
用意したハートの画像(ドロップシャドゥをかけ背景は透過処理とした)
以下、複数の方法を提示する。どれが正解ということはなく、自身の作品に最も適した方法を選択する。
関数を使わずに
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
//ハートをランダムに表示
for (int i = 0; i < 50; i++) {
pushMatrix();
translate(random(width), random(100, 200));
scale(random(0.2, 0.6));
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
popMatrix();
}
}
関数を使って1(ハート1つのランダム描画を関数とする)
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
//ハートをランダムに表示
for (int i = 0; i < 100; i++) {
pushMatrix();
transformHeart(random(width), random(100, 200));
popMatrix();
}
}
//ハートをランダムに回転、縮小、色づけする関数(ハートの座標を引数にする)
void transformHeart(float x, float y) {
translate(x, y);
scale(random(0.2, 0.6));
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
}
関数を使って2(ハート複数のランダム描画を関数とする)
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
randomHeart(100); //ハートをランダムに「100個」表示
}
//ハートをランダムに表示する関数(ハートの個数を引数にする)
void randomHeart(int num) {
for (int i = 0; i < num; i++) {
pushMatrix();
translate(random(width), random(100, 200));
scale(random(0.2, 0.6));
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
popMatrix();
}
}
画像を規則的に配置する(大きさや角度はランダムに設定する)
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
//ハートを規則的に表示
int intervalNum = 50;
for (int j = 0; j < height; j += intervalNum) {
for (int i = 0; i < width; i += intervalNum) {
pushMatrix();
transformHeart(i + intervalNum/2, j + intervalNum/2);
popMatrix();
}
}
}
//ハートをランダムに回転、縮小、色づけする関数(ハートの座標を引数にする)
void transformHeart(float x, float y) {
translate(x, y);
scale(random(0.2, 0.6));
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
}
奥行き感を出す
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
//奥
for (int i = 0; i < 320; i++) {
pushMatrix();
transformHeart(random(width), random(80, 320), random(0.1, 0.2));
popMatrix();
}
filter(BLUR, 2);
//中間
for (int i = 0; i < 240; i++) {
pushMatrix();
transformHeart(random(width), random(100, 300), random(0.2, 0.4));
popMatrix();
}
filter(BLUR, 1);
//手前
for (int i = 0; i < 40; i++) {
pushMatrix();
transformHeart(random(width), random(160, 240), random(0.4, 0.6));
popMatrix();
}
}
//ハートをランダムに回転、縮小、色づけする関数(ハートの座標, 大きさを引数にする)
void transformHeart(float x, float y, float s) {
translate(x, y);
scale(s);
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
}
特定の形の範囲で、画像をランダムに配置する
PImage heart;
void setup() {
size(500, 500);
colorMode(HSB);
background(0);
smooth();
heart = loadImage("heart.png"); //ハート画像の読み込み
imageMode(CENTER);
noLoop();
}
void draw() {
//画面の真ん中に大きくハートを描く
pushMatrix();
translate(width/2, height/2);
scale(3.0);
image(heart, 0, 0);
filter(BLUR, 2); //少しぼかして境界の色の変化を緩やかにする
popMatrix();
//画面の色情報を読み込む(ハートの形を覚える)
loadPixels();
//画面をリセット(黒く塗りつぶす)
background(0);
//ランダムに点を選び色情報を調べ、明るい色ならば(ハートの形の内側ならば)、その場所にハートを描く
for (int i = 0; i < 5000 ; i++) {
int x = int(random(width));
int y = int(random(height));
int pos = y*width + x;
color c = pixels[pos]; //loadPixels()で覚えた画面(ハートの形が描かれた画面)の色情報を代入する
if(brightness(c) > 204) {
pushMatrix();
float heartScale = map(brightness(c), 204, 255, 0.1, 0.3); //点の明るさに応じてハートの大きさを設定(境界付近は小さくなる)
transformHeart(x, y, heartScale);
popMatrix();
}
}
}
//ハートをランダムに回転、縮小、色づけする関数(ハートの座標, 大きさを引数にする)
void transformHeart(float x, float y, float s) {
translate(x, y);
scale(s);
rotate(random(-PI/6, PI/6));
tint(random(0,10), random(51, 204), 255);
image(heart, 0, 0);
}
- カテゴリ
-
- 1a
- 1b
- 2010-a (13)
- 2010-b (11)
- 2011-a (10)
- 2011-b (9)
- android (1)
- libraries
- processing.js (1)
- tools (2)
- トピックス (1)
- ノート
- アーカイブ
- 購読
- Recommends
-
- Powerd By




