Skip to main content

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

파티클 시스템

  • 1982년 루카스 필름의 연구원 윌리엄 T 리브는 '스타트랙2: 칸의 분노' 영화에서 제네시스라는 어뢰 형태의 장치를 발사하면 황폐한 행성을 사람이 거주할 수 있는 행성으로 만들어주는 테라포밍 장면을 컴퓨터 그래픽의 파티클 시스템 기술로 구현했습니다.

    파티클 시스템이란, 수많은 입자들이 모여 형체가 뚜렷하지 않은 물체를 구현하는 방법입니다. 시간이 경과하면 파티클 시스템 내부에서 새로운 입자가 생성되기도 하고 움직이며 변화하고 소멸하기도 합니다.

    by 윌리엄 리브스(William Reeves), '퍼지 객체 클래스 모델링을 위한 파티클 시스템', 그래픽2:2의 ACM 트랜잭션, 1983년 4월, 92쪽

  • 1980년 대 초부터 불꽃, 연기, 폭포, 안개, 잔디, 거품 등 규칙적이지 않은 자연 현상을 구현하고자 수많은 비디오 게임, 애니메이션, 디지털 예술 작품 등에서 파티클 시스템을 사용했습니다.
  • 이번 장은 파티클 시스템을 코드로 구현하기 위한 방법을 중심으로 살펴봅니다.

파티클 시스템이 중요한 이유

  • 많은 개체들을 배열로 다루는 것 이상의 시스템을 구축해 봅시다.
  • 먼저, 개체 수를 유연하게 받아들여야 합니다.
  • 둘째, 좀 더 정교하고 객체 지향적인 방식을 취해야 합니다.
    • 단일 입자를 설명하는 클래스 외에도 전체 입자 모음, 즉 입자 시스템 자체를 설명하는 클래스를 작성할 수 있습니다.
    let system;
    function setup() {
    createCanvas(640, 360);
    system = new ParticleSystem();
    }
    function draw() {
    background(255);
    system.run();
    }
    • 위 코드에서는 하나의 입자를 바로 나타내는 대신, ParticleSystem 내부에 많은 입자 객체를 다루는 내용이 숨겨져 있을 것입니다.
    • 또한 상속과 다형성이라는 2가지 OOP 개념도 포함시킬 것입니다.
      • 상속과 다형성을 통해 하나의 배열에도 다양한 형태의 자료형을 넣을 수 있습니다.
      • 이를 사용하면 하나의 파티클 시스템에서 여러 종류의 입자가 운동하게 만들 수 있습니다.