언리얼 엔진 5에는 실시간으로 플루이드 이펙트를 시뮬레이션하는 툴세트가 포함되어 있습니다.
이 툴세트는 아티스트 친화적으로 디자인되었으며, 나이아가라 에디터 내에서 사용 가능한 다양한 GPU 기반 시뮬레이터, 재사용 가능한 모듈 및 강력한 데이터 구조를 포함하고 있습니다. 고급 사용자라면 광범위하게 노출된 파라미터를 활용하여 필요한 만큼 시뮬레이션을 수정할 수 있습니다.
유체 시뮬레이션 시스템은 게임과 시네마틱에서 사용할 수 있는 실시간 환경의 복잡한 유체 이펙트를 생성하도록 디자인되었습니다. 시스템을 사용하여 복잡한 시뮬레이션을 다양한 사용 사례에 사용 가능한 플립북 텍스처로 베이크할 수도 있습니다.
대상
다양한 플루이드(기체 및 액체) 시뮬레이터는 그래픽 연구원부터 이펙트 아티스트에 이르는 모두에게 유용하도록 설계되었습니다. 다양한 사용자에 적합한 몇 가지 사용 사례가 있습니다.
이펙트 아티스트
특정 게임 엘리먼트 또는 시네마틱 샷에 사용되는 맵에 시스템을 빠르게 배치합니다.
블루프린트를 통해 액터에 의해 노출되는 여러 사용자 파라미터를 편집, 키프레이밍 또는 구동합니다.
몇 가지 시스템 파라미터를 미세조정해 원하는 모습을 구현합니다.
플루이드가 월드와 반응하도록 적합한 힘과 콜리전 오브젝트를 추가합니다.
플루이드가 플루이드 솔버에 주입되는 방식을 간단하게 수정합니다.
이펙트 개발자
사전 정의된 템플릿에서 커스텀 시스템을 빌드하여 원하는 모습을 구현합니다.
새로운 힘, 소싱 방법 또는 커스텀 바운더리 조건을 통합합니다.
시스템 내의 플루이드 및 소싱 이미터에 기존 모듈을 추가하거나 수정합니다.
프로파일링 및 변경으로 특정 시스템에 대한 퍼포먼스를 개선합니다.
시스템을 빌드 또는 수정하고 사용자 파라미터를 노출하여 팀의 아티스트를 지원합니다.
R&D 개발자
HLSL 셰이더 코드를 작성하여 베이스 이미터를 확장하면서 복잡한 플루이드 비헤이비어를 설계합니다.
기존 모듈을 수정 또는 대체하여 시뮬레이션 알고리즘의 모든 측면을 수정합니다.
나이아가라 에디터 또는 맵에서 새 알고리즘을 빠르게 테스트합니다.
사용자 파라미터 및 요약 뷰를 통해 새 시스템을 빌드하고 파라미터를 패키징합니다.
플루이드 시뮬레이션의 주요 개념
개요
플루이드 시뮬레이션은 기체나 액체 같은 플루이드의 모션을 표현하는 데이터를 알고리즘 방식으로 생성하는 프로세스입니다. 이 시뮬레이션 데이터는 사용하는 알고리즘에 따라 그리드 또는 파티클로 표현될 수 있습니다.
언리얼 엔진 플루이드 시뮬레이션 시스템은 그리드를 사용하여 기체를 시뮬레이션하고, 파티클과 그리드의 조합을 사용하여 액체를 시뮬레이션합니다.
그리드
기체 시뮬레이션은 그리드로 표현됩니다. 그리드의 각 셀에는 해당 위치에서 매체의 밀도와 온도, 속도를 나타내는 데이터가 있습니다. 그리드 셀 크기가 작으면 시뮬레이션 품질이 높아지지만 품질이 높아지면 연산 비용이 증가합니다.
연기 시뮬레이션을 렌더링할 때 일반적으로 밀도 그리드를 시각화합니다. 밀도가 높은 영역은 밀도가 낮은 영역에 비해 더 불투명합니다. 불 시뮬레이션도 비슷하게 작동하며, 온도는 각 그리드 셀에 있는 불의 색을 제어합니다. 불 시뮬레이션 내에서 온도가 높을수록 부력으로 인해 기체가 더 빠르게 상승합니다.
플루이드 모션
사실적인 움직임으로 플루이드를 시뮬레이션하는 데 있어 주요 구성 요소 중 하나는 '압력 해석' 프로세스입니다. 이 기술에는 오브젝트 주변에서 플루이드가 올바르게 흐르도록 디자인된 등식 체계 해석이 수반되고, 이를 통해 사실적인 소용돌이 모션이 이루어집니다.
이 시뮬레이션은 반복작업 프로세스로 구성되며, 반복작업할수록 시뮬레이션이 더욱 정확해집니다. 하지만 반복작업이 많아질수록 연산 비용이 증가합니다. '압력 해석' 기술이 시뮬레이션에 추가된 힘에 영향을 미치고 이펙트를 약화시킬 수 있다는 점에 주의해야 합니다.
콜리전 오브젝트
플루이드가 근처의 오브젝트에 반응하도록 먼저 '바운더리 조건'을 설정해야 합니다.
시뮬레이션에 대한 바운더리 조건 설정 시 플루이드가 동일한 공간을 점유할 수 없도록 시뮬레이션 영역 내에 오브젝트가 위치한 곳에 마스크가 적용됩니다. 이러한 콜리전 오브젝트는 씬 주변으로 움직일 수 있으며 그 속도는 주변에 있는 플루이드를 이동시키는 데 사용됩니다.
일반적인 예로는 오브젝트가 고여 있는 액체에 떨어져 액체가 튀고 오브젝트 주변으로 잔물결이 발생하는 것입니다. 시스템에서는 많은 오브젝트 타입을 스태틱 메시와 지오메트리 컬렉션, 뎁스 맵과 같은 콜라이더로 사용할 수 있습니다.
액체
나이아가라 플루이드는 하이브리드 파티클 및 FLIP(Fluid-Implicit-Particle)라는 그리드 알고리즘을 사용하여 흐르는 물과 같은 액체를 시뮬레이션합니다. 이 시스템에서 플루이드의 속도는 그리드에서 해석되고, 플루이드의 모양을 나타내는 파티클로 샘플링됩니다.
액체와 기체 시뮬레이션 간에는 여러 유사성이 있으므로 콜리전 오브젝트와 플루이드 모션에 관한 이전 섹션이 액체에도 적용됩니다.
주요 나이아가라 개념
모든 플루이드 시뮬레이터는 나이아가라 에디터에서 액세스할 수 있고, 다양한 나이아가라 기능을 사용합니다.
나이아가라 VFX 시스템에 대해 자세히 알아보려면 문서를 확인하세요.
그리드 데이터 인터페이스
그리드 2D 컬렉션(Grid 2D Collection) 및 그리드 3D 컬렉션(Grid 3D Collection) 은 각각 2D 및 3D 그리드의 명명된 어트리뷰트를 저장하는 데이터 인터페이스입니다. 플루이드를 해석할 때 필요한 모든 연산에 사용됩니다.
시뮬레이션 스테이지
기체 또는 액체 시뮬레이션 알고리즘의 각 단계에서 언리얼 엔진 플루이드 시뮬레이션 시스템을 사용하면 다음 단계로 넘어가기 전에 모든 그리드 셀이 처리됩니다. 이를 위해 시스템에서는 나이아가라 내에 있는 시뮬레이션 스테이지(Simulation Stage) 를 사용합니다. 스테이지의 반복작업 수(Num Iterations) 어트리뷰트를 수정하여 다음 스테이지를 진행하기 전에 시뮬레이션 스테이지를 몇 차례 실행할 수 있습니다.
재사용 가능한 모듈
많은 플루이드 행동이 모듈에서 정의되며, 나이아가라 시스템 스택에서 이동할 수 있습니다. 일부 모듈은 2D와 3D, 기체, 액체 시뮬레이터에서 사용되며, 보통 매우 일반적으로 작성됩니다. 고급 사용자는 다양한 모듈을 수정하거나 대체하여 코어 플루이드 솔버 행동을 수정할 수 있습니다.
플루이드 파라미터
새 나이아가라 시스템(New Niagara System) 메뉴에 표시되는 모든 템플릿 시스템에는 맵에 배치될 때 액터를 수정할 수 있도록 사용자 파라미터가 있습니다. 값은 디테일(Details) 패널에서 직접 편집할 수 있습니다. 플루이드 이미터의 요약 뷰(Summary View) 에 표시되는 파라미터가 더 있으며, 나이아가라 에디터에서 수정 가능합니다.
시뮬레이터 타입
2D 기체
2차원 공간에서만 흐름이 발생하는 기체 시뮬레이션입니다. 이러한 시뮬레이션은 일반적으로 3D 시뮬레이션보다 빠르고 게임과 실시간 사용에 매우 적합합니다. 하지만 3D 시뮬레이션에서 보여줄 수 있는 복잡한 난기류가 부족한 편입니다.
3D 오브젝트는 2D 시뮬레이션과 상호작용할 수 있다는 점을 알아두시기 바랍니다. 이러한 타입의 시뮬레이션은 항상 카메라를 향하고 3D 행동을 모방하도록 설정할 수 있습니다. 일반적으로 횃불이나 깊이가 필요한 기타 화염 이펙트를 생성할 때 사용됩니다.
2D 기체 시뮬레이션은 카메라를 바라보거나 월드에서 방향이 지정된 평면에 렌더링됩니다.
3D 기체
가장 일반적인 타입의 기체 시뮬레이션입니다. 2D 기체와 비교했을 때 3D 기체는 더 많은 메모리와 GPU 비용을 사용하여 깊이와 더 복잡한 흐름을 시뮬레이션합니다.
이 시뮬레이터 타입은 실시간 애플리케이션의 히어로 이펙트와 시네마틱에 가장 적합합니다. 결과를 텍스처로 구워 실시간 퍼포먼스를 높일 수 있습니다.
구워진 라이트를 사용하는 기체 시뮬레이션은 그리드에 섀도를 구워 셀프 섀도잉을 달성합니다. 이후 데이터는 렌더링을 위해 머티리얼로 전달됩니다. 레이 마칭 머티리얼은 표시 밀도와 온도를 누적하여 볼륨의 이미지 생성을 담당합니다.
2D 플립
2D 플립은 3D 파티클을 샘플링하고, 압력이 해석되며 FLIP 알고리즘이 적용되는 2D 시뮬레이션 도메인을 생성하여 파티클을 업데이트합니다. 일반적으로 도메인은 카메라와 정렬되어 2D 플루이드 포스 사용에도 불구하고 복잡한 3D 모양의 흐름을 허용합니다. 물이 튀는 이펙트를 시뮬레이션하는 데는 유용하지만 고인 물에는 사용할 수 없습니다.
2D 플립 시뮬레이션은 일반적으로 3D 파티클로 렌더링됩니다.
섈로 워터
2D 플립과 달리 섈로 워터는 물이 튀는 이펙트가 많지 않은 고인 물을 시뮬레이션하는 데 유용합니다. 보트를 물에 띄우는 모습이나 물을 따라 움직이는 오브젝트와의 간단한 상호작용을 시뮬레이션하는 데 사용할 수 있습니다.
섈로 워터 시뮬레이션은 물 표면에서 디스플레이스먼트로 렌더링되는 하이트 필드입니다.
3D 플립
3D 플립 시뮬레이션은 해변의 파도, 강, 그리고 복잡한 오브젝트 상호작용 같은 다양한 이펙트를 시뮬레이션할 수 있는 강력한 액체 시뮬레이션입니다. 이러한 복잡한 시뮬레이션은 연산 비용이 많이 들 수 있습니다. 플루이드가 압축되지 않도록 속도가 그리드 솔버로 결정되는 파티클 시뮬레이션입니다.
3D 플립 시뮬레이션은 그리드에 파티클이 튀고 레이 마칭을 사용하여 표면으로 그리드를 렌더링하면서 렌더링됩니다.