커스텀 머티리얼과의 통합
이전 절에서 Sprite Renderer와 기본 머티리얼 설정을 다뤘다면, 이제 렌더링 표현력을 한 단계 올릴 차례입니다.
이번 절에서는 커스텀 머티리얼 통합을 다룹니다. 단순한 색/텍스처 적용을 넘어, 나이아가라에서 계산한 데이터를 머티리얼로 전달해 파티클 표현을 더 풍부하고 동적으로 만드는 방법을 학습합니다.
이 기능은 파티클을 2D 스프라이트 수준에 묶어 두지 않고, 빛 반응, 특수 셰이더, 주변 환경 조건에 따라 다르게 렌더링하도록 확장하는 도구입니다.
왜 커스텀 머티리얼과 통합해야 할까요?
커스텀 머티리얼과의 통합에서 파티클 흐름, 모듈 입력, 성능 신호를 정리한 것입니다.
Particle Color 노드만 사용하면 색상과 알파 같은 기본 표현만 제어할 수 있습니다.
하지만 나이아가라는 Velocity, SpriteSize, RandomSeed, CustomFloat, CustomVector 같은 다양한 속성을 파티클별로 가지고 있습니다. 커스텀 머티리얼 통합은 이 동적 데이터를 머티리얼 그래프로 가져와 렌더링 결과에 직접 반영하는 작업입니다.
이를 통해 다음과 같은 고급 렌더링 기법을 구현할 수 있습니다.
- 속도에 따른 밝기/색상 변화: 파티클의 속도 크기에 비례하여 발광 강도를 조절하거나 색상을 변경합니다.
- 충돌 지점의 특수 효과: 파티클이 충돌한 지점의 UV 좌표나 노멀 정보를 머티리얼로 전달하여 충돌 이펙트를 섬세하게 제어합니다.
- 임의의 데이터 전달: 나이아가라 스크립트에서 계산된 사용자 정의
Float나Vector값을 머티리얼로 전달하여, 셰이더 내부의 복잡한 논리(예: 특정 임계값을 넘으면 다른 텍스처 사용)를 구동합니다. - 노이즈나 패턴 조절: 파티클마다 다른 노이즈 시드(Seed) 값을 머티리얼로 전달하여 각 파티클의 텍스처 패턴을 미묘하게 다르게 만듭니다.
커스텀 머티리얼 통합의 핵심: Niagara Particle Attribute 노드
커스텀 머티리얼에서 나이아가라 파티클의 속성을 가져오는 가장 중요한 노드는 바로 Niagara Particle Attribute 노드입니다. 이 노드는 나이아가라 파티클 시스템의 특정 매개변수(Parameter) 값을 머티리얼 그래프로 가져오는 역할을 합니다.
Niagara Particle Attribute 노드
머티리얼 에디터 열기: 나이아가라 시스템에 할당된 머티리얼을 더블 클릭하여 머티리얼 에디터를 엽니다.
노드 추가: 머티리얼 그래프의 빈 공간에 마우스 우클릭하고 Niagara Particle Attribute를 검색하여 추가합니다.
매개변수 선택: 추가된 Niagara Particle Attribute 노드를 선택합니다. 디테일(Details) 패널에서 Parameter Name 속성을 찾습니다.
Parameter Name 드롭다운 메뉴를 클릭하거나 직접 입력하여, 가져오고 싶은 나이아가라 파티클 속성 매개변수의 정확한 이름을 입력합니다.
-
예시
Particles.Velocity(파티클의 속도 벡터)Particles.SpriteSize(파티클의 스프라이트 크기 벡터)Particles.NormalizedAge(파티클의 정규화된 수명)Particles.Lifetime(파티클의 총 수명)Particles.Position(파티클의 월드 위치)- 사용자 정의 매개변수: 나이아가라 스크립트에서
Set New or Existing Parameter노드를 통해 정의한Particles.MyCustomFloat나Particles.MyCustomVector와 같은 사용자 정의 속성도 가져올 수 있습니다.
출력 연결: Niagara Particle Attribute 노드는 선택된 매개변수의 값을 출력 핀으로 내보냅니다. 이 출력 핀을 머티리얼 그래프 내의 다른 연산 노드나 머티리얼의 입력(예: Emissive Color, Roughness)에 연결하여 시각적인 효과를 만듭니다.
실제 예시: 파티클 속도에 따른 발광 강도 조절
파티클의 속도가 빠를수록 더 밝게 빛나도록 만들어 보겠습니다.
나이아가라 시스템 설정
이전에 만든 NS_BasicSpawn 시스템을 엽니다.
이미터에 Spawn Rate (값: 100 정도), Initialize Particle (Lifetime: 1.02.0, Sprite Size: 50 정도), 500 정도), Add Velocity (Z: 200Solve Forces and Velocity 모듈이 있는지 확인합니다.
Particle Update 섹션에 Add Velocity가 파티클을 위로 솟아오르게 하고 있는지 확인합니다.
Initialize Particle 모듈에서 Color를 흰색 (R:1, G:1, B:1, A:1)으로 설정합니다. (Scale Color 모듈이 있다면 잠시 비활성화하거나 제거합니다.)
커스텀 머티리얼 생성 및 설정
콘텐츠 브라우저에서 새 머티리얼을 만들고 M_VelocityGlow와 같이 이름을 지정합니다. 더블 클릭하여 머티리얼 에디터를 엽니다.
Details 패널에서 Blend Mode를 Additive로, Shading Model을 Unlit 으로 설정합니다.
머티리얼 그래프에 다음 노드를 추가합니다.
Particle Color노드 (파티클의 기본 색상 및 알파를 가져옴)Niagara Particle Attribute노드 (이름:Particles.Velocity)Vector Length노드 (Vector Velocity의 길이를 계산하여 속도 크기를 얻음)Multiply(Float * Float) 노드 (속도 크기에 곱하여 발광 강도를 조절)Multiply(Vector * Float) 노드 (Particle Color의RGB에 발광 강도를 곱함)
노드 연결
Particle Color의Alpha출력을 머티리얼의Opacity입력에 연결합니다.Niagara Particle Attribute(Particles.Velocity)의 출력을Vector Length노드의 입력에 연결합니다.Vector Length의 출력을 첫 번째Multiply (Float)노드의 입력에 연결합니다. 이Multiply노드의 두 번째 입력에는0.01과 같은 작은 상수를 입력하여 발광 강도를 조절합니다. (속도 값이 클 수 있으므로 작은 값으로 스케일링)Particle Color의RGB출력을 두 번째Multiply (Vector)노드의 첫 번째 입력에 연결합니다.- 첫 번째
Multiply (Float)노드의 출력을 두 번째Multiply (Vector)노드의 두 번째 입력(Float)에 연결합니다. - 두 번째
Multiply (Vector)노드의 출력을 머티리얼의Emissive Color입력에 연결합니다.
머티리얼을 저장합니다.
나이아가라 시스템에 머티리얼 적용
NS_BasicSpawn 나이아가라 시스템으로 돌아갑니다.
Sprite Renderer 모듈을 선택하고 Material 속성에 새로 만든 M_VelocityGlow 머티리얼을 할당합니다.
이제 파티클이 위로 솟아오르면서, 속도가 빠를수록 (특히 생성 직후) 더 밝게 빛나고, 정점에 가까워져 속도가 줄어들면 어두워지는 것을 확인할 수 있을 겁니다.
고급 활용 및 고려 사항
- 사용자 정의 파티클 속성: 나이아가라 스크립트에서
Set New or Existing Parameter노드를 통해Particles.MyCustomFloat와 같은 사용자 정의 속성을 생성한 후, 이 이름을Niagara Particle Attribute노드에 정확히 입력하여 머티리얼에서 가져올 수 있습니다. - 데이터 타입 일치:
Niagara Particle Attribute노드에서 가져오는 매개변수의 데이터 타입(Float, Vector, Color 등)과 머티리얼에서 사용하는 데이터 타입이 일치해야 합니다. - 성능: 머티리얼 그래프가 복잡해지면 렌더링 성능에 영향을 줄 수 있습니다. 필요한 만큼만 복잡도를 유지하고, 최적화 기법(예: 불필요한 연산 피하기, 텍스처 압축 등)을 적용하세요.
- 버전 호환성: 언리얼 엔진 버전이 업데이트되면서
Niagara Particle Attribute노드의 이름이나 사용법이 미묘하게 변경될 수 있으므로, 항상 최신 문서를 참조하는 것이 좋습니다.
아래 다이어그램은 나이아가라 속성을 머티리얼로 전달할 때 이름, 타입, 스케일, 비용을 어디서 확인해야 하는지 정리한 것입니다.
커스텀 머티리얼과 통합할 때는 Niagara 속성 이름, 타입, 값 범위가 셰이더 입력과 맞는지 먼저 검증합니다.
커스텀 머티리얼과의 통합은 나이아가라 스크립트에서 계산한 데이터를 머티리얼로 전달해 파티클 외형을 동적으로 조절하는 방식입니다. 시각 품질을 높일 수 있지만, 머티리얼 복잡도와 렌더링 비용을 함께 확인해야 합니다.
커스텀 머티리얼 통합은 머티리얼 파라미터, 바인딩 경로, 렌더 비용, 대체 표현 기준으로 확인합니다.
커스텀 머티리얼과의 통합에서 놓치기 쉬운 기준은 보충 점검 항목으로 다시 확인합니다.