본문 바로가기

레퍼런스/고도엔진

고도엔진 튜토리얼 #23 파티클 시스템 (2D) (Particle Systems (2D))

소개(Intro)


간단한 (하지만 대부분의 사용에 충분히 유연한) 파티클 시스템이 제공됩니다. 파티클 시스템은 복잡한 물리적인 이펙트, 스파크, 불, 마법 파티클, 연기, 안개, 마법 등을 시뮬레이트할 때 사용해 왔습니다.


"파티클"이라는 생각은 고정된 기간동안 고정된 생명시간을 가지고 방출되는 겁니다. 그 생존기간동안 모든 파티클은 같은 기본 행동을 가집니다. 모든 파티클을 다르게 만들고 더 유기적인 모습을 보여주기위해 "randomness(임의성)"이라는 각 매개 변수와 연관되어 있습니다. 필수적으로, 파티클 시스템을 만든다는 것은 기본 물리 매개변수를 설정하고 임의성을 더해준다는 뜻입니다.



파티클2D(Particles2D)


파티클 시스템은 씬에 Particle2D 노드를 통해 추가됩니다. 기본 설정으로 허용되며 아래쪽 방향으로 하얀 점을 방출하기 시작합니다 (중력의 영향을 받아). 이는 우리의 요구에 맞추어 적절한 시작 지점을 제공합니다.


../../../_images/particles1.png


텍스쳐


파티클 시스템은 단일 텍스쳐를 사용합니다 (미래에는 스프라이트시트를 통해 애니메이션화된 텍스쳐로 확장될지도 모릅니다). 텍스쳐는 연관 텍스쳐 속성을 통해 설정됩니다 :

../../../_images/particles2.png

물리 변수


파티클 시스템을 위한 전역 변수를 보기 전에, 물리 변수를 꼬아서 무슨 일이 생기는 지 봅시다.


방향


파티클 방출의 기본 각도입니다. 기본 설정은 0입니다 (아래로).


../../../_images/paranim1.gif

이를 바꾸면 emissor 방향이 바뀌지만, 중력은 여전히 영향을 미칩니다 :


../../../_images/paranim2.gif

이 매개 변수는 유용한데 노드를 회전함으로써 중력도 함께 회전하기 때문입니다. 방향을 바꾸는 것은 이들을 분리되게 합니다.



퍼짐(spread)


퍼짐(spread)은 어떤 파티클이 무작위적으로 방출되는지에 대한 각도입니다. 퍼짐을 늘리면 각도도 커집니다. 180으로 퍼짐을 올리면 모든 방향으로 방출할겁니다.


../../../_images/paranim3.gif


선형 속도


선형 속도는 파티클이 방출되는 속도입니다 (픽셀 단위/초). 속도는 중력이나 다른 가속도를 통해 수정가능합니다 (나중에 소개합니다).


../../../_images/paranim4.gif


회전 속도


회전 속도는 각 파티클이 중앙 부분에서 회전하는 속도입니다 (각도/초).


../../../_images/paranim5.gif


궤도 속도


궤도 속도는 파티클 전체가 중앙에서 회전하도록 만들 때 쓰입니다.

../../../_images/paranim6.gif

중력 방향 & 세기


중력은 방향과 세기를 수정할 수 있습니다. 중력은 현재 살아있는 파티클 모두에게 영향을 끼칩니다.

../../../_images/paranim7.gif

레디얼 가속도(Radial acceleration)


만약 이 가속도가 양의 값이면, 파티클은 중앙에서 가속해서 멀어집니다. 만약 음의 값이면 중앙으로 흡수되어갑니다.


../../../_images/paranim8.gif


접선방향 가속도(Tangential acceleration)


이 가속은 중앙으로의 탄젠트 벡터를 사용합니다. 레디얼 가속도와 더해서 멋진 효과를 만들 수 있습니다.

../../../_images/paranim9.gif

제동(damping)


제동은 마찰을 파티클에 적용하여, 멈추게 강제하는 것입니다. 주로 높은 선형 속도를 가지며 시작했다가 서서히 없어지며 멈추는 스파크나 폭발에 특별히 유용합니다.



시작 각도


파티클의 시작 각도를 결정합니다 (각도). 이 매개변수는 랜덤화에 주로 사용됩니다.

../../../_images/paranim11.gif

시작 & 마지막 크기


파티클이 시작할 때와 마지막일 때의 크기를 결정합니다.


../../../_images/paranim12.gif


색상 상들(Color phases)


파티클은 4개의 색상 상들에 달려있습니다. 각 색상 상들은 투명성을 포함합니다.

단계는 0부터 1까지의 오프셋을 제공해야하며, 언제나 오름차순입니다. 예를 들어 0에서 시작해 1로 끝나는 오프셋이지만, 4개의 색상은 다른 오프셋을 사용합니다. 예를 들어 0, 0.2, 0.8, 1.0처럼 각 단계에 다른 오프셋을 가집니다 :

../../../_images/particlecolorphases.png

이건 결과적으로 :


../../../_images/paranim13.gif


전역 변수


이 변수들은 모든 시스템의 행동에 영향을 미칩니다.


생명시간


모든 파티클이 얼만큼 살아있는지에 대한 초 단위 입니다. 모든 생명시간이 끝나면, 새로운 파티클이 생성되어 대체합니다.


생명시간 : 0.5


../../../_images/paranim14.gif

생명시간 : 4.0


../../../_images/paranim15.gif


시간 척도


너무 빨리 혹은 너무 느린 경우를 제외하고는 달성된 효과가 완벽할 때가 종종 발생합니다. 시간척도는 전체 속도를 적용하는 데 도움을 줍니다.


모든 것에 2x한 시간척도 :


../../../_images/paranim16.gif


전처리


파티클 시스템은 파티클이 0개일 때부터 시작해 방출하기 시작합니다. 이는 씬을 로딩하거나 횃불, 안개 등 여러분이 들어갔을 때 방출하기 시작하면 불편합니다. 전처리는 미리 시스템에 몇 초를 주어 처음에 얼만큼을 보여주는 것을 맗바니다.



방출 타임아웃(emit timeout)


이 변수는 주어진 시간 (초 단위)이 지나면 방출을 종료합니다. 0이면 비활성화됩니다.



오프셋


방출 중앙을 중앙에서 멀리 이동할 수 있습니다.



절반 범위


중심을 (기본적으로 1 픽셀) 더 넓게, 원하는 크기의 픽셀로 만듭니다. 파티클은 이 영역에서 임의로 방출됩니다.


../../../_images/paranim17.gif

값을 이용한 방출 마스크를 설정하는 것도 가능합니다. 2D 씬 에디터 뷰포트에서 "Particles" 메뉴를 체크하고 여러분이 좋아하는 텍스쳐를 선택하세요. 불투명한 픽셀이 잠재적인 방출 위치를 정하는데 사용됩니다 :


../../../_images/paranim19.gif


지역 공간


기본적으로 이 옵션이 켜져있습니다. 파티클이 방출되는 공간이 노드 내에 포함된다는 것을 의미합니다. 만약 노드가 움직이면 파티클이 함께 움직입니다 :

../../../_images/paranim20.gif
만약 꺼져있으면, 파티클은 전역 공간으로 방출되며 노드가 움직이면 방출기가 함께 움직입니다 :

../../../_images/paranim21.gif


폭발성


만약 생명시간이 1이고 10개의 파티클이 있다면, 모든 파티클이 0.1초만에 방출된다는 것을 뜻합니다. 폭발성 매개 변수는 이렇게 변하고, 파티클이 함께 방출되도록 강제합니다. 범위는 :

  • 0 : 모든 파티클을 함께 방출
  • 1 : 모든 파티클을 같은 인터벌에 방출
중앙의 값도 허용됩니다. 이 특징은 폭발을 생성하거나 갑작스런 파티클의 폭발에 유용합니다.

../../../_images/paranim18.gif

임의성

모든 물리적 매개변수는 랜덤화될 수 있습니다. 랜덤 변수는 0부터 1까지입니다. 공식처럼 매개변수를 랜덤화 할 수 있습니다 :

initial_value = param_value + param_value*randomness