소개
데이터플로 그래프(Dataflow Graph) 시스템은 언리얼 엔진 에디터 내의 노드 기반 프로시저럴 에셋 생성 환경 입니다.
데이터플로는 콘텐츠 브라우저(Content Browser) 내 에셋으로 존재하며 평가된 후 특정 에셋을 생성하는 노드 그래프를 포함합니다.
데이터플로는 노드 변경 시 다운스트림 종속성의 재평가를 트리거하는 종속성 기반 노드 그래프 로 구현됩니다. 그래프의 각 노드는 하나 이상의 입력을 받고, 데이터를 처리하고, 하나 이상의 출력을 생성하도록 설계됐습니다. 이러한 출력은 다음 종속 노드로 전달됩니다.
시스템 이점
데이터플로는 엔진에서 특정 에셋 타입을 생성할 때 반복작업 속도를 향상 하기 위해 만들어졌습니다. 동일한 데이터플로 그래프를 다수의 에셋에서 사용 할 수 있으며 그래프 자체는 소스 에셋에서 제공된 입력에 따라 다양한 결과를 생성할 수 있습니다.
데이터플로는 카오스 클로스(Chaos Cloth), 카오스 플레시(Chaos Flesh), 지오메트리 컬렉션 프랙처링(Geometry Collection fracturing) 등 다양한 피직스 에셋 타입에 맞게 조정 가능한 범용 시스템 입니다.
데이터플로는 C++를 사용하는 개발자에 의해 확장 가능하도록 설계 되었습니다. 개발자는 특정 요구 사항에 맞게 이 시스템을 추가로 조정할 수 있습니다.
언리얼 엔진의 기존 워크플로와 데이터플로 비교
데이터플로 그래프 시스템은 다음과 같은 점에서 기존 워크플로와 다릅니다.
기존 워크플로:
- 일반적으로 원본 손상 워크플로: 에셋을 생성하면 변경사항이 영구적으로 적용되며 쉽게 되돌릴 수 없습니다. 따라서 반복작업 시간을 늘어나고 실험이 제한됩니다.
- 수동 워크플로: 개발자는 동일한 타입의 다양한 에셋을 생성하기 위해 워크플로를 수동으로 처리해야 합니다.
데이터플로 워크플로:
- 프로시저럴 변경 유지 워크플로: 데이터플로 노드는 그래프 내부에서 수정 가능하며 결과가 즉시 반영됩니다. 그래프의 모든 단계는 필요시 되돌리거나 생략할 수 있습니다.
- 자동 워크플로: 개발자는 워크플로를 자동화하여 수천 개의 에셋을 자동으로 처리할 수 있습니다.
- 모듈형 워크플로: 동일한 데이터플로 그래프를 다수의 에셋에 사용할 수 있으며, 각각은 서로 다른 입력을 제공하고 다른 결과를 생성합니다.
- 유연한 워크플로: 개발자는 서로 다른 노드를 쉽게 연결 및 연결 해제하여 다양한 이펙트를 적용하고 결과를 즉시 확인할 수 있습니다.
확장 가능하고 실무에서 검증됨
데이터플로 그래프 시스템은 확장성을 염두에 두고 설계 되었습니다. 개발자는 C++로 커스텀 데이터플로 노드를 생성 하여 시스템을 확장할 수 있습니다. 데이터플로는 클로딩 시뮬레이션, 지오메트리 컬렉션 프랙처링 등 특정 타입의 에셋 생성을 완전히 자동화하는 데에도 사용될 수 있습니다.
데이터플로는 레고 포트나이트(Lego Fortnite)를 위해 설계 및 테스트되었습니다. 이 시스템은 프로덕션에서 테스트되었으며 향후 언리얼 엔진 버전에서 지속적으로 개선될 예정입니다.