이 가이드에서는 제공된 불가사리 에셋을 사용하여 카오스 플레시(Chaos Flesh) 시뮬레이션을 구성하는 방법을 알아봅니다.
파일 구성
예제 파일 레퍼런스
아래에 예제 파일 다운로드 경로와 프로젝트 내 배치 위치에 대한 자세한 정보가 나와 있습니다.
런처에서 빈 프로젝트 생성하기
제공된 파일을 사용하려면 런처에서 빈 UE 프로젝트를 생성해야 합니다.
에디터 버전
5.5.0-37670630+++UE5+Release-5.5 이상 버전을 사용해야 합니다.
파일 다운로드
Fleshtutorials-ExampleContent.7z 다운로드.
이 파일에는 이 가이드의 릭 바운드 레이캐스트 섹션에서 사용할 .fbx 폴더도 포함되어 있습니다.
'ExampleContent' 폴더
Fleshtutorials-ExampleContent.7z zip 파일의 압축을 해제합니다. 그런 다음, 압축 해제한 ExampleContent 폴더를 Content 디렉터리로 직접 이동합니다.
이전에 클로스(Cloth) 예제에서 만든 ExampleContent 폴더가 이미 있다면, zip 파일의 5_5_ChaosFlesh 폴더를 ExampleContent 폴더로 드래그하기만 하면 됩니다.
플러그인 로드하기
먼저 카오스 플레시(Chaos Flesh) 플러그인을 활성화해야 합니다.
그런 다음 머신 러닝 디포머 프레임워크(ML Deformer Framework) 및 머신 러닝 디포머 뉴럴 모프 모델(ML Deformer Neural Morph Model) 플러그인을 로드합니다.
불가사리 시작
빠른 구성
플레시(Flesh) 시스템은 4면체 지지 구조체를 사용하여 볼류메트릭 탄성 시뮬레이션을 구현합니다. 4면체는 솔버에 의해 평가되며 볼륨을 유지하고 자체 무게로 인한 캐릭터 표면의 붕괴를 방지하려고 하는 지지력을 제공합니다. 다음 예시에서는 닫힌 스태틱 메시(단순 큐브)에서 4면체 지오메트리를 생성한 다음 언리얼 엔진 내에서 해당 에셋을 시뮬레이션하는 방법을 설명합니다.
불가사리 임포트하기
플레시 시뮬레이션에는 표면 지오메트리에서 생성된 4면체 메시가 필요합니다. 다음 예시에서는 FBX 파일에서 지오메트리를 임포트하고 데이터플로 노드를 사용하여 불가사리의 4면체 메시를 생성하는 방법을 설명합니다.
컨스트레인트
플레시 에셋 및 단순 키네마틱 임포트하기
키네마틱 컨스트레인트를 사용하여 아티스트는 애니메이션을 통해 버텍스를 제어할 수 있습니다. 키네마틱은 4면체의 버텍스에서 정의됩니다. 버텍스가 키네마틱으로 정의되면, 해당 버텍스의 질량 프로퍼티는 무한 질량으로 설정되고 시뮬레이션되지 않습니다. 키네마틱 버텍스는 다이내믹에 대한 바운더리 조건으로 사용할 수 있으며, 여기에 연결된 자유 버텍스는 키네마틱의 모션에 따라 구동됩니다. 다음 예시에서는 파티클이 컴포넌트 위치를 기준으로 스페이스에 고정되도록 페인팅하고 운동학적으로 제한하는 방법을 설명합니다.
버텍스 어트리뷰트 전송
4면체 메시는 변화에 민감하며 토폴로지가 변경되면 4면체 메쉬의 페인팅 진행률이 무효화됩니다. 다음 예시에서는 스켈레탈 메시에 페인팅하고 버텍스 어트리뷰트(페인팅된 어트리뷰트 및 색상)를 4면체 메시에 전송하는 방법을 보여줍니다.
키네마틱 스켈레톤 컨스트레인트
스켈레톤 트랜스폼을 사용하여 키네마틱을 정의할 수도 있습니다. 일반적인 사용 사례는 스켈레톤에 플레시 컴포넌트를 어태치하는 것입니다. 플레시 컴포넌트가 스켈레톤의 로컬 스페이스 내에 함께 위치하면, 스켈레톤과 교차하는 4면체의 버텍스(부모-자식 라인 세그먼트)는 운동학적으로 제한됩니다. 다음 예시에서는 함께 위치한 스켈레톤을 기반으로 불가사리 에셋에 키네마틱 버텍스를 자동으로 정의하는 방법을 보여줍니다.
애니메이팅된 키네마틱 컨스트레인트
키네마틱 버텍스가 애니메이팅된 스켈레톤으로 제한되면 4면체 지오메트리는 스켈레톤의 모션에 종속됩니다. 다음 예시에서는 애니메이팅된 트랜스폼 계층구조에서 플레시 메시를 구동하기 위한 구성을 보여줍니다.
위크 컨스트레인트
위치 타깃, 즉 위크 컨스트레인트는 지오메트리를 타깃 위치에 제한할 수 있는 또 하나의 방법입니다. 위크 컨스트레인트와 키네마틱 컨스트레인트의 차이점은 위크 컨스트레인트의 강성은 실제 타깃에서 약간의 슬립을 허용한다는 것입니다. 제한이 과도한 환경에 위크 컨스트레인트를 도입하면 시뮬레이션이 부드럽고 시각적으로 무난하게 유지되는 적정 상태를 찾을 수 있습니다. 다음 예시에서는 위크 컨스트레인트를 사용하여 플레시 에셋을 키네마틱 조인트 타깃에 바인딩하는 방법을 보여줍니다.
콜리전
월드 콜리전
4면체 솔버는 프라이머리 월드 솔버와 독립적으로 실행됩니다. 카오스 클로스(Chaos Cloth) 솔버와 비슷한 방식으로 4면체 지오메트리에 대한 모든 콜리전은 시뮬레이션 중에 추가되어야 합니다. 다음 데모에서는 플레시 솔버에 어태치되어 있는 콜리전 매니저를 사용하여 시뮬레이션 시작 시 콜리전 바디를 추가하는 방법을 보여줍니다.
콜리전 스트리밍
월드 지오메트리에 대한 콜리전은 현재 스트리밍 시스템을 통해 구현됩니다. 4면체 솔버는 4면체 시뮬레이션에 대한 근접성을 기반으로 로드되고 해제되어야 하는 일부 콜리전 타입 세트에만 반응할 수 있습니다. 4면체 솔버에 대한 콜리전은 리지드 바디 볼륨에 대한 버텍스 기반 콜리전으로 구현되므로 4면체 해상도가 높아질수록 콜리전 반응의 계산 비용도 증가합니다.
현재 이 솔버는 컨벡스 및 몇 가지 분석 타입(스피어, 큐브, 평면)을 지원하며, 해당 콜리전은 리지드 바디에서 4면체로 단방향으로만 이루어집니다. 즉, 4면체는 리지드 바디의 상태에 영향을 주지 않으므로, 리지드 바디는 실질적으로 키네마틱, 무한 질량, 인터랙션에 해당합니다. 일반적으로 리지드 바디의 위치와 속도는 프라이머리 리지드 바디 솔버에서 계산되며, 플레시는 리지드 바디의 모션에만 반응합니다.
블루프린트 에셋 및 메시 디포머
플레시 에셋은 임베딩된 스켈레탈 메시를 디폼할 수 있습니다. 플레시 에셋 데이터플로 그래프에서 'GenerateSurfaceBindings' 노드를 사용하여 스켈레탈 메시의 렌더 표면과 4면체 메시 간의 대응 데이터를 빌드합니다. 그런 다음, 스켈레탈 메시에서 'DG_FleshDeformer'를 사용하여 스켈레탈 메시에 4면체 메시의 디포메이션을 적용합니다.
디포머가 작동하지 않는 것 같다면, 로그에서 자세한 정보를 확인하세요. 한 가지 예를 들면 액터에 플레시 컴포넌트가 여러 개 있어 어떤 플레시 에셋으로 어떤 스켈레탈 메시를 디폼해야 할지 디포머에 알려줘야 하는 경우에 문제가 발생할 수 있습니다. 이를 명확하게 하려면 GenerateSurfaceBindings 노드에서 선택적으로 TransformSelection 또는 GeometryGroupGuids 를 설정하면 됩니다. 아울러 플레시 에셋(나머지 컬렉션)이 GenerateSurfaceBindings 를 사용하여 올바른 스켈레탈 메시에 바인딩되었는지도 확인해야 합니다. 물론, 렌더 표면 또는 4면체 메시의 토폴로지가 변경된 경우 바인딩을 재생성해야 합니다. 바인딩이 없는 렌더 포인트는 스킨이 입혀집니다. 디포머가 포인트를 남긴다면 포인트에 바인딩이 없거나 포인트가 마스킹된(현재는 바인딩이 없는 경우에만 마스킹되지만, 향후에는 마스킹을 위한 데이터플로 노드를 추가할 예정) 것입니다.
파티클별 어트리뷰트
4면체 솔버에서 사용되는 많은 시뮬레이션 프로퍼티는 파티클별로 설정됩니다. 예를 들어, 질량은 메시에 따라 달라질 수 있으며 시뮬레이션된 4면체의 버텍스에 저장됩니다. 이를 통해 균등성이 다른 4면체 메시가 메시의 볼륨 전체에 걸쳐 균등한 질량 분포를 가질 수 있습니다. 질량은 파티클별 프로퍼티의 한 가지 예시일 뿐이며, 파티클에 저장되는 모든 프로퍼티가 에셋의 구성 내에서 어떻게 환경설정될 수 있는지를 보여줍니다. 이 데모에서는 필드를 사용하여 4면체에 파티클별 프로퍼티를 설정하는 방법을 보여줍니다.
블루프린트에서 스폰 및 소멸하기
플레시 에셋은 블루프린트 작업 중에도 스폰될 수 있습니다. 블루프린트 액터는 스켈레탈 메시 액터와 같은 방식으로 작동하므로 플레시 컴포넌트를 생성하여 플레시 에셋에 연결할 수 있습니다. 그런 다음, Spawn 및 Destroy Actor 블루프린트 노드를 사용하여 시뮬레이션에 동적으로 블루프린트 액터를 추가하고 제거할 수 있습니다.
시뮬레이션 결과 샘플링하기
플레시 컴포넌트의 렌더 디스플레이에는 전체 4면체 시뮬레이션의 결과가 표시되지만, 가끔 시뮬레이션에서 디포메이션의 서브셋만 샘플링하는 것이 유용할 수 있습니다. 예를 들어, 일렉트릭 드림즈(Electric Dreams) 데모에서 나나이트 메시의 월드 포지션 오프셋(WPO) 렌더링은 타이어 표면 근처 위치를 샘플링하고 이를 GPU에서 타이어 지오메트리를 디스플레이스하는 텍스처에 매핑하여 구현했습니다. 이 데모에서는 게임플레이 중에 액세스할 수 있는 디포메이션 결과에서 샘플 세트를 보간하는 방법을 보여줍니다.
캐싱하기
데이터플로 캐싱 및 머신 러닝 디포머
플레시 시뮬레이션에는 비용이 많이 들 수 있습니다. 저해상도 에셋을 게임 내에서 작동하도록 만들 수 있지만, 고해상도 지오메트리에서 결과를 얻으려면 4면체 시뮬레이션을 실시간으로 실행하는 것이 불가능할 수 있습니다. 캐싱 시스템을 사용하여 아티스트는 시뮬레이션 결과를 녹화하고 이를 데이터플로 그래프에서 재생할 수 있습니다. 이 캐시로부터 지오메트리 캐시(Geometry Cache)를 머신 러닝 디포머(ML Deformer)의 훈련 데이터로 생성할 수도 있습니다. 이 예시에서는 시뮬레이션의 결과를 캐싱하고 지오메트리 캐시를 생성하고 머신 러닝 디포머를 훈련하는 방법을 보여줍니다.
에디터에서 캐싱하기
에디터에서 캐싱하고 레벨 시퀀스에서 재생하여 확인할 수도 있습니다. 이 예시에서는 시뮬레이션된 플레시 에셋(또는 블루프린트)을 캐싱하고 시뮬레이션 결과를 자세하게 검사하는 방법을 설명합니다.
시뮬레이션 프로퍼티
시뮬레이션 프로퍼티는 카오스 플레시 시스템 전반의 여러 위치에서 설정됩니다. 4면체 솔버에는 전체 시뮬레이션 시스템에 영향을 주는 프로퍼티가 있습니다. 예를 들어, 사용자가 타임 스텝 및 스레딩 프로퍼티는 물론 콜리전 컨트롤도 환경설정할 수 있습니다. 플레시 액터의 프로퍼티로는 에셋의 개별 인스턴스를 구체적으로 환경설정할 수 있지만, 데이터플로 기반 프로퍼티는 에셋 자체를 환경설정합니다. 이 데모에서는 시뮬레이션의 몇 가지 더 중요한 프로퍼티를 살펴보고 특정 타입의 컨트롤을 찾을 수 있는 위치에 대한 개요를 제공합니다.
릭 바운드 레이캐스트
이 가이드의 이번 섹션을 따라가려면 파일 다운로드에서 제공된 .fbx 파일을 참조하세요.
릭 바운드 레이캐스트를 사용하면 특정 타입의 오브젝트가 환경의 스태틱 지오메트리와 상호작용할 수 있습니다. 레이캐스트 접근 방식은 일반적인 환경 콜리전 구성이 아니지만, 특정 구성에서는 디폼 가능한 바디가 씬 지오메트리에 반응할 수 있습니다. 예를 들어, 일렉트릭 드림즈 데모에서 타이어가 씬 지오메트리에 반응하도록 하는 데 이 구성을 사용했습니다.
이 접근 방식을 사용하려면 충족해야 하는 요건이 몇 가지 있습니다. 레이캐스트 버텍스는 모델의 트랜스폼 위치에 대해 컨벡스되어야 하고, 4면체 컴포넌트는 스켈레탈 메시 블루프린트에 포함되어야 하며, 에셋은 스켈레톤에 운동학적으로 제한되어야 합니다. 콜리전 반응이 구현되는 방식 때문에 레이캐스트 원점은 모델의 내부 포인트에서 시작해야 하며, 콜리전 반응은 버텍스를 레이캐스트 방향과 반대인 내부 원점 방향으로 이동합니다.
고급 워크플로
카오스 플레시로 근육과 지방 시뮬레이션을 구성하는 방법을 알아보려면 근육 시뮬레이션을 위한 카오스 플레시를 참조하세요.