컴퓨터 3D 그래픽/언리얼엔진

언리얼 엔진 기반의 VFX (시각효과)의 구성요소와 각 요소의 설명

JongSeok_12 2025. 2. 5. 17:13

Unreal Engine VFX Effect Development Structure (Niagara System & Material)

1. Unreal Engine 개요

Unreal Engine은 Epic Games에서 개발한 고급 게임 엔진으로, VFX(Visual Effects) 개발에 최적화된 다양한 기능을 제공합니다. 이 중 Niagara System과 Material은 VFX 이펙트 제작의 핵심 요소입니다.


2. Niagara System

Niagara System은 Unreal Engine의 차세대 파티클 이펙트 시스템으로, 복잡한 시뮬레이션과 시각 효과를 직관적으로 설계할 수 있습니다.

2.1 System (시스템)

  • 정의: 여러 개의 Emitter를 포함하는 이펙트의 최상위 구조입니다.
  • 기능: Emitter 관리, 전역 속성 설정, 이펙트의 생명 주기 제어를 담당합니다.

2.2 Emitter (에미터)

  • 정의: 파티클을 생성하는 단위입니다.
  • 기능: 파티클 생성, 업데이트, 소멸 조건 정의.
  • 종류: CPU Emitter, GPU Emitter
  • 추가 정보:
    • Emitter Life Cycle (에미터 생명 주기): 에미터의 시작과 종료 시점을 제어하여 이펙트의 지속 시간과 반복 여부를 설정합니다.

2.3 Particle (파티클)

  • 정의: 실제로 화면에 표시되는 시각적 요소입니다.
  • 속성: 위치(Position), 속도(Velocity), 크기(Size), 색상(Color), 회전(Rotation)
  • 추가 정보:
    • Particle Types (파티클 유형): CPU 파티클과 GPU 파티클로 나뉘며, 성능과 기능이 다릅니다.

2.4 Module (모듈)

  • 정의: Emitter와 Particle의 동작을 정의하는 구성 요소입니다.
  • 종류:
    • Spawn Module (생성 모듈): 파티클 생성 로직 정의
    • Update Module (업데이트 모듈): 파티클 업데이트 로직 정의
    • Render Module (렌더 모듈): 렌더링 방식 설정
    • Force Module (힘 모듈): 파티클에 물리적인 힘 적용
    • Collision Module (충돌 모듈): 파티클의 충돌 감지 및 반응 설정
    • Attribute Module (속성 모듈): 파티클 속성의 동적 변경 지원
    • Custom Modules (사용자 정의 모듈): 사용자가 직접 작성하여 고유한 파티클 동작 정의 가능

2.5 Script (스크립트)

  • 정의: Niagara의 동작을 커스터마이징하기 위한 코드 블록입니다.
  • 종류:
    • Emitter Script (에미터 스크립트): 에미터의 동작 제어
    • Particle Script (파티클 스크립트): 파티클의 동작 제어

2.6 Data Interface (데이터 인터페이스)

  • 정의: Niagara와 외부 데이터(곡선, 메시, 텍스처 등) 간의 데이터 교환을 처리합니다.
  • 기능: 실제 환경 데이터 기반의 이펙트 생성 가능
  • 종류:
    • Curve Data Interface (곡선 데이터 인터페이스)
    • Mesh Data Interface (메시 데이터 인터페이스)
    • Texture Data Interface (텍스처 데이터 인터페이스)
    • Actor Data Interface (액터 데이터 인터페이스)
    • Input Data Interface (입력 데이터 인터페이스)
    • Audio Data Interface (오디오 데이터 인터페이스): 오디오 데이터를 활용하여 파티클 동작과 동기화 가능

2.7 Renderer (렌더러)

  • 정의: 파티클의 시각적 표현 방식을 설정합니다.
  • 종류: Sprite, Mesh, Ribbon, Light Renderer

3. Material System

Material은 3D 객체의 시각적 특성을 정의하는 요소로, 질감, 반사, 투명도 등을 설정합니다.

3.1 Material (머티리얼)

  • 정의: 표면의 시각적 특성을 정의하는 셰이더 그래프입니다.
  • 속성: Base Color(베이스 컬러), Metallic(금속성), Roughness(거칠기), Normal(노멀), Emission(발광), Opacity(투명도), Refraction(굴절)
  • 추가 정보:
    • Two-Sided (양면 렌더링): 머티리얼이 양면에서 렌더링될지 여부 설정

3.2 Material Instance (머티리얼 인스턴스)

  • 정의: 기존 Material의 속성을 재사용하면서 일부 파라미터만 변경하여 새로운 Material 생성.
  • 장점: 성능 최적화, 빠른 테스트 및 수정 가능

3.3 Material Function (머티리얼 함수)

  • 정의: Material 그래프 내에서 재사용 가능한 노드 집합입니다.
  • 기능: 복잡한 그래프를 간소화하고 효율적인 관리 가능

3.4 Texture (텍스처)

  • 정의: Material에 적용되는 2D 이미지로, 표면의 세부 질감을 제공합니다.
  • 종류: Diffuse, Normal, Roughness, Specular 등

3.5 Parameter (파라미터)

  • 정의: Material 속성을 동적으로 조정할 수 있도록 하는 변수입니다.
  • 종류: Scalar, Vector, Texture Parameter
  • 추가 정보:
    • Static Switch Parameter (정적 스위치 파라미터): 컴파일 시점에 기능 활성화/비활성화 가능

3.6 Shading Model (셰이딩 모델)

  • 정의: 빛과 표면의 상호작용 방식을 정의합니다.
  • 종류: Default Lit, Unlit, Subsurface, Clear Coat, Cloth(천), Hair(머리카락)
  • 추가 정보:
    • Single Layer Water (단일 레이어 물): 얕은 물 표면 표현을 위한 셰이딩 모델

3.7 Layered Material (레이어드 머티리얼)

  • 정의: 여러 Material을 결합하여 복잡한 표면 효과를 생성합니다.
  • 기능: 페인트, 먼지, 기상 효과 등의 레이어링 가능
  • 활용: 마스크 텍스처를 사용하여 특정 영역에만 Material 적용, 블렌딩 모드로 다양한 방식의 혼합 가능

4. Performance Optimization (성능 최적화)

복잡한 이펙트나 머티리얼은 시스템 성능에 영향을 줄 수 있습니다. Unreal Engine의 프로파일링 도구를 활용하여 이펙트를 최적화하고 효율성을 유지하는 것이 중요합니다.


5. Visualization Map (Tree Map)

Unreal Engine
├── Niagara System (나이아가라 시스템)
│   ├── System (시스템)
│   │   ├── Emitter (에미터)
│   │   │   ├── Particle (파티클)
│   │   │   ├── Module (모듈)
│   │   │   │   ├── Spawn Module (생성 모듈)
│   │   │   │   ├── Update Module (업데이트 모듈)
│   │   │   │   ├── Render Module (렌더 모듈)
│   │   │   │   ├── Force Module (힘 모듈)
│   │   │   │   ├── Collision Module (충돌 모듈)
│   │   │   │   ├── Attribute Module (속성 모듈)
│   │   │   │   └── Custom Module (사용자 정의 모듈)
│   │   │   ├── Script (스크립트)
│   │   │   │   ├── Emitter Script (에미터 스크립트)
│   │   │   │   └── Particle Script (파티클 스크립트)
│   │   │   └── Data Interface (데이터 인터페이스)
│   │   │       ├── Curve Data Interface (곡선 데이터 인터페이스)
│   │   │       ├── Mesh Data Interface (메시 데이터 인터페이스)
│   │   │       ├── Texture Data Interface (텍스처 데이터 인터페이스)
│   │   │       ├── Actor Data Interface (액터 데이터 인터페이스)
│   │   │       ├── Input Data Interface (입력 데이터 인터페이스)
│   │   │       └── Audio Data Interface (오디오 데이터 인터페이스)
│   │   └── Renderer (렌더러)
│   │       ├── Sprite (스프라이트)
│   │       ├── Mesh (메시)
│   │       ├── Ribbon (리본)
│   │       └── Light Renderer (라이트 렌더러)
└── Material System (머티리얼 시스템)
    ├── Material (머티리얼)
    │   ├── Base Color (베이스 컬러)
    │   ├── Metallic (금속성)
    │   ├── Roughness (거칠기)
    │   ├── Normal (노멀)
    │   ├── Emission (발광)
    │   ├── Opacity (투명도)
    │   ├── Refraction (굴절)
    │   └── Two-Sided (양면 렌더링)
    ├── Material Instance (머티리얼 인스턴스)
    ├── Material Function (머티리얼 함수)
    ├── Texture (텍스처)
    ├── Parameter (파라미터)
    │   ├── Scalar (스칼라)
    │   ├── Vector (벡터)
    │   ├── Texture Parameter (텍스처 파라미터)
    │   └── Static Switch Parameter (정적 스위치 파라미터)
    ├── Shading Model (셰이딩 모델)
    │   ├── Default Lit (기본 라이팅)
    │   ├── Unlit (비조명)
    │   ├── Subsurface (서브서피스)
    │   ├── Clear Coat (클리어 코트)
    │   ├── Cloth (천)
    │   ├── Hair (머리카락)
    │   └── Single Layer Water (단일 레이어 물)
    └── Layered Material (레이어드 머티리얼)
        ├── Mask Texture Application (마스크 텍스처 적용)
        └── Blending Modes (블렌딩 모드)