이펙트에 따라 수만 개의 파티클을 스폰해야 할 수도 있습니다. 하지만, 표준 CPU를 사용하여 이렇게 많은 파티클을 생성하면 퍼포먼스 문제를 유발할 수 있습니다. 이 가이드에는 CPU가 아닌 GPU 시뮬레이션을 실행하여 스프라이트 파티클 이펙트를 생성하는 방법이 나와 있습니다.
시스템 및 이미터 생성
나이아가라 이미터와 시스템은 독립적입니다. 현재 권장되는 워크플로는 기존 이미터나 이미터 템플릿에서 시스템을 생성하는 것입니다.
-
우선 콘텐츠 브라우저에서 우클릭한 다음, FX > 나이아가라 시스템(Niagara System) 을 선택하여 나이아가라 시스템을 생성합니다. 나이아가라 시스템 마법사가 표시됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
선택한 이미터에서 새 시스템 생성(New system from selected emitters) 을 선택합니다. 그리고 다음(Next) 을 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
템플릿(Templates) 에서 심플 스프라이트 버스트(Simple Sprite Burst) 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
더하기 아이콘(+) 을 클릭하여 이미터 목록에 이미터를 추가하고 시스템에 추가합니다. 완료(Finish) 를 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
새 시스템 이름을 GPUSprite 로 지정합니다. 더블클릭하여 나이아가라 에디터(Niagara Editor)에서 실행합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
새 시스템의 이미터 인스턴스 이름은 기본적으로 SimpleSpriteBurst 지만 나중에 변경할 수 있습니다. 시스템 개요(System Overview) 에서 이미터 인스턴스 이름을 클릭하면 해당 필드를 편집할 수 있습니다. 이미터 이름을 FX_GPUSprite 로 지정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
GPUSprite 시스템을 레벨로 드래그합니다.
파티클 이펙트를 만들 때는 항상 시스템을 레벨에 드래그하는 편이 좋습니다. 이렇게 하면 모든 변경과 편집을 레벨에서 볼 수 있습니다. 시스템에 대한 모든 변경 사항은 해당 레벨의 시스템 인스턴스에 자동으로 전파됩니다.
이미터 세팅 - 이미터 프로퍼티
우선, 이미터 프로퍼티(Emitter Properties) 에서 몇 가지 세팅을 변경해야 합니다. 여기에서 CPU 시뮬레이션을 GPU 시뮬레이션으로 전환합니다.
-
시스템 개요(System Overview) 에서 이미터 세팅(Emitter Settings) 을 클릭하여 선택(Selection) 패널에서 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
이미터 프로퍼티(Emitter Properties) 를 펼칩니다. 시뮬레이션 타깃(Simulation Target) 필드를 찾습니다. 여기에서 언리얼 엔진의 시뮬레이션에 GPU를 사용하도록 설정합니다. 드롭다운을 클릭하고 GPUComputeSim 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
아직 설정되지 않은 고정 바운드에 관한 경고가 표시될 수 있습니다. 고정 바운드(Fixed Bounds) 박스를 클릭하면 오류가 해결됩니다. 최소(Minimum) 및 최대(Maximum)** 값은 기본값으로 둡니다.
파티클 시뮬레이션이 GPU에서 처리되므로, 시스템은 이펙트의 크기를 읽을 수 없습니다. 따라서 고정된 바운드를 설정해야 합니다. 이 단계에 나와 있는 것처럼 이미터에서도 가능하고, 시스템 프로퍼티(System Properties) 아이템에서 전체 시스템에 대한 고정 바운드를 설정할 수 있습니다.
이미터 업데이트 그룹 세팅
다음으로 이미터 업데이트(Emitter Update) 그룹에서 모듈을 편집합니다. 이 동작은 이미터에 적용되며 프레임별로 업데이트됩니다.
-
시스템 개요(System Overview) 에서 이미터 업데이트(Emitter Update) 를 클릭하여 선택(Selection) 패널에서 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
이미터 상태(Emitter State) 모듈을 펼칩니다. 이 모듈은 이 이미터의 시간과 엔진 퀄리티를 제어합니다. 심플 스프라이트 버스트 템플릿을 사용했기 때문에 라이프 사이클 모드(Life Cycle Mode) 가 셀프(Self) 로 설정됩니다. 일반적으로 이 특정 이미터에 대한 이미터 라이프 사이클 로직의 완벽한 커스터마이징을 위해 사용되지만, 이 이펙트에서는 필요 없습니다. 드롭다운을 클릭하고 라이프 사이클 모드 를 시스템 으로 설정합니다. 그러면 시스템에서 라이프 사이클 세팅을 계산할 수 있습니다. 일반적으로 이 세팅은 퍼포먼스를 최적화합니다. 기본적으로 시스템은 5초 간격으로 무한 루핑합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
즉시 스폰 버스트(Spawn Burst Instantaneous) 모듈은 이미터가 스폰되었을 때 대량의 파티클 버스트를 생성합니다. 이 모듈은 심플 스프라이트 버스트 템플릿에 포함되어 있습니다. 스폰 수(Spawn Count) 를 2500 으로 설정합니다. 스폰 시간(Spawn Time) 이 0 으로 설정되어 있으므로, 시작하는 즉시 버스트가 발생합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
이 이펙트의 경우, 이미터가 스폰되었을 때 단순한 파티클 버스트 이상의 것이 필요합니다. 스폰 속도(Spawn Rate) 모듈은 이미터가 활성화되는 동안 지속적으로 파티클을 생성합니다. 이미터 업데이트에서 더하기 표시(+) 아이콘을 클릭하고 스폰(Spawning) > 스폰 속도(Spawn Rate) 를 선택하여 스폰 속도(Spawn Rate) 모듈을 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
스폰 속도 를 500 으로 설정합니다. 이렇게 하면 파티클을 초당 500회의 속도로 스폰하여 첫 버스트 이후 파티클이 연속적으로 생성됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 스폰 그룹 세팅
다음으로, 파티클 스폰 그룹에서 모듈을 편집합니다. 이 동작은 파티클이 처음 스폰될 때 파티클에 적용됩니다.
-
시스템 개요(System Overview) 에서 파티클 스폰(Particle Spawn) 을 클릭하여 선택(Selection) 패널에서 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
파티클 초기화(Initialize Particle) 모듈을 펼칩니다. 이 모듈은 관련된 여러 파라미터를 하나의 모듈로 모아서 스택의 복잡성을 최소화합니다. 포인트 어트리뷰트(Point Attributes) 에서 수명(Lifetime) 파라미터를 찾습니다.
-
수명 파라미터는 파티클이 사라지기 전까지 표시되는 시간을 결정합니다. 이 이펙트에는 상수 값을 사용해야 이펙트가 끝날 때까지 파티클이 계속 표시됩니다. 수명(Lifetime) 을 5 로 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
이 가이드의 다른 파트에서 스프라이트 크기 랜덤화를 다룰 예정이며, 여기서는 스프라이트의 기본 크기를 설정합니다. 스프라이트 어트리뷰트(Sprite Attributes) 에서 스프라이트 크기(Sprite Size) 파라미터를 찾아 활성화합니다. 스프라이트 크기(Sprite Size) 를 다음과 같이 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
크기 벡터 값 X 5 Y 5 -
스피어 위치는 스프라이트가 스폰되는 위치의 모양을 제어합니다. 파티클 스폰의 더하기 아이콘(+) 을 클릭하고 위치(Location) > 스피어 위치(Sphere Location) 를 클릭하여 스피어 위치(Sphere Location) 모듈을 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
스피어 위치(Sphere Location) 모듈을 추가하면 스프라이트가 스피어 모양으로 스폰되며, 반경을 지정하여 스피어 모양의 크기를 설정할 수 있습니다. 모양 프리미티브(Shape Primitive) 드롭다운 메뉴에서 스피어(Sphere) 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 업데이트 그룹 세팅
이제 파티클 업데이트 그룹에서 모듈을 편집합니다. 이 동작은 이미터의 파티클에 적용되며 프레임별로 업데이트됩니다.
-
시스템 개요 의 선택 패널에서 파티클 업데이트 그룹을 클릭해 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
파티클 스폰(Particle Spawn) 그룹의 파티클 초기화(Initialize Particle) 모듈에서 스프라이트의 기본 크기를 선택했습니다. 스프라이트 크기 조정(Scale Sprite Size) 모듈을 추가하여 스프라이트의 크기를 랜덤화할 수 있습니다. 이렇게 하면 기본 크기에 스케일링 인수가 적용됩니다. 더하기 아이콘(+) 을 클릭하고 크기(Size) > 스프라이트 크기 조정(Scale Sprite Size) 를 선택하여 스프라이트 크기 조정(Scale Sprite Size) 모듈을 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
스프라이트 크기 조정(Scale Sprite) > 비균등(Non-Uniform) 드롭다운 메뉴에서 비균등 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
스프라이트 크기 조정의 기본값은 X: 1, Y: 1 을 사용합니다. 이러한 기본값을 변경하면 모든 파티클이 균일하게 커지거나 작아집니다. 하지만 랜덤 크기 베리에이션이 스태틱 크기보다 시각적으로 흥미롭습니다. 스케일 인수(Scale Factor) 필드 옆의 아래 방향 화살표를 클릭하고 동적 입력(Dynamic Inputs) > 플로트에서 벡터 2D(Vector2D from Float) 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
참고로 스케일 인수(Scale Factor) 에 대한 값이 하나의 스태틱 값으로 변경되었습니다. float 값을 추가하는 방법은 어떤 모습의 파티클을 원하는지에 따라 여러 가지입니다. 점진적으로 이어지는 크기 변화에는 커브가 이상적입니다. 값(Value) 옆의 아래 방향 화살표를 클릭하고 동적 입력(Dynamic Inputs) > 커브에서 플로트(Float from Curve) 를 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
스프라이트 크기 스케일 조절 모듈을 엽니다. 램프 업 다운(Ramp Up Down) 커브 템플릿을 클릭하고 해당 모양을 커브에 적용합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
커브와 일치하는 템플릿을 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
현재 세팅은 별로 흥미롭지 않은 파티클의 공을 생성할 뿐입니다. 파티클의 베리에이션 및 움직임을 늘리는 엘리먼트를 추가할 수 있습니다. 파티클 업데이트의 더하기 아이콘(+) 을 클릭하고 힘(Forces) > 컬 노이즈 힘(Curl Noise Force) 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
컬 노이즈 힘으로 많은 것을 할 수 있습니다. 노이즈 강도(Noise Strength) 는 전체적인 노이즈 필드의 크기를 제어합니다. 다시 말해 노이즈가 파티클의 원래 스피어를 방해하는 양을 제어합니다. 노이즈 빈도(Noise Frequency) 는 파티클에 적용되는 컬 노이즈의 빈도를 제어합니다. 이 값이 작을수록 파티클의 스피어 위치가 더 워핑됩니다. 지금은 아래 세팅을 사용하지만, 나중에 다른 모습이 되도록 실험할 수 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파라미터 값 Noise Strength 72 Noise Frequency .02 -
처음에는 파티클이 소용돌이치다가 소멸될 때까지 계속 바깥쪽으로 이동합니다. 이 이펙트의 경우, 파티클은 바깥쪽으로 이동하다가 원점으로 돌아와서 소용돌이를 만듭니다. 포인트 어트랙션 힘(Point Attraction Force) 모듈은 파티클을 단일 지점으로 이동하게 합니다. 기본적으로 이 지점에 이미터가 위치합니다. 파티클 업데이트의 더하기 아이콘(+) 을 클릭하고 힘(Forces) > 포인트 어트랙션 힘(Point Attraction Force) 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
어트랙션 강도(Attraction Strength) 는 파티클을 어트랙터 지점으로 당기는 힘의 양입니다. 어트랙션 반경(Attraction Radius) 은 파티클에 적용되는 포인트 어트랙션 힘에 해당하는 필드의 크기를 나타냅니다. 감쇠 익스포넌트(Falloff Exponent) 는 스피어가 퍼지는 양을 제어합니다. 값이 작을수록 파티클 스피어가 더 많이 퍼집니다. 소멸 반경(Kill Radius) 은 파티클의 라이프 사이클이 끝나 사라지는 영역의 크기를 설정합니다. 어트랙션 강도(Attraction Strength), 어트랙션 반경(Attraction Radius), 감쇠 익스포넌트(Falloff Exponent), 소멸 반경(Kill Radius) 을 다음과 같은 값으로 설정합니다.
모듈 맨 아래의 삼각형을 클릭하면 소멸 반경(Kill Radius) 파라미터가 표시됩니다. 박스가 체크되어 있지 않다면, 체크하여 활성화합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파라미터 값 어트랙션 강도(Attraction Strength) 5.5 어트랙션 반경(Attraction Radius) 300.0 감쇠 익스포넌트(Falloff Exponent) 0.6 소멸 반경(Kill Radius) 4.0 -
이제 색을 변경하는 방법입니다. 파티클 업데이트의 더하기 아이콘(+)을 클릭하고 색(Color) > 색(Color) 을 선택하여 색(Color) 모듈을 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
색(Color) 옆의 아래 방향 화살표를 클릭하고 일반(General) > 동적 입력(Dynamic Inputs) > 커브의 색(Color from Curve) 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
컬러 바 위의 공간을 클릭하여 커브에 컬러 스톱을 추가할 수 있으며, 스톱을 더블클릭하여 색 선택 툴을 열면 컬러를 변경할 수 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
오파시티 스톱을 설정하려면 바 아래의 공간을 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
시간을 설정하려면 바 아래의 공간을 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
컬러와 오파시티를 아래와 같이 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
컬러 또는 오파시티 스톱 시간 값 컬러 스톱 1 0.0 R: 1, G: 0, B: 1 스톱 2 .35 R: .08, G: 0, B: 1 스톱 3 ..60 R: .2 , G: 1, B: .8 스톱 4 .8 R: 1, G: .96, B: .3 오파시티 스톱 1 0 1 스톱 2 .7 1 스톱 3 1 0
최종 결과물
축하합니다! CPU 대신 GPU를 사용하는 멋진 스프라이트 이펙트를 완성했습니다.