icon
6장 : 나이아가라 렌더링 기본 기법

커스텀 머티리얼과의 통합


이전 절에서 우리는 Sprite Renderer와 기본적인 파티클 머티리얼 설정에 대해 알아보았습니다. 이제 나이아가라 시스템의 렌더링 파이프라인에서 가장 강력한 기능 중 하나인 커스텀 머티리얼과의 통합에 대해 자세히 살펴보겠습니다. 단순히 색상과 텍스처를 입히는 것을 넘어, 나이아가라 시스템에서 계산된 복잡한 데이터를 머티리얼로 직접 전달하여 파티클의 시각적인 표현을 훨씬 더 풍부하고 동적으로 만드는 방법을 배우게 될 것입니다.

이 기능은 파티클이 단순한 2D 스프라이트를 넘어, 빛에 반응하거나, 특수 셰이더 효과를 적용받거나, 주변 환경에 따라 다르게 렌더링되는 등 여러분의 상상력을 현실로 만들 수 있는 핵심적인 도구입니다.


왜 커스텀 머티리얼과 통합해야 할까요?

기본적인 Particle Color 노드만으로는 파티클의 색상과 알파값만 제어할 수 있습니다. 하지만 나이아가라 시스템은 파티클마다 수많은 속성(예: Velocity, SpriteSize, RandomSeed, CustomFloat, CustomVector)을 가지고 있습니다. 커스텀 머티리얼과의 통합은 이러한 파티클 개별의 동적인 데이터를 머티리얼 그래프로 가져와서, 파티클의 렌더링 결과에 직접 영향을 미치게 하는 것을 의미합니다.

이를 통해 다음과 같은 고급 렌더링 기법을 구현할 수 있습니다.

  • 속도에 따른 밝기/색상 변화: 파티클의 속도 크기에 비례하여 발광 강도를 조절하거나 색상을 변경합니다.
  • 충돌 지점의 특수 효과: 파티클이 충돌한 지점의 UV 좌표나 노멀 정보를 머티리얼로 전달하여 충돌 이펙트를 섬세하게 제어합니다.
  • 임의의 데이터 전달: 나이아가라 스크립트에서 계산된 사용자 정의 FloatVector 값을 머티리얼로 전달하여, 셰이더 내부의 복잡한 논리(예: 특정 임계값을 넘으면 다른 텍스처 사용)를 구동합니다.
  • 노이즈나 패턴 조절: 파티클마다 다른 노이즈 시드(Seed) 값을 머티리얼로 전달하여 각 파티클의 텍스처 패턴을 미묘하게 다르게 만듭니다.

커스텀 머티리얼 통합의 핵심: Niagara Particle Attribute 노드

커스텀 머티리얼에서 나이아가라 파티클의 속성을 가져오는 가장 중요한 노드는 바로 Niagara Particle Attribute 노드입니다. 이 노드는 나이아가라 파티클 시스템의 특정 매개변수(Parameter) 값을 머티리얼 그래프로 가져오는 역할을 합니다.

Niagara Particle Attribute 노드

  1. 머티리얼 에디터 열기: 나이아가라 시스템에 할당된 머티리얼을 더블 클릭하여 머티리얼 에디터를 엽니다.
  2. 노드 추가: 머티리얼 그래프의 빈 공간에 마우스 우클릭하고 Niagara Particle Attribute를 검색하여 추가합니다.
  3. 매개변수 선택: 추가된 Niagara Particle Attribute 노드를 선택합니다. 디테일(Details) 패널에서 Parameter Name 속성을 찾습니다.
  4. Parameter Name 드롭다운 메뉴를 클릭하거나 직접 입력하여, 가져오고 싶은 나이아가라 파티클 속성 매개변수의 정확한 이름을 입력합니다.
    • 예시
      • Particles.Velocity (파티클의 속도 벡터)
      • Particles.SpriteSize (파티클의 스프라이트 크기 벡터)
      • Particles.NormalizedAge (파티클의 정규화된 수명)
      • Particles.Lifetime (파티클의 총 수명)
      • Particles.Position (파티클의 월드 위치)
      • 사용자 정의 매개변수: 나이아가라 스크립트에서 Set New or Existing Parameter 노드를 통해 정의한 Particles.MyCustomFloatParticles.MyCustomVector와 같은 사용자 정의 속성도 가져올 수 있습니다.
  5. 출력 연결: Niagara Particle Attribute 노드는 선택된 매개변수의 값을 출력 핀으로 내보냅니다. 이 출력 핀을 머티리얼 그래프 내의 다른 연산 노드나 머티리얼의 입력(예: Emissive Color, Roughness)에 연결하여 시각적인 효과를 만듭니다.

실제 예시: 파티클 속도에 따른 발광 강도 조절

파티클의 속도가 빠를수록 더 밝게 빛나도록 만들어 보겠습니다.

나이아가라 시스템 설정

  1. 이전에 만든 NS_BasicSpawn 시스템을 엽니다.
  2. 이미터에 Spawn Rate (값: 100 정도), Initialize Particle (Lifetime: 1.02.0, Sprite Size: 50 정도), Add Velocity (Z: 200500 정도), Solve Forces and Velocity 모듈이 있는지 확인합니다.
  3. Particle Update 섹션에 Add Velocity가 파티클을 위로 솟아오르게 하고 있는지 확인합니다.
  4. Initialize Particle 모듈에서 Color를 흰색 (R:1, G:1, B:1, A:1)으로 설정합니다. (Scale Color 모듈이 있다면 잠시 비활성화하거나 제거합니다.)

커스텀 머티리얼 생성 및 설정

  1. 콘텐츠 브라우저에서 새 머티리얼을 만들고 M_VelocityGlow와 같이 이름을 지정합니다. 더블 클릭하여 머티리얼 에디터를 엽니다.

  2. Details 패널에서 Blend ModeAdditive 로, Shading ModelUnlit 으로 설정합니다.

  3. 머티리얼 그래프에 다음 노드를 추가합니다.

    • Particle Color 노드 (파티클의 기본 색상 및 알파를 가져옴)
    • Niagara Particle Attribute 노드 (이름: Particles.Velocity)
    • Vector Length 노드 (Vector Velocity의 길이를 계산하여 속도 크기를 얻음)
    • Multiply (Float * Float) 노드 (속도 크기에 곱하여 발광 강도를 조절)
    • Multiply (Vector * Float) 노드 (Particle ColorRGB에 발광 강도를 곱함)
  4. 노드 연결

    • Particle ColorAlpha 출력을 머티리얼의 Opacity 입력에 연결합니다.
    • Niagara Particle Attribute (Particles.Velocity)의 출력을 Vector Length 노드의 입력에 연결합니다.
    • Vector Length의 출력을 첫 번째 Multiply (Float) 노드의 입력에 연결합니다. 이 Multiply 노드의 두 번째 입력에는 0.01 과 같은 작은 상수를 입력하여 발광 강도를 조절합니다. (속도 값이 클 수 있으므로 작은 값으로 스케일링)
    • Particle ColorRGB 출력을 두 번째 Multiply (Vector) 노드의 첫 번째 입력에 연결합니다.
    • 첫 번째 Multiply (Float) 노드의 출력을 두 번째 Multiply (Vector) 노드의 두 번째 입력(Float)에 연결합니다.
    • 두 번째 Multiply (Vector) 노드의 출력을 머티리얼의 Emissive Color 입력에 연결합니다.
  5. 머티리얼을 저장합니다.

나이아가라 시스템에 머티리얼 적용

  1. NS_BasicSpawn 나이아가라 시스템으로 돌아갑니다.
  2. Sprite Renderer 모듈을 선택하고 Material 속성에 새로 만든 M_VelocityGlow 머티리얼을 할당합니다.

이제 파티클이 위로 솟아오르면서, 속도가 빠를수록 (특히 생성 직후) 더 밝게 빛나고, 정점에 가까워져 속도가 줄어들면 어두워지는 것을 확인할 수 있을 겁니다.


고급 활용 및 고려 사항

  • 사용자 정의 파티클 속성: 나이아가라 스크립트에서 Set New or Existing Parameter 노드를 통해 Particles.MyCustomFloat와 같은 사용자 정의 속성을 생성한 후, 이 이름을 Niagara Particle Attribute 노드에 정확히 입력하여 머티리얼에서 가져올 수 있습니다.
  • 데이터 타입 일치: Niagara Particle Attribute 노드에서 가져오는 매개변수의 데이터 타입(Float, Vector, Color 등)과 머티리얼에서 사용하는 데이터 타입이 일치해야 합니다.
  • 성능: 머티리얼 그래프가 복잡해지면 렌더링 성능에 영향을 줄 수 있습니다. 필요한 만큼만 복잡도를 유지하고, 최적화 기법(예: 불필요한 연산 피하기, 텍스처 압축 등)을 적용하세요.
  • 버전 호환성: 언리얼 엔진 버전이 업데이트되면서 Niagara Particle Attribute 노드의 이름이나 사용법이 미묘하게 변경될 수 있으므로, 항상 최신 문서를 참조하는 것이 좋습니다.

커스텀 머티리얼과의 통합은 나이아가라 파티클 효과의 시각적인 품질을 비약적으로 향상시킬 수 있는 강력한 기능입니다. 나이아가라 스크립트에서 계산된 데이터를 머티리얼로 보내 파티클의 외형을 동적으로 조절함으로써, 여러분은 단순한 시뮬레이션을 넘어선 예술적인 시각 효과를 창조할 수 있을 것입니다.