[Nature of Code] processing 9. 파티클 시스템

2023. 2. 7. 04:52
반응형

파티클 시스템이란

수많은 입자들이 모여 형체가 뚜렷하지 않은 물체를 구현하는 방법이다.

시간이 경과하면 파티클 시스템 내부에서 새로운 입자가 생성되기도 하고 움직이며 변화하고 소멸되기도 한다.

 

 

파티클 시스템을 사용하는 이유

자연 현상을 프로그램으로 옮기는 행위를 하고 있다면, 많은 물체들이 함께 구성된 체계를 다뤄야 하는 경우가 있다

(ex. 튕기는 공, 군집을 이루는 새, 진화하는 생태계 등)

 

 

예제 4-1. 입자 하나

Particle p;

void setup(){
  size(640, 320);
  p = new Particle(new PVector(width/2, 10));
}

void draw(){
  background(177);
  
  //입자 하나를 움직이고 출력
  p.run();
  
  if(p.isDead()){
    println("Particle dead!");
  }
}

class Particle {
  PVector location;
  PVector velocity;
  PVector acceleration;
  float lifespan;
  
  Particle(PVector l){
    
    //예제의 재미를 위해 속도와 가속도를 초기화함
    acceleration = new PVector(0, 0.05);
    velocity = new PVector(random(-1,1), random(-2,0));
    
    location = l.get();
    lifespan = 255.0;
  }
  
  //run 함수를 호출하면 update와 display 함수가 함께 호출됨
  void run(){
    update();
    display();
  }
  
  void update(){
    velocity.add(acceleration);
    location.add(velocity);
    lifespan -= 2.0;
  }
  
  void display(){
    stroke(0, lifespan);
    fill(0, lifespan);
    ellipse(location.x, location.y, 8, 8);
  }
  
  boolean isDead(){
    if(lifespan < 0.0){
      return true;
    } else {
      return false;
    }
  }
}

 

결과물

 

 

 

반응형

BELATED ARTICLES

more