본문 바로가기
GD's IT Lectures : 기초부터 시리즈/프로세싱(Processing) 기초부터 ~

[프로세싱(Processing) : 중급] 애니메이션과 입체 공간

by GDNGY 2023. 5. 1.

3. 애니메이션과 입체 공간

이 강의 자료에서는 프로세싱을 사용한 애니메이션과 입체 공간에 대한 중급 지식을 다룹니다. 여기에서 배울 내용은 프레임 기반 애니메이션, 키 프레임 애니메이션, 입체 공간과 3D 그래픽, 그리고 3D 모델 및 텍스처 맵핑입니다. 이를 통해 동적이고 입체적인 시각적 표현을 구현할 수 있습니다.

 

3.1. 프레임 기반 애니메이션

프레임 기반 애니메이션은 프레임 단위로 이미지를 업데이트하여 움직임을 표현하는 방식입니다. 프로세싱에서는 draw() 함수를 사용하여 프레임 간의 차이를 계산하고 업데이트합니다.

 

float x = 0;

void setup() {
  size(640, 360);
}

void draw() {
  background(255);
  x += 1;
  if (x > width) {
    x = 0;
  }
  ellipse(x, height / 2, 20, 20);
}

 

3.2. 키 프레임 애니메이션

키 프레임 애니메이션은 두 개 이상의 키 프레임(주요한 상태)을 정의한 후, 이들 사이의 중간 상태를 자동으로 계산하여 움직임을 표현하는 방식입니다. 프로세싱에서는 lerp() 함수를 사용하여 키 프레임 사이의 값을 보간할 수 있습니다.

 

float startX, endX;
float step = 0.01;
float t = 0;

void setup() {
  size(640, 360);
  startX = 0;
  endX = width;
}

void draw() {
  background(255);
  float x = lerp(startX, endX, t);
  ellipse(x, height / 2, 20, 20);

  t += step;
  if (t > 1) {
    t = 0;
  }
}

 

3.3. 입체 공간과 3D 그래픽

프로세싱에서 3D 그래픽을 작업하려면 size() 함수의 세 번째 인수로 P3D를 지정해야 합니다. 이를 통해 3D 좌표계를 사용하여 입체 공간에서 도형을 그릴 수 있습니다.

 

void setup() {
  size(640, 360, P3D);
}

void draw() {
  background(255);
  translate(width / 2, height / 2);
  rotateX(radians(frameCount));
  rotateY(radians(frameCount));
  box(100);
}

 

3.4. 3D 모델 및 텍스처 맵핑

프로세싱에서는 loadShape() 함수를 사용하여외부 3D 모델을 불러올 수 있습니다. 일반적으로 OBJ, STL 등의 파일 형식을 지원합니다. 또한, loadImage() 함수를 사용하여 텍스처 이미지를 불러온 후, texture() 함수로 3D 모델에 맵핑할 수 있습니다.

 

PShape model;
PImage texture;

void setup() {
  size(640, 360, P3D);
  model = loadShape("your_model.obj");
  texture = loadImage("your_texture.png");
}

void draw() {
  background(255);
  translate(width / 2, height / 2);
  rotateX(radians(frameCount));
  rotateY(radians(frameCount));
  scale(100);
  texture(texture);
  shape(model);
}

 

이 강의 자료에서는 프로세싱을 사용한 애니메이션과 입체 공간에 대한 중급 지식을 다루었습니다. 프레임 기반 애니메이션, 키 프레임 애니메이션, 입체 공간에서의 3D 그래픽 작업, 그리고 3D 모델 및 텍스처 맵핑에 대해 배웠습니다. 이러한 지식을 바탕으로 동적이고 입체적인 시각적 표현을 구현할 수 있습니다. 이제 이러한 기법들을 활용하여 다양한 프로젝트를 진행해 보시기 바랍니다.

반응형

댓글