티스토리 뷰

개발/언리얼

플루이드 시뮬레이션

소심야채 2023. 9. 12. 20:49

개요

- 플루이드 시뮬레이션은 기체나 액체 같은 플루이드의 모션을 표현하는 데이터를 알고리즘 방식으로 생성하는 프로세스이다. 이 시뮬레이션 데이터는 사용하는 알고리즘에 따라 그리드 또는 파티클로 표현될 수 있다.

- 언리얼 엔진 플루이드 시뮬레이션 시스템은 그리드를 사용하여 기체를 시뮬레이션하고, 파티클과 그리드의 조합을 사용하여 액체를 시뮬레이션한다.

 

그리드

- 기체 시뮬레이션은 그리드로 표현된다. 그리드의 각 셀에는 해당 위치에서 매체의 밀도와 온도, 속도를 나타내는 데이터가 있다. 그리드 셀 크기가 작으면 시뮬레이션 품질이 높아지지만 품질이 높아지면 연산 비용이 증가한다.

- 연기 시뮬레이션을 렌더링할 때 일반적으로 밀도 그리드를 시각화한다. 밀도가 높은 영역은 밀도가 낮은 영역에 비해 더 불투명하다. 불 시뮬레이션도 비슷하게 작동하며, 온도는 각 그리드 셀에 있는 불의 색을 제어한다. 불 시뮬레이션 내에서 온도가 높을수록 부력으로 인해 기체가 더 빠르게 상승한다.

 

플루이드 모션

- 사실적인 움직임으로 플루이드를 시뮬레이션하는 데 있어 주요 구성 요소 중 하나는 '압력 해석' 프로세스이다. 이 기술에는 오브젝트 주변에서 플루이드가 올바르게 흐르도록 디자인된 등식체계 해석이 수반되고, 이를 통해 사실적인 소용돌이 모션이 이루어진다.

- 이 시뮬레이션은 반복작업 프로세스로 구성되며, 반복작업할수록 시뮬레이션이 더욱 정확해진다. 하지만 반복작업이 많아질수록 연산 비용이 증가한다. '압력 해석'기술이 시뮬레이션에 추가된 힘에 영향을 미치고 이펙트를 악화시킬 수 있다는 점에 주의해야 한다.

 

콜리전 오브젝트

- 플루이드가 근처의 오브젝트에 반응하도록 먼저 '바운더리 조건'을 설정해야 한다.

- 시뮬레이션에 대한 바운더리 조건 설정 시 플루이드가 동일한 공간을 점유할 수 없도록 시뮬레이션 영역 내에 오브젝트가 위치한 곳에 마스크가 적용된다. 이러한 콜리전 오브젝트는 씬 주변으로 움직일 수 있으며 그 속도는 주변에 있는 플루이드를 이동시키는 데 사용된다.

- 일반적인 예로는 오브젝트가 고여 있는 액체에 떨어져 액체가 튀고 오브젝트 주변으로 잔물결이 발생하는 것이다. 시스템에서는 많은 오브젝트 타입을 스태틱 메시와 지오메트리 컬렉션, 뎁스 맵과 같은 콜라이더로 사용할 수 있다.

 

액체

- 나이아가라 플루이드는 하이브리드 파티클 및 FLIP(Fluid-Implicit-Particle)라는 그리드 알고리즘을 사용하여 흐르는 물과 같은 액체를 시뮬레이션한다. 이 시스템에서 플루이드의 속도는 그리드에서 해석되고, 플루이드의 모양을 나타내는 파티클로 샘플링된다.

- 액체와 기체 시뮬레이션 간에는 여러 유사성이 있으므로 콜리전 오브젝트와 플루이드 모션에 관한 이전 섹션이 액체에도 적용된다.

 

그리드 데이터 인터페이스

- 그리드 2D 컬렉션 (Grid 2D Collection)및 그리드 3D 컬렉션 (Grid 3D Collection)은 각각 2D 및 3D 그리드의 명명된 어트리뷰트를 저장하는 데이터 인터페이스이다. 플루이드를 해석할 때 필요한 모든 연산에 사용된다.

 

시뮬레이션 스테이지

- 기체 또는 액체 시뮬레이션 알고리즘의 각 단계에서 언리얼 엔진 플루이드 시뮬레이션 시스템을 사용하면 다음 단계로 넘어가기 전에 모든 그리드 셀이 처리된다. 이를 위해 시스템에서는 나이아가라 내에 있는 시뮬레이션 스테이지(Simulation Stage)를 사용한다. 스테이지의 반복작업 수(Num Iterations) 어트리뷰트를 수정하여 다음 스테이지를 진행하기 전에 시뮬레이션 스테이지를 몇 차례 실행할 수 있다.

 

플루이드 파라미터

- 새 나이아가라 시스템 (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 플립 시뮬레이션은 그리드에 파티클이 튀고 레이 마칭을 사용하여 표면으로 그리드를 렌더링하면서 렌더링된다.

'개발 > 언리얼' 카테고리의 다른 글

nDisplay 설정하는법(트리플 스크린)  (0) 2024.05.14
언리얼 프로젝트 재생성 자동화  (0) 2024.01.03
언리얼 엔진 5.2 학습강의  (0) 2023.09.05
언리얼 빌드 시스템  (0) 2023.09.03
언리얼 엔진의 패키지  (0) 2023.09.03
댓글