6. 크리에이티브 코딩 심화
여기서는 다양한 창의적 기법과 원리로 프로세싱을 활용한 복잡한 작품을 만들 수 있습니다.
6.1. 시뮬레이션 및 에이전트 기반 모델링
시뮬레이션 및 에이전트 기반 모델링에서는 개체(에이전트)들이 상호작용하는 시스템을 구현하여 현실 세계의 현상을 모방하거나 예측하는 방법을 배웁니다. 예를 들어, 복잡한 군집 행동이나 환경에 적응하는 시스템을 모델링할 수 있습니다. 에이전트 기반 시뮬레이션은 생물학, 경제학, 사회학 등 다양한 분야에서 응용되며, 예술 작품에서도 독특한 시각적 효과를 만들어 낼 수 있습니다.
let agents = [];
function setup() {
createCanvas(640, 480);
for (let i = 0; i < 100; i++) {
agents.push(new Agent(random(width), random(height)));
}
}
function draw() {
background(255);
for (let i = 0; i < agents.length; i++) {
agents[i].update();
agents[i].display();
}
}
class Agent {
constructor(x, y) {
this.pos = createVector(x, y);
this.vel = createVector(random(-1, 1), random(-1, 1));
}
update() {
this.pos.add(this.vel);
this.pos.x = (this.pos.x + width) % width;
this.pos.y = (this.pos.y + height) % height;
}
display() {
ellipse(this.pos.x, this.pos.y, 5, 5);
}
}
위 코드는 100개의 에이전트가 화면에서 움직이는 모습을 시뮬레이션한 예제입니다. 각 에이전트는 초기 위치와 속도를 무작위로 설정하며, 화면 밖으로 나갈 경우 반대편에서 다시 나타납니다.
6.2. 유전 알고리즘 및 스웜 인텔리전스
유전 알고리즘 및 스웜 인텔리전스에서는 자연의 진화 과정에서 영감을 받아 최적화 문제를 해결하는 알고리즘을 학습합니다. 유전 알고리즘은 해의 집합에서 자연선택, 교차, 돌연변이 등의 연산을 통해 최적해를 찾아내는 방법을 사용하며, 스웜 인텔리전스는 군집 행동을 모델링하여 최적화 문제를 해결하는 방법을 배웁니다.
6.3. 예술적 창작물에서의 패턴 및 구조
이 장에서는 시각적 패턴과 구조를 창조적으로 활용하는 방법을 배웁니다. 프랙탈, 노이즈, 그리드, 반복 등 다양한 패턴 생성 방법을 이용해 독특한 시각적 효과를 만들어낼 수 있습니다. 또한, 구조적인 요소를 활용하여 작품의 전체적인 형태를 조직하고 균형을 맞출 수 있습니다.
6.4. 프로세싱을 이용한 인터랙티브 설치 작품
이 장에서는 프로세싱의 다양한 기능을 활용하여 관람자와 상호작용하는 설치 작품을 만드는 방법을 배웁니다. 센서를 통해 관람자의 움직임이나 소리 등을 입력으로 받아 작품의 시각적 표현이나 행동을 변화시키는 등의 기법을 익힙니다.
예를 들어, 마이크를 통해 소리의 크기에 따라 원이 확장되는 인터랙티브 설치 작품을 만들 수 있습니다.
let mic;
function setup() {
createCanvas(640, 480);
mic = new p5.AudioIn();
mic.start();
}
function draw() {
background(255);
let vol = mic.getLevel();
let diameter = map(vol, 0, 1, 50, 400);
noStroke();
fill(0, 0, 255);
ellipse(width / 2, height / 2, diameter, diameter);
}
위 코드는 마이크의 소리 크기에 따라 원의 크기가 변화하는 인터랙티브 작품을 만드는 예제입니다. 마이크의 입력을 받아 원의 지름을 계산하고, 원을 화면 가운데에 그립니다.
이렇게 각각의 단원에서 배운 내용을 종합하여 창의적인 코딩 실력을 향상시킬 수 있습니다. 프로세싱을 활용한 독특한 시각적 표현과 상호작용을 구현하여 관람자와 소통하는 작품을 만들어보세요.
'GD's IT Lectures : 기초부터 시리즈 > 프로세싱(Processing) 기초부터 ~' 카테고리의 다른 글
[프로세싱(Processing) : 고급] 프로젝트 관리 및 협업 (0) | 2023.05.01 |
---|---|
[프로세싱(Processing) : 고급] 프로세싱과 웹 통합 (0) | 2023.05.01 |
[프로세싱(Processing) : 고급] 기계 학습 및 인공지능 (0) | 2023.05.01 |
[프로세싱(Processing) : 고급] GPGPU 프로그래밍 (0) | 2023.05.01 |
[프로세싱(Processing) : 고급] 컴퓨터 비전 (0) | 2023.05.01 |
댓글