안동민 개발노트

본문 시작

기본 머티리얼 설정과 적용

파티클용 머티리얼의 블렌드 모드·셰이딩 모델·Particle Color·텍스처를 설정해 기본 불꽃 표현을 완성합니다.

나이아가라 파티클 시스템에서 아무리 복잡하고 정교한 계산을 통해 파티클의 움직임을 제어하더라도, 이 파티클들이 우리의 눈에 어떻게 보일지를 결정할 때 머티리얼(Material)이 중요한 역할을 합니다. 렌더러가 만든 형태·방향·크기와 머티리얼의 픽셀 표현이 함께 최종 모습을 만듭니다.

머티리얼은 파티클의 색상, 질감, 투명도, 그리고 빛과의 상호작용 방식 등 픽셀 표현을 정의하는 핵심 요소입니다.

나이아가라에서 파티클을 렌더링하기 위한 가장 기본적인 단계는 바로 적절한 머티리얼을 설정하고 적용하는 것입니다.

이 절에서는 나이아가라 파티클에 머티리얼을 적용하는 방법과, 파티클 시스템에 최적화된 머티리얼을 만드는 기본 원칙에 대해 알아보겠습니다.


머티리얼이란 무엇인가요?

언리얼 엔진에서 머티리얼은 3D 오브젝트나 파티클의 표면이 빛에 어떻게 반응할지를 결정하는 데이터 에셋입니다.

이는 색상(Base Color), 거칠기(Roughness), 금속성(Metallic), 노멀(Normal) 맵, 투명도(Opacity) 등 다양한 속성을 포함하며, 최종적으로 화면에 렌더링될 픽셀의 모습을 정의합니다.

나이아가라 파티클의 경우, 대부분 2D 스프라이트 형태로 렌더링되므로, 주로 텍스처 이미지와 투명도를 다루는 머티리얼이 사용됩니다.


나이아가라에 머티리얼 적용하기

파티클에 머티리얼을 적용하는 과정은 간단합니다.

렌더러 모듈 선택: 나이아가라 에디터의 개요(Overview) 패널에서 이미터 아래의 렌더(Render) 섹션에 있는 렌더러 모듈 (가장 흔하게는 Sprite Renderer)을 선택합니다.

머티리얼 할당: 디테일(Details) 패널에서 Material 속성을 찾습니다.

Material 속성 옆의 드롭다운 메뉴를 클릭하거나 검색 버튼(돋보기 아이콘)을 클릭합니다.

콘텐츠 브라우저에서 사용할 머티리얼 에셋을 검색하여 선택하거나, 드롭다운 목록에서 기존 머티리얼을 찾아 할당합니다.

머티리얼을 할당하는 즉시 뷰포트에서 파티클의 시각적인 변화를 확인할 수 있습니다.


파티클용 머티리얼 제작 기본 원칙

나이아가라 파티클에 최적화된 머티리얼을 만들 때는 몇 가지 중요한 원칙을 고려해야 합니다.

블렌드 모드 (Blend Mode)

머티리얼의 블렌드 모드는 렌더링 시 파티클이 배경과 어떻게 섞일지를 결정하는 가장 중요한 설정입니다.

대부분의 파티클 효과는 투명도를 사용하므로, 다음 세 가지 모드 중 하나를 선택하게 됩니다.

  • Translucent (반투명)
    • 특징: 파티클이 반투명하게 렌더링되어 배경이 비쳐 보입니다. 연기, 안개, 구름, 빛의 잔상 등 부드럽고 몽환적인 효과에 적합합니다.
    • 장점: 가장 자연스러운 투명도 표현이 가능합니다.
    • 단점: 렌더링 순서에 민감하며, 복잡한 투명 객체들이 겹칠 경우 시각적인 아티팩트(Sorting Issue)가 발생할 수 있습니다. 오버드로우(Overdraw) 비용이 높아 성능에 부담을 줄 수 있습니다.
    • 설정: 머티리얼 에디터의 Details 패널에서 Material 섹션의 Blend Mode를 Translucent로 설정합니다. Opacity 핀에 투명도 정보를 연결합니다. Opacity Mask는 Masked 모드의 입력입니다.
  • Additive (덧셈)
    • 특징: 파티클의 색상이 배경 위에 더해지면서 렌더링됩니다. 검은색은 투명해지고, 밝은 색상은 강하게 빛나 보입니다. 불꽃, 스파크, 에너지 볼, 레이저 등 밝고 발광하는 효과에 주로 사용됩니다.
    • 장점: 렌더링 순서 문제가 거의 없으며, 강렬한 발광 효과를 쉽게 연출할 수 있습니다. 다만 큰 면적과 중첩의 오버드로우는 남으므로 Translucent보다 항상 빠른 것은 아닙니다.
    • 단점: 색상이 어두워지거나 어두운 텍스처를 사용할 경우 효과가 잘 보이지 않을 수 있습니다.
    • 설정: Blend Mode를 Additive로 설정합니다. Emissive Color 핀에 색상 정보를 연결합니다. Unlit 셰이딩에서는 Base Color 입력이 사용되지 않습니다.
  • Masked (마스크)
    • 특징: 이미지의 알파 채널을 기준으로 완전히 불투명하거나 완전히 투명하게 렌더링됩니다. 부분적으로 투명한 중간 단계는 없습니다.
    • 장점: 렌더링 순서 문제가 없으며, 투명/불투명 영역이 명확하여 성능 부담이 적습니다.
    • 단점: 부드러운 가장자리나 반투명 표현이 불가능합니다.
    • 설정: Blend Mode를 Masked로 설정합니다. Opacity Mask 핀에 투명도를 결정할 그레이스케일 이미지나 계산 결과를 연결합니다. Opacity Mask Clip Value를 조절하여 투명/불투명 경계를 조절할 수 있습니다.

셰이딩 모델 (Shading Model)

대부분의 파티클 머티리얼은 빛의 영향을 받지 않도록 Unlit (언릿) 셰이딩 모델을 사용합니다.

Unlit은 자체적으로 빛을 발하는 것처럼 보이게 하며, 표면의 직접 조명을 계산하지 않습니다. 그래도 노출·톤매핑·안개 등의 영향을 받을 수 있고, Emissive가 밝다고 주변을 실제로 비추는 광원이 자동 생성되는 것은 아닙니다.

  • 설정: 머티리얼 에디터의 Details 패널에서 Material 섹션의 Shading Model을 Unlit으로 설정합니다.

파티클 컬러 노드 (Particle Color)

나이아가라 시스템에서 파티클의 색상을 동적으로 제어하려면, 머티리얼 내에서 Particle Color 노드를 사용해야 합니다.

이 노드는 Renderer의 Color Binding이 전달한 RGB와 Alpha를 읽습니다. 기본 바인딩은 Particles.Color이며 다른 속성으로 바꿀 수도 있습니다. Particle Color는 읽는 출력 노드이므로 텍스처를 넣는 RGB/Alpha 입력 핀이 없습니다.

  • 사용법: 머티리얼 에디터에서 우클릭하고 Particle Color를 검색하여 추가합니다.
  • 연결: Particle Color 노드의 RGB 출력은 머티리얼의 Base Color 또는 Emissive Color 입력에 연결하고, Alpha 출력은 Opacity 또는 Opacity Mask 입력에 연결합니다.
  • 활용: 나이아가라에서 Initialize Particle이나 Scale Color 모듈을 통해 파티클의 색상을 변경하면, Particle Color 노드를 통해 이 변경 사항이 머티리얼에 반영되어 최종 렌더링에 적용됩니다.

텍스처 (Texture)

파티클의 모양과 질감을 결정하는 데 사용됩니다.

보통은 알파 채널이 있는 텍스처(TGA, PNG 등)를 사용합니다.

  • 팁: 원본 파일에 알파 채널이 있는지, Texture Editor에서 알파가 보이는지, Compress Without Alpha가 꺼져 있는지 확인합니다. 일반 컬러 텍스처는 알파를 지원하는 기본 압축 형식을 사용할 수 있습니다. 알파 보존만을 위해 용도가 다른 VectorDisplacementmap이나 무압축 UI 형식으로 바꾸지 말고 대상 플랫폼의 실제 포맷과 품질을 확인합니다.

직접 해보기: 간단한 불꽃 머티리얼 만들기

간단한 Additive 블렌드 모드를 사용하는 불꽃 머티리얼을 만들어 보겠습니다.

새 머티리얼 생성: 콘텐츠 브라우저에서 우클릭 > Material을 선택하고 M_SimpleFire와 같이 이름을 지정합니다.

더블 클릭하여 머티리얼 에디터를 엽니다.

블렌드 모드 설정
  • Details 패널에서 Material 섹션의 Blend Mode를 Additive로 변경합니다.
  • Shading Model을 Unlit으로 변경합니다.

파티클 컬러 노드 추가: 머티리얼 그래프에서 우클릭하고 Particle Color를 검색하여 추가합니다.

색상 및 투명도 연결
  • Particle Color 노드의 RGB 출력 핀을 Emissive Color 입력 핀에 연결합니다.
  • Particle Color 노드의 Alpha 출력 핀을 Opacity 입력 핀에 연결합니다.
기본 불꽃 텍스처 추가 (선택 사항)
  • 프로젝트에 있는 단일 프레임 불꽃/연기 텍스처를 그래프에 추가합니다. 예제 에셋 이름과 설치 여부는 프로젝트마다 다릅니다. 스프라이트 시트라면 Sub Image Size와 Sub Image Index, UV 설정도 따로 필요합니다.
  • Texture Sample.RGB × Particle Color.RGB의 Multiply 결과를 Emissive Color에 연결합니다.
  • Texture Sample.A × Particle Color.A의 별도 Multiply 결과를 Opacity에 연결합니다. 앞 단계의 직접 연결은 이 두 Multiply 출력으로 교체합니다.

저장: 머티리얼을 저장합니다.

나이아가라 시스템에 적용: 이전에 만든 NS_BasicSpawn (또는 새 시스템)을 열고, Sprite Renderer 모듈의 Material 속성에 M_SimpleFire를 할당합니다.

나이아가라 에디터에서 Initialize Particle 또는 Scale Color 모듈을 사용하여 파티클의 색상을 주황색이나 노란색 계열로 변경해보고, 수명에 따라 알파 값을 조절하여 사라지도록 하면 더욱 불꽃 같은 효과를 볼 수 있습니다.

색상과 알파의 독립적인 머티리얼 연결
색상과 알파의 독립적인 머티리얼 연결텍스처 RGB와 Particle Color RGB를 곱해 Emissive로, 두 Alpha를 곱해 Opacity로 전달합니다.RGBTexture RGBParticle Color RGBAlphaTexture AParticle Color A곱하기곱하기Emissive보이는 색 · 발광Opacity덧셈 기여의 배율

Additive + Unlit 예제입니다. Particle Color와 Texture Sample은 읽는 출력 노드이며, Multiply 결과가 머티리얼 입력으로 들어갑니다.

텍스처를 넣지 않은 스프라이트는 사각형 전체가 보일 수 있습니다. 밝고 어두운 배경에서 실루엣과 알파 페이드를 비교하고, 보이는 밝기와 주변 조명 기여를 별도로 확인합니다.