안동민 개발노트

본문 시작

파티클 업데이트 모듈 소개

매 프레임 속도·중력·색상·크기·노이즈 힘을 갱신하고 Solve Forces와 모듈 순서가 움직임에 주는 영향을 이해합니다.

스폰(Spawn) 모듈로 파티클을 생성했다면, 이제 생성된 파티클이 어떻게 변하는지 다뤄야 합니다.

이 역할을 담당하는 것이 파티클 업데이트(Particle Update) 모듈입니다.

이미터의 Particle Update 섹션에서 매 프레임 속성을 갱신해, 시간에 따라 변화하는 동적 효과를 만듭니다.

파티클 업데이트 모듈은 생성된 파티클의 색상, 크기, 위치, 속도 변화를 매 프레임 계산하는 구간입니다.

마치 그림을 그릴 때 스케치(스폰 모듈) 위에 색을 입히고 명암을 조절하며 생동감을 더하는 과정과 같다고 생각하시면 됩니다.


파티클 업데이트 모듈의 역할

스폰 모듈이 파티클의 탄생을 정의한다면, 파티클 업데이트 모듈은 파티클의 삶을 정의합니다.

파티클이 존재하는 매 순간, 이 모듈들은 파티클의 위치, 속도, 색상, 크기, 회전 등 다양한 속성들을 지속적으로 계산하고 변경합니다.

덕분에 파티클은 단순히 생성되었다 사라지는 것이 아니라, 역동적으로 움직이고 변화하는 모습을 보여줄 수 있습니다.

파티클 업데이트 섹션에 추가된 모듈들은 위에서 아래로 순서대로 실행됩니다.

이 순서는 매우 중요합니다.

예를 들어 Gravity Force로 힘을 누적한 뒤 Solve Forces and Velocity가 이를 속도와 위치에 반영합니다. 초기 속도는 Particle Spawn에 두고, 지속 가속은 힘 모듈로 구분하면 의도를 읽기 쉽습니다.

만약 순서가 뒤바뀌면 예상치 못한 결과가 나올 수 있습니다.


주요 파티클 업데이트 모듈의 종류

나이아가라에서 자주 사용되는 파티클 업데이트 모듈들을 살펴보겠습니다.

Add Velocity

주로 Particle Spawn에서 초기 속도를 추가할 때 사용합니다. Update에 배치할 수 있는 버전·설정이라면 호출마다 더하는지, 시간 간격을 반영하는지 모듈을 확인해야 합니다. 일정 속도로 이동하는 것과 매 틱 속도를 더해 가속하는 것은 다릅니다.

이를 통해 파티클이 특정 방향으로 이동하게 만들 수 있습니다.

  • 주요 속성
    • Velocity: 3차원 벡터(X, Y, Z) 값으로, 파티클이 추가될 속도의 방향과 크기를 정의합니다.
  • 사용 예시
    • 분수 효과: 위쪽(Z축 양의 방향)으로 속도를 주면 물줄기가 솟아오르는 효과.
    • 빗방울: 아래쪽(Z축 음의 방향)으로 속도를 주면 빗방울이 떨어지는 효과.

Gravity Force

파티클에 중력과 같은 지속적인 힘을 적용합니다.

이는 파티클의 속도를 시간이 지남에 따라 변화시킵니다.

  • 주요 속성
    • Gravity: 3차원 벡터(X, Y, Z) 값으로, 중력의 방향과 강도를 정의합니다. 일반적으로 지구의 중력을 모방하기 위해 Z축 음의 방향에 값을 부여합니다.
  • 사용 예시
    • 떨어지는 파편: 폭발 후 파편이 중력에 의해 땅으로 떨어지는 효과.
    • 연기/증기: 상승감은 위쪽 힘·부력에 해당하는 연출과 Drag 등을 조합합니다. Gravity Force만으로 뜨거운 공기의 부력이 자동 계산되지는 않습니다.

Scale Color

기준 색의 RGB와 Alpha에 배율을 적용합니다. 배율 입력을 NormalizedAge 기반 커브에 연결하면 수명에 따른 색 변화를 만듭니다.

이는 시간에 따른 파티클의 노화나 소멸을 시각적으로 표현하는 데 매우 효과적입니다.

  • 주요 속성
    • 색·알파 배율: 사용 중인 모듈의 RGB와 Alpha 입력 자료형에 맞는 커브를 선택합니다. 초기 색과 곱해지는 배율인지, 색을 직접 쓰는 Color 모듈인지 구분합니다.
  • 사용 예시
    • 불꽃: 처음에는 노란색이었다가 점점 붉은색, 주황색으로 변하고 마지막에 알파를 낮춰 사라지는 불꽃 효과.
    • 소멸하는 마법 효과: 화려한 색상으로 시작했다가 점점 투명해지며 사라지는 효과.

Scale Sprite Size

초기 스프라이트 크기에 배율을 적용합니다. NormalizedAge를 커브 입력으로 연결할 때 수명에 따른 크기 변화가 됩니다.

  • 주요 속성
    • Scale Factor: Vector2 From Curve를 사용하여 수명에 따른 크기 변화 커브를 정의합니다.
  • 사용 예시
    • 연기: 피어오르면서 점점 커지다가 사라질 때 작아지는 연기 덩어리.
    • 물방울: 터지기 직전에 커졌다가 사라지는 물방울.

Curl Noise Force

파티클에 불규칙하고 유기적인 움직임을 부여하여 연기, 구름, 유체와 같은 자연스러운 흐름을 시뮬레이션합니다.

마치 예측할 수 없는 바람이 파티클을 흔드는 것과 같습니다.

  • 주요 속성
    • Noise Scale: 노이즈 패턴의 크기를 조절합니다.
    • Strength: 노이즈 힘의 강도를 조절합니다.
  • 사용 예시
    • 연기/안개: 자연스럽게 휘몰아치는 연기나 안개.
    • 유체 효과: 물이나 용암의 흐름을 표현.

Solve Forces and Velocity

힘을 누적하는 모듈 뒤에 배치합니다. 후처리 모듈이 뒤에 올 수 있으므로 스택의 무조건 마지막이라는 규칙은 아닙니다.

앞에서 적용된 Force, Add Velocity 결과를 모두 통합해 파티클의 최종 위치를 계산하기 때문입니다.

위치 적분 단계가 빠지면 속도/힘이 정상 반영되지 않아 파티클이 멈추거나 비정상 동작할 수 있습니다.

움직임과 시각 속성의 의존 관계
움직임과 시각 속성의 의존 관계힘을 누적한 후 위치로 적분하는 경로와 나이에 따라 색과 크기를 계산하는 경로가 렌더러에서 소비됩니다.힘 누적Gravity · Noise나이 진행률NormalizedAgeSolve Forces속도 · 위치 적분Position색 · 크기 배율Curve 입력Color · SpriteSizeRenderer갱신된 속성을 읽음

화살표는 데이터 의존성입니다. 실제 스택의 모든 모듈을 나열한 순서도가 아니며, Collision·후처리 모듈의 조건은 따로 확인합니다.


파티클 업데이트 모듈 추가 및 설정 팁

  • 순서의 중요성: 앞서 강조했듯이, 파티클 업데이트 섹션의 모듈 순서는 매우 중요합니다. 논리적인 흐름에 따라 모듈을 배치해야 합니다. (예: Gravity Force → Solve Forces and Velocity). Collision처럼 구체적인 선행 조건이 있는 모듈은 에디터의 의존성 안내를 확인합니다.
  • 그래프 에디터 활용: Scale Color나 Scale Sprite Size와 같이 시간에 따라 속성이 변화하는 모듈들은 그래프 에디터(Curve Editor)를 활용하는 것이 일반적입니다. 속성 값 옆의 작은 화살표를 클릭하여 Curve 또는 Float From Curve 등을 선택하면 그래프 에디터가 활성화됩니다.
  • 오버라이드(Override) 기능: 일부 모듈의 속성은 기본적으로 상위 모듈이나 시스템 속성을 따르지만, 필요에 따라 개별 모듈에서 해당 속성을 재정의할 수 있습니다.
  • 미리 보기와 디버깅: 파티클 업데이트 모듈을 조정할 때는 뷰포트에서 실시간으로 변화를 확인하는 것이 중요합니다. 나이아가라 디버거를 사용하여 파티클의 특정 속성 변화를 자세히 살펴보는 것도 도움이 됩니다.

값이 바뀌지 않을 때

  • 속도는 바뀌는데 위치가 멈추면 위치 적분 모듈과 이후 Position 덮어쓰기를 확인합니다.
  • 색이 다르면 초기 색·배율·아래쪽 Color 작성자와 머티리얼의 Particle Color 연결을 순서대로 확인합니다.
  • 커브가 멈춰 있으면 Particle State의 나이 갱신과 커브 입력이 어떤 시간을 읽는지 확인합니다.
  • 노이즈가 과하면 힘의 세기와 공간 패턴을 낮은 값부터 비교합니다. Curl Noise는 예측 불가능한 유체 전체를 직접 계산하는 것과 다릅니다.

Particle Update 레퍼런스에서 모듈의 입력·출력과 의존성을 확인할 수 있습니다.