나이아가라는 언리얼 엔진에서 제공하는 고급 VFX(비주얼 이펙트) 시스템으로, 파티클 시스템을 보다 정교하게 제어하고 확장할 수 있도록 설계되었다. 기존의 Cascade 시스템과 비교하여 더욱 강력한 기능과 모듈형 구조를 제공하여 복잡한 시뮬레이션과 동적 이펙트를 만들기에 적합하다.
이미터의 주요 역할

2) 파티클(Particle)이란?
파티클은 이펙트를 구성하는 가장 작은 단위이다. 즉 이미터가 생성하는 개별적인 요소이다. 예를 들어 불꽃 이펙트를 만들면 각각의 불꽃 조각이 하나의 파티클이 된다.



1. Emitter 관련 블록
🔸 Emitter Spawn (이미터 스폰)
Emitter Spawn 섹션은 이미터가 처음 생성될 때 실행됩니다.
여기서 설정된 값들은 이펙트가 생성될 때 단 한 번 실행됩니다.
주로 Spawn Rate(생성 속도)나 Burst Count(한 번에 생성할 개수) 등을 정의합니다.
🔸 Emitter Update (이미터 업데이트)
Emitter Update 섹션은 이펙트가 실행 중일 때 매 프레임마다 실행됩니다.
즉, Emitter Spawn이 최초 1회 실행되는 것과 달리, Emitter Update는 지속적으로 실행됩니다.
특정한 조건에서 새로운 파티클을 계속 생성하거나, 외부 변수(속도, 방향 등)를 업데이트하는 역할을 합니다.
2.Particle 관련 블록
🔹 Particle Spawn (파티클 스폰)
Particle Spawn 섹션은 각각의 개별 파티클이 생성될 때 한 번만 실행됩니다.
개별적인 파티클의 초기 속성(위치, 크기, 색상 등)을 설정하는 역할을 합니다.
보통 Initialize Particle, Sphere Location, Velocity 등의 모듈이 들어갑니다.
🔹 Particle Update (파티클 업데이트)
Particle Update 섹션은 각각의 파티클이 생성된 후, 매 프레임마다 업데이트됩니다.
여기에서 파티클의 크기, 속도, 방향, 색상 변화 등을 지속적으로 조정할 수 있습니다.
흔히 적용되는 모듈:
Particle State: 파티클의 활성화 여부
Scale Sprite Size: 시간이 지남에 따라 크기 변경
Color: 파티클 색상 변경
Solve Forces and Velocity: 물리 효과 적용(중력, 저항 등)
🟢 Add Event Handler (이벤트 핸들러 추가)
특정한 조건(예: 파티클이 충돌하거나 사라질 때)에 대한 이벤트를 처리하는 기능입니다.
예를 들어:
파티클이 바닥에 닿으면 사라지게 만들기
충돌할 때 스파크 효과를 추가하기
특정 시간 이후 파티클의 색상을 변경하기
🟢 Add Simulation Stage (시뮬레이션 스테이지 추가)
GPU 기반 시뮬레이션을 사용할 때, 별도의 계산 단계를 추가할 수 있습니다.
대량의 파티클을 관리할 때 유용합니다.
🔴 Render (렌더)
최종적으로 화면에 출력되는 파티클의 렌더링 방식을 결정하는 부분입니다.
이 예제에서는 Sprite Renderer(2D 이미지 형태로 출력)가 사용되고 있습니다.
2차원 공간에서 벡터는 x와 y 값만 보유한다. 예를 들어 벡터 a= (3,4)에서 x는 3이고 y는 ㅑㅑ4이다.
이러한 표현은 오브젝트의 위치나 방향을 정의하는데 사용될 수 있다. 또한 벡터의 크기를 알아내 오브젝트의 속도를 구할 수 있다.

벡터 a는 2D공간에서 X 방향으로 3단위, y방향으로 4단위 만큼 이동한 위치를 나타낸다. 3D공간에서는 다음과 같이 Vector3d를 사용해 점위 위치를 정의할 수 있다

이 축은 xy 평면에서 점의 높이를 결정해 3D공간 상의 점을 정의한다
벡터 a=(3,5)에서 벡터를 구성 요소로 분리하면 벡터의 방향과 크기를 알 수 있다. 다음과 같은 방법을 사용해보자
1. x방향으로 3단위 만큼 이동한다
2. 그 다음 점 B에서 y방향으로 5단위만큼 이동한다.
3. 이제 선분 AC를 그릴 수 있으며 이 선분의 방향이 벡터의 방향을 나타낸다

벡터를 사용해 방향을 결정하는 이 방법은 3D 벡터를 사용해 3차원 공간으로 확장할 수 있다.
나이아가라에서는 2D벡터를 vector2D라고 하고 3D벡터는 Vector라고 한다.
파티클 시스템에서 파티클의 움직임은 여러 벡터의 힘이 모인 결과다. 파티클에 작용하는 합력의 계산은 모듈에서 이루어진다. 또한 다양한 벡터 연산을 통해 이러한 합력을 계산한다.
두 벡터 a=(3,4)와 b=(5,2)를 더하는 것이 무엇을 의미하는지 알아보자

벡터 a와 b의 합이 새로운 벡터 c라고 하면 다음과 같이 풀이할 수 있다.
벡터 c가 a와 b의 두 벡터의 합성 벡터이다.

합성 벡터c가 그림과 같음을 알 수 있다.
벡터의 길이가 벡터의 크기와 같다. 계산을 쉽게 할 수 있도록 특정 벡터의 크기를 1로 간주한다. 이것을 단위벡터라고 한다. 단위벡터는 방향을 전달하는데 도움을 주기 때문에 방향벡터라고도 한다. 단위벡터의 크기는 항상 1이므로 중요하지 않다.

단위벡터에 스칼라를 곱 하면 벡터의 원래 방향으로 벡터의 크기를 증가시킬 수 있다.

이러한 벡터 연산은 나이아가라에서 많이 사용된다. 이러한 연산은 노드를 사용해 처리되므로 실제로 직접 연산할 필요가 없다.

단위벡터를 곱하는 방법과 유사하게 정수에 크기값을 곱할 수 있다.

나이아가라에서는 벡터 연산 외에 행렬도 많이 사용한다. 일부 중요한 행렬 연산은 다음과 같다. 기존 방향 벡터나 위치벡터의 방향 또는 위치를 변경하려면 행렬 변환 연산이 필요하다.

행렬 전치연산은 행렬을 대각선으로 뒤집는다. 이 연산은 파티클 프로퍼티를 수정하는데 필요하다
