나이아가라 핵심 개념

이 페이지에서는 나이아가라 이면에 담긴 핵심 개념과 디자인 철학에 대해 설명하여 나이아가라의 비주얼 이펙트 시스템에 대한 이해를 돕습니다.

Windows
MacOS
Linux

나이아가라 디자인 철학

언리얼 엔진의 비주얼 이펙트 기능을 재편한 이유

언리얼 엔진은 사용자 기반을 확장하고 있으며, 이제는 게임 개발 영역 이외에도 다양한 산업에서 사용되고 있습니다. 예를 들면 다음과 같은 산업에서 활용되고 있습니다.

  • 건축 시각화

  • 자동차 디자인 등의 산업 디자인

  • 가상 TV 및 영화 제작

언리얼 엔진 사용자들은 디자인 전공 학생부터 소규모 인디 개발자, 대형 전문 스튜디오 팀, 게임 산업 외의 개인과 회사에 이르기까지 그 어느 때보다도 다양해지고 있습니다. 엔진이 계속 개선되고 향상됨에 따라 에픽 개발자들은 언리얼 엔진이 활용되는 산업 전체에 대해 완벽하게 이해하지는 못합니다. 언리얼 엔진은 산업 전반에서 모든 사용자들이 사용할 수 있는 비주얼 이펙트(VFX) 시스템을 만들고자 합니다.

캐스케이드 장단점

캐스케이드는 언리얼 엔진이 몇 년 간 사용해 온 VFX 시스템입니다. 캐스케이드의 장점은 다음과 같습니다.

  • 캐스케이드는 비헤이비어를 추가할 때 빠르고, 캐스케이드 모듈은 서로 효율적으로 계층을 이루고 스택을 지정하며 인터랙션을 수행합니다.

  • 기술 전문가가 아닌 아티스트도 다양하게 제어할 수 있으며, 일반적인 비헤이비어 툴세트를 사용할 수 있습니다.

  • 스택 패러다임은 한 번에 많은 정보를 제공할 수 있는 기능을 갖추고 있습니다.

하지만 캐스케이드에는 몇 가지 단점도 있습니다.

  • 캐스케이드 기능은 고정적입니다. 기능 변경, 추가 또는 제거는 프로그래머만 할 수 있습니다.

  • 시스템에 항목이 추가되면 파티클 페이로드가 증가합니다.

  • 파티클 시스템과 엔진의 나머지 부분 간 데이터 공유가 거의 불가능합니다.

  • 이벤트가 제한적이고 번거롭습니다.

  • CPU와 GPU 시뮬레이션이 매우 다릅니다.

새로운 VFX 시스템의 목표

앞서 말씀드린 캐스케이드의 단점을 없앨 수 있는 새로운 요소를 포함하면서도 캐스케이드의 이점과 장점을 그대로 유지하는 새로운 시스템을 만들고자 했습니다. 이러한 배경을 토대로 새로운 VFX 시스템의 목표는 다음과 같습니다.

  • 아티스트가 직접 모든 것을 제어

  • 어떤 측면에서든 프로그래밍과 커스터마이징 가능

  • 디버깅, 시각화 및 퍼포먼스에 더 효율적인 도구 제공

  • 언리얼 엔진 4의 다른 부분이나 외부 소스에서 가져온 데이터 지원

  • 사용자 편의 향상

나이아가라가 목표를 달성하는 방법

데이터 공유

전체 사용자 제어는 데이터에 대한 액세스부터 시작됩니다. 사용자가 언리얼 엔진에 포함된 다른 부분의 데이터뿐 아니라 다른 애플리케이션의 데이터도 사용할 수 있기를 바랍니다. 그래서 사용자에게 모든 것을 공개하기로 결정했습니다.

파티클 페이로드

사용자에게 모든 데이터를 공개하기 위해서는 사용자가 데이터를 사용하는 방식을 정해야 합니다.네임스페이스는 계층형 데이터를 위한 컨테이너를 제공합니다. 예를 들어 Emitter.Age에는 이미터의 데이터가 포함되어 있고, Particle.Position에는 파티클의 데이터가 포함되어 있습니다. 파라미터 맵은 파티클의 어트리뷰트 모두를 수행하는 파티클 페이로드입니다. 이 결과로 모든 것이 옵션으로 제공됩니다.

다양한 데이터 유형 추가 가능

다양한 데이터 유형을 파티클 파라미터로 추가할 수 있습니다. 복잡한 구조체, 트랜스폼 매트릭스 또는 부울 플래그를 추가할 수 있습니다. 이들 뿐 아니라 다른 데이터 유형도 추가할 수 있으며 이펙트 시뮬레이션에 사용할 수 있습니다.

그래프 패러다임과 스택 패러다임의 결합

예를 들어 캐스케이드에서 사용되는 스택 패러다임과, 블루프린트에서 사용되는 그래프 패러다임 둘 다 이점이 있습니다. 스택은 모듈 방식의 비헤이비어와 가독성을 제공합니다. 그래프는 비헤이비어를 좀 더 제어할 수 있습니다. 새로운 이펙트 시스템은 이 패러다임 둘의 이점을 결합해 놓았습니다.

나이아가라의 하이브리드 구조체를 위한 계층구조

모듈

모듈은 그래프 패러다임으로 작동합니다. 스크립트 에디터에서 비주얼 노드 그래프를 사용하여 HLSL로 모듈을 생성할 수 있습니다. 이 모듈은 캐스케이드의 동작과 상응합니다. 일반적인 데이터에 대응하며, 비헤이비어를 캡슐화하고, 다른 모듈과 함께 스택을 이룹니다.

이미터

이미터는 스택 패러다임으로 작동하며, 모듈용 컨테이너 역할을 하며, 여러 이펙트를 생성하기 위해 함께 스택을 이룹니다. 이미터는 단일 용도이지만 재사용할 수도 있습니다. 파라미터는 모듈의 이미터 레벨까지 전송되지만, 이미터에서 모듈과 파라미터를 수정할 수 있습니다.

시스템

이미터, 시스템은 스택 패러다임으로 작동하지만 시퀀서 타임라인에서도 작동합니다. 이 타임라인을 사용하면 시스템에서 이미터가 동작하는 방법을 제어할 수 있습니다. 시스템은 이미터에 대한 컨테이너입니다. 시스템은 이러한 이미터를 하나의 이펙트로 결합합니다. 나이아가라 에디터에서 시스템을 편집할 때 시스템에 있는 파라미터, 모듈 또는 이미터를 수정하거나 오버라이드할 수 있습니다.

나이아가라 선택 스택 및 스택 그룹

나이아가라에서 파티클 시뮬레이션은 스택 상단에서 하단까지의 스택-시뮬레이션 플로로 작동하며, 모듈을 순서대로 실행합니다. 결정적으로 모든 모듈은 모듈이 실행될 때 설명하는 그룹에 할당됩니다. 예를 들어 파티클을 초기화하거나, 파티클이 스폰될 때 동작하는 모듈은 파티클 스폰(Particle Spawn) 그룹에 있습니다.

각 그룹 내에는 시스템의 라이프 사이클에서 특정 지점에서 호출되는 여러 개의 스테이지(stages) 가 있을 수 있습니다. 이미터, 시스템, 파티클 모두 기본적으로 스폰(Spawn)업데이트(Update) 스테이지가 있습니다. 스폰 스테이지는 그룹이 존재하는 맨 처음 프레임에서 호출됩니다. 예를 들어 시스템이 레벨에서 처음 인스턴스화되고 활성화될 때 시스템은 스폰 스테이지를 호출합니다. 파티클은 이미터가 파티클을 방출할 때마다 스폰 스테이지를 호출하고, 새로 생성되는 각 파티클에 대해 스폰 명령이 실행됩니다. 업데이트 스테이지는 시스템, 이미터 또는 파티클이 활성 상태인 모든 프레임에서 호출됩니다.

또한 이벤트(Events)시뮬레이션 스테이지(Simulation Stages) 와 같이 고급 스테이지가 있어 스폰이나 업데이트 플로에 추가할 수 있습니다. 이벤트(Events) 는 파티클이 새로운 이벤트를 생성하고 이미터가 해당 이벤트를 처리하도록 설정될 때마다 호출됩니다. 가능한 경우, 이벤트 핸들러 스테이지는 동일한 프레임에서 발생하지만 원래 이벤트 다음에 발생합니다. 시뮬레이션 스테이지(Simulation Stages) 는 고급 GPU 기능입니다. 이 기능을 사용하면 여러 스폰 및 업데이트 스테이지가 순차적으로 발생하며, 이 기능은 플루이드 시뮬레이션과 같은 복잡한 구조체를 구성하는 데 유용합니다.

모든 모듈은 항목이지만 모든 항목이 모듈인 것은 아닙니다. 모듈(Modules) 은 사용자가 생성할 수 있는 편집 가능한 애셋입니다. 항목(Items) 은 사용자가 생성할 수 없는 시스템이나 이미터의 일부를 가리킵니다. 항목의 예로는 시스템 프로퍼티, 이미터 프로퍼티, 렌더러 등이 있습니다.

스테이지, 그룹, 네임스페이스 및 데이터 캡슐화

각 모듈을 그룹(group)(시스템, 이미터 또는 파티클)의 스테이지(stage)(업데이트, 스폰, 이벤트 또는 시뮬레이션)에 추가함으로써 모듈이 실행되는 데이터뿐 아니라 모듈의 실행 시기를 제어할 수 있습니다. 스택 그룹은 해당 그룹의 모듈이 읽거나 쓸 수 있는 데이터를 정의하는 네임스페이스(Namespaces) 와 연결되어 있습니다.

예를 들어 시스템(System) 그룹에서 실행되는 모듈은 시스템 네임스페이스에 있는 파라미터를 읽고 쓸 수 있지만 엔진이나 사용자 네임스페이스에 속한 파라미터는 읽기만 가능합니다. 스택 실행이 시스템 그룹에서 이미터 그룹으로 진행되면 이미터(Emitter) 그룹에서 실행되는 모듈은 이미터 네임스페이스에 있는 파라미터에 대해 읽고 쓰기가 가능하지만 시스템, 엔진 및 사용자 네임스페이스에 있는 파라미터에서는 읽기만 가능합니다. 파티클(Particle) 그룹에 있는 모듈은 시스템과 이미터 네임스페이스에 있는 파라미터에서만 읽기가 가능합니다.

이미터 그룹의 모듈은 시스템 네임스페이스의 파라미터에서 읽기가 가능하므로 모든 이미터와 관련된 시뮬레이션은 시스템 그룹의 모듈에서 한 번 수행할 수 있으며, 그 결과는 시스템 네임스페이스에 저장되고 각 개별 이미터의 이미터 그룹 모듈에서 읽을 수 있습니다. 이는 시스템 및 이미터 네임스페이스의 파라미터에서 읽을 수 있는 파티클 그룹 모듈에서도 동일합니다. 아래 표는 이러한 관계를 보다 간결하게 표현합니다.

모듈 그룹

네임스페이스에서 읽기

네임스페이스에 쓰기

시스템

시스템, 엔진, 사용자

시스템

이미터

시스템, 이미터, 엔진, 사용자

이미터

파티클

시스템, 이미터, 파티클, 엔진, 사용자

파티클

Select Skin
Light
Dark
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼