2009/01/05

このエントリをlivedoorクリップに追加 このエントリーをdel.icio.usに追加 このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

ANCT

学校で「ポスターとかパンフレットとかを作ろう」みたいな活動があって、僕も一応後期から参加することに・・・

初仕事は「平成21年度学生募集のポスターの大体のアイデアを形にすること」だそうです。
つまりそれぞれメンバーが自分のデザインを持ち寄って、どれがいいかな〜とかこうしよ〜とか考えるために、とりあえず冬休みの間に作ってこいってことだろうと思います。

未だにメンバーはどういう人たちで何人いるのかとか全く分かってません。
どんな人がいるのかな?(笑

ってことで僕が何個か考えたもののうちの一つで使ったロゴ。
ちなみに、ANCTってのはAkashi National College of Technology(=国立明石工業高等専門学校)の略です。

なんか赤っぽい色の四角形がいっぱい集まって文字を作っていますね。
それぞれの四角形をよく見て下さい。

実は、それぞれ写真です。

学校のホームページからパクった画像たちでANCTを表示させています。
これを作成するためにProcessingを使用しました。

Processingで初めての試み。
案外簡単にできて良かったです。
これがProcessingの凄いところかな?(笑

ソースコードを載せます。
PImage LOGO;
PImage[] photo = new PImage[16];

float maxScale = 0.4;
float minScale = 0.1;
float G = 30;

float Alpha = 80;

void setup(){
LOGO = loadImage("ANCT-10.png");
for(int i=0; i<16; i++){
int j = i+1;
photo[i] = loadImage("photos-"+j+".png");
}
size(LOGO.width,LOGO.height);

colorMode(HSB,100);
background(99);
smooth();

LOGO.loadPixels();

}

void draw(){

imageMode(CENTER);

loadPixels();

for(int y=0; y<height; y+= G){
for(int x=0; x<width; x+= G){
int pos = (y*width)+x;
color c = LOGO.pixels[pos];
float b = brightness(c);

if(b<20){
float imgScale = random(minScale,maxScale);
int index = int(random(0,15));
tint(random(0,20),99,99,80);
image(photo[index],x,y,
photo[index].width*imgScale,photo[index].height*imgScale);
}
}
}

noLoop();
}

とりあえず簡単に説明すると、
LOGOというのはもともとのANCTという文字の大きな画像のことです。setup関数の中でANCT-10.pngを読み込んでいます。

photosというイメージオブジェクトの、16個要素を持つ配列を作っています。
この一つ一つにphotos-1.pngからphotos-16.pngまでを入れます。
それぞれの画像はロゴを形作る材料となります。

あとは、ピクセルをどんどん進んでいって明度が20%以下の時にランダムな大きさで配列photosのうちからランダムに写真を表示させています。

noLoop();を忘れると悲惨な結果になります。

0 コメント:

コメントを投稿

Banner

Banner
このブログにリンクする際はこのバナーをお使いください