CrescentCrescent
PostsTagsAbout

> Week 4. 'City Generator'

Crescent
City Generator의 모습
City Generator의 모습

Creative Algorithm: Generative Design System
Hannah Park, Chaewon Shin, Soyeon Kang

00. Inspiration

Procedural building generator, Blender

모델링 된 파란색 집들의 모습
모델링 된 파란색 집들의 모습
블랜더로 만든 다양한 집들의 모습
블랜더로 만든 다양한 집들의 모습

01. Building

각자 만든 빌딩들의 모습. 왼쪽은 네모난 빌딩에 창문이 있고, 가운데는 회전하는 층간, 오른쪽은 굴곡이 지고 첨탑이 있는 빌딩
각자 만든 빌딩들의 모습. 왼쪽은 네모난 빌딩에 창문이 있고, 가운데는 회전하는 층간, 오른쪽은 굴곡이 지고 첨탑이 있는 빌딩

02. Falling Snow

프로세싱으로 만든 눈 내리는 모습
프로세싱으로 만든 눈 내리는 모습
Snow.pde
ArrayList<Snow> snows = new ArrayList<Snow>();
int MAX_STAR_SIZE = 10;
 
class Snow {
  PVector position;
  float size;
  color c;
 
  Snow() {
    this.position = new PVector(random(width*2)-width, random(height)-height/2, random(width*2)-width);
    this.size = random(MAX_STAR_SIZE);
    this.c = color((255/MAX_STAR_SIZE) * size);
  }
 
  void show() {
    stroke(this.c);
    strokeWeight(this.size);
    point(this.position.x, this.position.y, this.position.z);
  }
}
/CityGenerator.pde
void setup() {
  size(1000, 800, P3D);
  smooth(16);
  ortho();
 
  for (int i=0; i<snow_cnt; i++) {
    Snow snow = new Snow();
    snows.add(snow);
  }
}
/Snow.pde
int f = 0;
int age = 30;
void drawSnow() {
  f++;
  if (snow_cnt_befo != snow_cnt) {
    snow_cnt_befo = snow_cnt;
    snows.clear();
    
    for (int i=0; i<snow_cnt; i++) {
      Snow snow = new Snow();
      snows.add(snow);
    }
  }
  
  for (Snow snow: snows) {
    snow.show();
    if (f % age == 0) {
      snow.position.x += random(10)-5;
      snow.position.y += random(10);
      snow.position.z += random(10)-5;
      
      if (snow.position.y > height/2) {
        snow.position.y = -height/2;
      }
      f = 0;
    }
  }
}

03. Slider

슬라이더를 이용해서 변화하는 빌딩의 모습
슬라이더를 이용해서 변화하는 빌딩의 모습

04. 후기