본문 바로가기

파티클 생성 및 기본 속성 설정

Spawn Rate와 Burst로 생성 시점과 수량을 정하고 초기 위치·속도·수명·색상·크기를 설정해 기본 효과를 만듭니다.

이미터는 파티클 생성 규칙을 담는 단위입니다.

이번 절에서는 파티클이 언제 생성되고, 생성 직후 어떤 위치·속도·수명 값을 갖는지 확인합니다.


파티클 생성: 스폰(Spawn) 모듈

Emitter Update의 Spawn Rate·Spawn Burst Instantaneous가 생성 시점과 개수를 정합니다. Particle Spawn은 그렇게 생성되는 각 입자의 초기 속성을 채우는 그룹입니다.

주로 사용되는 두 가지 스폰 방식이 있습니다.

Spawn Rate

Spawn Rate 모듈은 파티클을 지속적으로, 초당 지정된 개수만큼 생성할 때 사용합니다.

마치 수도꼭지를 틀면 물이 계속해서 흘러나오는 것과 비슷합니다.

  • 사용 예시: 연기, 불꽃, 비, 눈처럼 끊임없이 이어지는 효과
  • 설정: Spawn Rate 모듈을 추가한 후, Spawn Rate 속성의 값을 변경하여 초당 생성될 파티클의 수를 조절합니다. 값이 높을수록 더 많은 파티클이 빠르게 생성됩니다.

Spawn Burst Instantaneous

Spawn Burst Instantaneous 모듈은 파티클을 특정 시점에 한 번에, 지정된 개수만큼 생성할 때 사용합니다.

폭죽이 터지면서 한 번에 불꽃이 펑 하고 터져 나오는 것과 같습니다.

  • 사용 예시: 폭발, 충격파, 짧은 섬광처럼 순간적으로 많은 파티클이 필요한 효과
  • 설정: Spawn Burst Instantaneous 모듈을 추가한 후, Spawn Count 속성의 값을 변경하여 한 번에 생성될 파티클의 총 개수를 조절합니다.

대부분의 나이아가라 효과는 이 두 가지 스폰 방식 중 하나를 사용하거나, 혹은 두 가지를 조합하여 사용하기도 합니다.

예를 들어, 지속적으로 타오르는 불꽃(Spawn Rate)과 함께 가끔 크게 터져 오르는 불씨(Spawn Burst)를 표현할 수 있습니다.


초당 생성량과 한 번의 생성량을 구분합니다

Rate 50/초와 t=1 Burst 50의 독립 비교를 구간마다 새로 생성되는 입자 수로 보여 주거나 본문 Rate 20/Burst 5/Lifetime 2 사례의 1.5초 35와 3.5초 생존/누계 차이를 추적할 수 있다. 실제 틱 캡처와 구분한다.

NIAGARA · CH2-2

초당 생성량과 한 번의 생성량을 구분합니다

설명용으로 Rate 50개/초와 t=1초에 Burst 50개를 비교합니다. 표시한 값은 새로 생성되는 개수이며, 살아 있는 개수나 화면에서 보이는 개수가 아닙니다.

Rate · 1초 구간마다 50개

지속적인 Rate의 1초 구간별 생성 개수0~1초,1~2초,2~3초 구간에 각각50개가 생성되는 설명용 비교입니다.구간별 새 생성 개수5050500초1초2초3초
Rate 생성 구간원desktop과같은0·1·2·3초시간축. Rate는각1초구간50개총150개,Burst는1초에한번50개. 살아있는수의그래프가아니다.구간별 새 생성 개수5050500초1초2초3초

3초 동안 정상적으로 계속 실행한다는 가정에서 총 생성량은 50 × 3 = 150개입니다.

Burst · t=1초에 50개

1초에 한 번50개를 생성하는 Burst선택한 한 번의 Burst가1초에 발생합니다. 다른 시각의 추가 생성은 가정하지 않습니다.지정 시점에 한 번 생성500초1초2초3초
Burst 단일 생성 시점원desktop과같은0·1·2·3초시간축. Rate는각1초구간50개총150개,Burst는1초에한번50개. 살아있는수의그래프가아니다.지정 시점 한 번 생성500초1초2초3초

이 비교에서는 Burst가 한 번 발생해 총 50개입니다. 루프 반복이나 추가 Burst는 별도 조건입니다.

생성과 생존은 다른 계산입니다

두 생성량 모듈은 Emitter Update에 둡니다. Particle Spawn은 새 입자를 초기화하고 Particle State 등은 나이와 소멸을 관리합니다.

이산 시뮬레이션 틱·보간·실행/컬링 조건에 따라 구체적인 생성 시각은 달라집니다. 이 그림은 정상적인 지속 실행/단일 Burst의 수량 비교이며 실제 엔진 캡처나 순간 살아 있는 수의 그래프가 아닙니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.
관계도의 보충 설명
원 도표의 제목·노드·관계·조건·주석
범위원문
관계·조건 설명0~1초, 1~2초, 2~3초 구간에 각각 50개가 생성되는 설명용 비교입니다.
관계·조건 설명원 도표와 같은 0·1·2·3초 시간축이다. Rate는 각 1초 구간에 50개, 총 150개를 생성하고, Burst는 1초에 한 번 50개를 생성한다. 살아 있는 수의 그래프가 아니다.
도표 제목1초에 한 번 50개를 생성하는 Burst
관계·조건 설명선택한 한 번의 Burst가 1초에 발생합니다. 다른 시각의 추가 생성은 가정하지 않습니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
설명 설정

연속 근사로 Rate 20, 1초의 Burst 5, Lifetime 2를 둔다.

  • Rate: 20개/s
  • Burst: 1 s에 5개
  • 실제 tick 캡처와 다른 계산 연습이며, 컬링·조기 소멸은 없다.
1.5초

Rate의 30개와 아직 살아 있는 Burst 5개를 합친다.

  • 생성 누계: 35개
  • 생존: 약 35개
  • 모두 수명 2초 이내이므로 아직 소멸하지 않았다.
3.5초

최근 2초의 Rate 40개만 살아 있고 Burst는 끝났다.

  • 생존: Rate 약 40 / Burst 0
  • 생성 누계: 75개
  • 누계 20*3.5+5와 생존 수는 같은 지표가 아니다.

초당 생성량과 한 번의 생성량을 구분합니다

Rate 50/초와 t=1 Burst 50의 독립 비교를 구간마다 새로 생성되는 입자 수로 보여 주거나 본문 Rate 20/Burst 5/Lifetime 2 사례의 1.5초 35와 3.5초 생존/누계 차이를 추적할 수 있다. 실제 틱 캡처와 구분한다.

NIAGARA · CH2-2

초당 생성량과 한 번의 생성량을 구분합니다

설명용으로 Rate 50개/초와 t=1초에 Burst 50개를 비교합니다. 표시한 값은 새로 생성되는 개수이며, 살아 있는 개수나 화면에서 보이는 개수가 아닙니다.

Rate · 1초 구간마다 50개

지속적인 Rate의 1초 구간별 생성 개수0~1초,1~2초,2~3초 구간에 각각50개가 생성되는 설명용 비교입니다.구간별 새 생성 개수5050500초1초2초3초
Rate 생성 구간원desktop과같은0·1·2·3초시간축. Rate는각1초구간50개총150개,Burst는1초에한번50개. 살아있는수의그래프가아니다.구간별 새 생성 개수5050500초1초2초3초

3초 동안 정상적으로 계속 실행한다는 가정에서 총 생성량은 50 × 3 = 150개입니다.

Burst · t=1초에 50개

1초에 한 번50개를 생성하는 Burst선택한 한 번의 Burst가1초에 발생합니다. 다른 시각의 추가 생성은 가정하지 않습니다.지정 시점에 한 번 생성500초1초2초3초
Burst 단일 생성 시점원desktop과같은0·1·2·3초시간축. Rate는각1초구간50개총150개,Burst는1초에한번50개. 살아있는수의그래프가아니다.지정 시점 한 번 생성500초1초2초3초

이 비교에서는 Burst가 한 번 발생해 총 50개입니다. 루프 반복이나 추가 Burst는 별도 조건입니다.

생성과 생존은 다른 계산입니다

두 생성량 모듈은 Emitter Update에 둡니다. Particle Spawn은 새 입자를 초기화하고 Particle State 등은 나이와 소멸을 관리합니다.

이산 시뮬레이션 틱·보간·실행/컬링 조건에 따라 구체적인 생성 시각은 달라집니다. 이 그림은 정상적인 지속 실행/단일 Burst의 수량 비교이며 실제 엔진 캡처나 순간 살아 있는 수의 그래프가 아닙니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.

관계도의 보충 설명

원 도표의 제목·노드·관계·조건·주석
범위원문
관계·조건 설명0~1초, 1~2초, 2~3초 구간에 각각 50개가 생성되는 설명용 비교입니다.
관계·조건 설명원 도표와 같은 0·1·2·3초 시간축이다. Rate는 각 1초 구간에 50개, 총 150개를 생성하고, Burst는 1초에 한 번 50개를 생성한다. 살아 있는 수의 그래프가 아니다.
도표 제목1초에 한 번 50개를 생성하는 Burst
관계·조건 설명선택한 한 번의 Burst가 1초에 발생합니다. 다른 시각의 추가 생성은 가정하지 않습니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
설명 설정

연속 근사로 Rate 20, 1초의 Burst 5, Lifetime 2를 둔다.

  • Rate: 20개/s
  • Burst: 1 s에 5개
  • 실제 tick 캡처와 다른 계산 연습이며, 컬링·조기 소멸은 없다.
1.5초

Rate의 30개와 아직 살아 있는 Burst 5개를 합친다.

  • 생성 누계: 35개
  • 생존: 약 35개
  • 모두 수명 2초 이내이므로 아직 소멸하지 않았다.
3.5초

최근 2초의 Rate 40개만 살아 있고 Burst는 끝났다.

  • 생존: Rate 약 40 / Burst 0
  • 생성 누계: 75개
  • 누계 20*3.5+5와 생존 수는 같은 지표가 아니다.

예시: 생성 누계에서 살아 있는 수로

설명용으로 0초에 시작해 Rate 20개/초를 계속 유지하고, 1초에 Burst 5개를 한 번 추가한다고 합시다. 모든 입자의 고정 수명은 2초이고 수명 종료 시 소멸하며, 워밍업·반복 Burst·조기 소멸·컬링은 없습니다. 연속 생성으로 근사하면 1.5초까지 Rate가 만든 수는 20 × 1.5 = 30개입니다. 아직 어느 입자도 2초를 넘지 않았고 Burst의 나이도 0.5초이므로 살아 있는 수는 약 30 + 5 = 35개입니다. 실제 틱과 보간 설정에 따른 순간 수량 차이는 별도로 확인합니다.

직접 계산하기

같은 설정을 3.5초까지 계속 실행했습니다. 지금 살아 있는 Rate 입자와 Burst 입자는 각각 몇 개일까요? 3.5초까지의 총 생성 누계와도 비교해 보세요.

풀이 확인

Rate 입자는 최근 2초 구간에 태어난 것만 살아 있어 약 20 × 2 = 40개입니다. 1초에 태어난 Burst의 나이는 2.5초이므로 5개 모두 이미 소멸했습니다. 살아 있는 수는 약 40개이고, 생성 누계는 20 × 3.5 + 5 = 75개입니다. 누계 75를 현재 생존 수로 읽으면 소멸한 입자를 다시 세게 됩니다.

파티클의 기본 속성 설정

Initialize Particle은 Particle Spawn에서 수명·색·크기 등의 초기값을 설정합니다. 실제 실행 순서는 스택 위에서 아래로 정해지며, 초기값을 읽는 모듈보다 앞에 배치합니다.

Initialize Particle 모듈에서 설정할 수 있는 주요 기본 속성들은 다음과 같습니다.

  • Lifetime (수명): 파티클이 생성된 후 얼마나 오랫동안 존재할지를 초 단위로 정의합니다. 이 값은 단일 값으로 설정할 수도 있고, 최소/최대 값을 지정하여 무작위 범위 내에서 수명이 결정되도록 할 수도 있습니다.

    • Tip: 파티클의 수명을 길게 설정하면 효과가 더 오래 지속되고, 짧게 설정하면 빠르게 사라집니다.
  • Color (색상): 파티클이 생성될 때 가질 초기 색상을 정의합니다. RGBA(Red, Green, Blue, Alpha) 값을 조절하여 원하는 색상을 선택할 수 있습니다. Alpha 값은 파티클의 불투명도를 나타냅니다.

    • Tip: 일반적으로 파티클의 색상은 Color 모듈이나 Scale Color 모듈을 통해 수명에 따라 변화시키는 경우가 많습니다.
  • Sprite Size (스프라이트 크기): 파티클이 2D 스프라이트 형태로 렌더링될 때의 초기 크기를 정의합니다. X, Y 값을 개별적으로 설정하여 타원형 파티클을 만들 수도 있습니다.

    • Tip: 스프라이트 크기 역시 Scale Sprite Size 모듈을 통해 수명에 따라 변화시키는 것이 일반적입니다.
  • Sprite Rotation (스프라이트 회전): 파티클 스프라이트의 초기 회전 각도를 설정합니다.

  • Mesh Scale (메시 스케일): 파티클이 3D 메시 형태로 렌더링될 때의 초기 크기를 정의합니다.

충돌 반경은 충돌 모듈의 설정과 입력을 확인합니다. 렌더 크기나 Initialize Particle의 공통 입력과 항상 같은 항목은 아닙니다.

초기 위치는 Shape Location 같은 위치 모듈, 초기 속도는 Add Velocity 등으로 설정할 수 있습니다. Initialize Particle에 표시되는 입력은 모듈 버전과 모드에 따라 달라집니다.

하지만 이 모듈의 주요 목적은 최초의 상태를 정의하는 것이고, 이후의 동적인 변화는 Particle Update 섹션의 모듈들이 담당하게 됩니다.

직접 해보기: 간단한 생성 효과 만들기

간단한 연습을 통해 파티클 생성과 기본 속성 설정을 직접 경험해 봅시다.

새로운 나이아가라 시스템 생성: 생성 창에서 빈 시스템을 선택해 NS_BasicSpawn을 만듭니다. 구버전에서는 New system with empty system 경로를 사용할 수 있습니다.

이미터 추가: System Overview를 우클릭해 Add Emitter에서 Empty Emitter를 선택합니다. 템플릿에 이미 들어 있는 모듈은 중복 추가하지 않습니다. Emitter Update의 Emitter State와 시스템 수명 설정이 지속 생성을 허용하는지 확인합니다.

Initialize Particle 모듈 추가: 새로 추가된 Emitter를 선택하고, Particle Spawn 그룹 아래의 + 버튼을 클릭한 후 Initialize Particle을 검색하여 추가합니다.

  • 이 모듈을 추가하지 않으면 파티클이 정상적으로 렌더링되지 않거나 오류가 발생할 수 있습니다.

Spawn Rate 모듈 추가: Emitter Update의 + 버튼에서 Spawn Rate를 추가합니다.

값 조정
  • Spawn Rate 모듈의 Spawn Rate 값을 50 정도로 설정합니다. (초당 50개의 파티클 생성)
  • Initialize Particle 모듈의 Lifetime을 1.0으로 설정합니다.
  • Initialize Particle 모듈의 Sprite Size를 50.0으로 설정합니다.
  • Initialize Particle 모듈의 Color는 처음에 밝은 색을 고르고 Alpha를 1로 둡니다. 입자가 보이면 색과 Alpha를 바꾸어 비교합니다.

수명 종료와 출력 확인: Particle Update에 Particle State가 있는지 확인하고 수명 경과 시 죽이기 설정을 사용합니다. Render에 Sprite Renderer를 추가합니다. 이미 있는 모듈과 렌더러는 설정만 확인합니다.

Material에는 Particle Color의 RGB·Alpha를 읽는 재질을 지정합니다. 템플릿의 재질로 색과 Alpha를 조절할 수 있거나, 1장에서 M_SimpleFire를 준비했다면 그 재질을 재사용합니다. 필요한 재질이 없다면 기본 머티리얼 실습의 생성·Particle Color 연결·저장까지만 먼저 진행하고 선택 텍스처는 생략합니다. 돌아와 현재 NS_BasicSpawn의 Sprite Renderer → Material에 지정합니다. M_SimpleFire는 Additive 방식이므로 검은색이나 Alpha 0에서는 입자가 보이지 않을 수 있습니다.

위 설정과 정상 재생을 전제로 초당 50개가 생성되고 각 입자는 1초 후 소멸합니다. 안정된 상태의 살아 있는 수는 약 50개지만, 아직 위치 분포나 움직임을 주지 않아 같은 자리에 겹칠 수 있습니다. 화면의 모양은 머티리얼에 따라 달라지므로 반드시 흰 사각형이어야 하는 것은 아닙니다.

입자가 늘기만 한다면 Particle State의 나이·소멸 설정을 확인합니다. 색이 반영되지 않으면 머티리얼의 Particle Color 연결과 Renderer의 Color Binding이 읽는 속성을 확인합니다. Particle Update의 Color·Scale Color가 초기 색을 바꾸고 있는지도 살펴보세요. 살아 있는데 안 보이면 크기·알파·위치·Bounds·렌더러를 확인합니다. 같은 재질도 배경과 노출에 따라 밝기가 달라질 수 있습니다. 생성 수는 디버거에서도 확인하고, 다음 실습에서 속도를 더해 입자들을 구별해 봅니다.

수명 값만 설정하는 것과 실제 소멸 처리는 다릅니다. Particle Update의 Particle State가 이 역할을 맡습니다.