안동민 개발노트

본문 시작

데이터 인터페이스의 기본 개념

데이터 인터페이스가 메시·스켈레탈 메시·스플라인·그리드 정보를 나이아가라 실행 단계에 공급하는 구조를 이해합니다.

지금까지 모듈과 시스템 구성 요소를 익혔다면, 이제 나이아가라의 확장 포인트를 이해할 단계입니다.

이번 절의 핵심은 데이터 인터페이스(Data Interface)입니다.

데이터 인터페이스는 나이아가라와 게임 월드, 블루프린트, C++ 코드, 다른 파티클 시스템 사이를 연결하는 통로 역할을 합니다.

이름에서 알 수 있듯이, 데이터를 인터페이스한다는 것은 나이아가라 시스템 내부에서 사용되는 정보와 외부의 정보를 서로 이해하고 소통할 수 있도록 중개하는 것을 의미합니다.

이를 통해 여러분은 단순히 정해진 패턴으로 움직이는 파티클이 아닌, 게임 상황에 실시간으로 반응하고, 더욱 현실적이며 역동적인 효과를 구현할 수 있게 됩니다.


데이터 인터페이스란 무엇인가요?

데이터 인터페이스(DI)는 모듈이 호출할 함수와 데이터 접근 방식을 제공하는 특수한 데이터 타입입니다. DI 자체와 이를 입력으로 사용하는 모듈은 서로 다릅니다.

이는 나이아가라 스크립팅 언어(노드 그래프)와 외부 데이터 소스 간의 번역기 역할을 한다고 생각하시면 이해하기 쉽습니다.

예를 들어 빗방울 파티클이 바닥에 닿을 때 물웅덩이 효과를 만들고 싶다면, 충돌했다는 정보를 나이아가라가 읽을 수 있어야 합니다.

예를 들어 Collision 모듈은 CPU 추적이나 GPU용 장면 깊이·거리장 같은 지원 경로로 표면을 검사합니다. 직접 스크립트를 만들 때는 Collision Query 등 해당 DI의 함수를 확인합니다. 모든 CPU 질의를 GPU에서도 같은 방식으로 호출할 수 있는 것은 아닙니다.

데이터 인터페이스를 사용하면 다음과 같은 강력한 기능을 구현할 수 있습니다.

  • 게임 월드와의 상호작용: 지형의 높이, 표면의 재질, 주변 오브젝트의 위치나 속성 등 월드 정보를 파티클에 적용할 수 있습니다.
  • 블루프린트/C++ 코드와의 연동: 게임 로직에서 나이아가라 파티클 시스템의 특정 속성을 실시간으로 제어하거나, 반대로 파티클 시스템의 이벤트를 게임 로직으로 전달할 수 있습니다.
  • 다른 나이아가라 시스템과의 연동: 한 나이아가라 시스템의 파티클이 다른 나이아가라 시스템에 영향을 미치도록 할 수 있습니다.
  • 복잡한 데이터 계산: 미리 정의된 복잡한 수학 함수나 패턴을 파티클에 적용할 수 있습니다.

주요 데이터 인터페이스의 종류

나이아가라는 매우 다양한 유형의 데이터 인터페이스를 제공하며, 각각의 인터페이스는 특정 종류의 데이터에 특화되어 있습니다.

여기서는 몇 가지 대표적인 데이터 인터페이스를 예시로 들어 설명하겠습니다.

Niagara Data Interface Static Mesh

스태틱 메시 에셋의 데이터를 나이아가라 시스템에서 활용할 수 있게 합니다.

  • 사용 예시
    • 메시의 표면에 파티클을 스폰하기 (예: 텍스처에서 색상 샘플링, 메시 표면을 따라 흐르는 물).
    • 메시의 정점(Vertex) 위치나 노멀(Normal) 정보를 사용하여 파티클의 초기 위치나 방향을 설정하기.
    • 메시의 크기나 바운딩 박스 정보를 참조하여 파티클 효과의 범위를 조절하기.

Niagara Data Interface Skeletal Mesh

캐릭터와 같은 스켈레탈 메시 에셋의 데이터를 나이아가라 시스템에서 활용할 수 있게 합니다.

  • 사용 예시
    • 캐릭터의 특정 본(Bone)이나 소켓에 파티클을 붙이기 (예: 무기에서 뿜어져 나오는 연기, 발자국 먼지).
    • 캐릭터 애니메이션에 따라 파티클을 동적으로 생성하거나 제어하기 (예: 캐릭터가 달릴 때만 발생하는 발자국 먼지).

Niagara Data Interface Spline

언리얼 엔진의 스플라인 컴포넌트(Spline Component) 데이터를 나이아가라 시스템에서 활용할 수 있게 합니다.

  • 사용 예시
    • 스플라인 경로를 따라 파티클을 이동시키기 (예: 정해진 궤적을 따라 움직이는 마법 주문).
    • 스플라인의 길이나 곡률에 따라 파티클 속성을 변경하기.

Niagara Data Interface Grid2D / Grid3D

2D 또는 3D 그리드 형태의 데이터를 나이아가라 시스템에서 활용할 수 있게 합니다.

이는 주로 유체 시뮬레이션, 볼륨 효과 등 복잡한 계산 기반의 효과에 사용됩니다.

  • 사용 예시
    • 연기, 불, 액체 등 유체 시뮬레이션의 흐름 데이터를 파티클에 적용하기.
    • 특정 영역의 밀도나 온도 정보에 따라 파티클의 움직임을 제어하기.

데이터 인터페이스의 추가 및 활용

DI를 소비하는 기존 모듈을 쓰거나 모듈 그래프에 DI 타입 입력을 만들어 함수를 호출합니다. 처음 값을 정하는 샘플링은 Particle Spawn, 계속 추적하는 샘플링은 Particle Update 등 목적에 맞는 실행 그룹을 선택합니다.

소비 모듈 선택: 메시 위치를 읽으려면 Static Mesh Location처럼 해당 DI를 사용하는 모듈부터 찾습니다. DI 클래스 이름이 곧 스택에 추가할 모듈 이름은 아닙니다.

데이터 소스 지정: 모듈의 DI 입력에서 기본 메시·소스 컴포넌트 등을 지정하거나, 연결할 User DI 파라미터를 선택합니다. 프리뷰와 게임이 같은 소스를 사용하는지 확인합니다.

함수 결과 사용: 사용자 모듈에서는 Map Get으로 DI 입력을 읽고 그 핀에서 지원 함수를 선택합니다. 샘플 위치·노멀 등을 계산한 뒤 Map Set으로 Particles.Position 등 목적 속성에 기록합니다. 위치와 방향의 좌표 공간을 구분합니다.

연결 결과 점검

경계확인할 것
소스비어 있거나 수명이 끝난 컴포넌트를 참조하지 않는가
함수선택한 CPU/GPU 대상과 실행 그룹에서 지원되는가
결과위치·방향의 좌표 공간과 자료형이 맞는가
소비결과를 실제 입자 속성에 쓰고, 아래 모듈이 덮어쓰지 않는가
비용샘플 수·갱신 주기·그리드 해상도가 필요한 수준인가

단순 Float·Vector·Color 값은 User Parameter로도 전달할 수 있습니다. 모든 외부 입력에 별도 DI가 필요한 것은 아닙니다. 공식 DI 그래프 사용 예는 DI 입력에서 함수를 호출하는 연결을 보여줍니다.