메타휴먼 컬렉션 에셋은 언리얼 엔진 5.8에서 실험 단계 기능으로 제공되며, 아직 개발 중입니다.
메타휴먼 컬렉션 에셋은 메타휴먼을 어셈블하는 데 사용할 수 있는 모든 모듈형 파츠를 담는 컨테이너 역할을 합니다. 각 파츠는 컬렉션 파이프라인에서 정의된 슬롯(Slot)에 할당된 의상 아이템(Wardrobe Item)입니다.
컬렉션은 MetaHuman Instances 에셋과 함께 작동하여 메타휴먼 크리에이터의 어셈블(Assemble) 버튼을 사용하지 않고도 메타휴먼을 어셈블할 수 있는 변경사항이 유지되는 파이프라인 기반 접근 방식을 제공합니다.
메타휴먼 컬렉션 생성
새 메타휴먼 컬렉션을 생성하려면 콘텐츠 브라우저에서 우클릭하고 메타휴먼(Metahuman) 카테고리로 이동한 다음 메타휴먼 컬렉션(Metahuman Collection)을 선택합니다. 새 에셋은 컬렉션 에디터에서 열립니다.
컬렉션 에디터
전용 에셋 에디터인 컬렉션 에디터는 다음과 같은 네 가지 영역으로 구성되어 있습니다.
| 영역 | 용도 |
|---|---|
아이템(Items) | 컬렉션에 있는 모든 아이템의 타일 뷰로, 슬롯별로 정리됩니다. 각 타일은 섬네일을 표시하며, 슬롯별로 색상이 지정됩니다. 상단의 필터 버튼을 사용하면 특정 슬롯 또는 모든 슬롯의 아이템을 한 번에 표시할 수 있습니다. |
뷰포트(Viewport) | 어셈블된 메타휴먼의 3D 프리뷰입니다. 변경할 때마다 업데이트되므로, 결과를 실시간으로 확인할 수 있습니다. |
아이템 디테일(Item Details) | 현재 선택된 아이템의 빌드 파라미터입니다. 인스턴스가 아닌 컬렉션을 편집할 때만 표시됩니다. |
아이템 인스턴스 파라미터(Item Instance Parameters) | 헤어 색상 또는 머티리얼 색조 등 선택된 아이템의 인스턴스 파라미터 오버라이드입니다. |
디테일(Details) | 할당된 파이프라인을 포함하여 컬렉션의 프로퍼티를 표시하는 표준 '디테일' 패널입니다. |
컬렉션에 아이템 추가
콘텐츠 브라우저에서 에셋을 아이템 패널로 드래그하여 컬렉션에 아이템을 추가합니다. 에디터는 드래그된 에셋이 컬렉션의 파이프라인 슬롯 중 하나와 호환되는지 확인합니다. 예를 들어 파이프라인에 그룸 바인딩 에셋을 허용하는 헤어 슬롯이 있는 경우, 그룸 바인딩 에셋을 드래그하면 해당 슬롯에 추가됩니다.
에셋이 둘 이상의 슬롯과 호환되는 경우, 드롭 존 오버레이가 표시되어 에셋을 할당할 슬롯을 선택할 수 있습니다.
아이템 선택
아이템 타일을 더블클릭하여 현재 인스턴스에 사용할 아이템을 선택합니다. 선택된 아이템의 섬네일이 하이라이트되고 3D 프리뷰가 업데이트되어 결과가 표시됩니다.
파이프라인 규칙에 따라 현재 선택과 호환되지 않는 아이템은 흐리게 표시되며 선택할 수 없습니다. 예를 들어 파이프라인은 현재 선택된 바디에 맞지 않는 헤드를 선택하지 못하게 제한할 수 있습니다.
각 단일 선택 슬롯(헤어 또는 상의 의상 슬롯 등)에는 한 번에 하나의 활성 아이템만 있을 수 있습니다. 또한 파이프라인은 여러 클로딩 아이템을 동시에 착용하는 등 여러 동시 선택을 지원하는 슬롯을 정의할 수도 있습니다.
컬렉션 빌드
컬렉션을 빌드하면 파이프라인의 빌드 로직이 모든 아이템에 대해 실행되어 런타임에서 이러한 아이템을 원하는 대로 조합하는 데 필요한 메시, 텍스처 및 기타 에셋을 생성합니다. 빌드 퀄리티 레벨에는 두 가지가 있습니다.
| 퀄리티 | 용도 |
|---|---|
프리뷰(Preview) | 반복 작업을 위한 빠른 빌드입니다. 변경 시 에디터에서 자동으로 사용됩니다. |
프로덕션(Production) | 최고 퀄리티 빌드입니다. 적용되지 않은 컬렉션 편집 사항이 있는 상태에서 적용(Apply)을 클릭하거나 리빌드(Rebuild) 툴바 버튼을 명시적으로 사용하면 트리거됩니다. |
툴바에는 다음과 같이 빌드 비헤이비어를 제어하는 몇 가지 옵션이 포함되어 있습니다.
| 옵션 | 설명 |
|---|---|
적용 | 에디터에서 에셋으로 변경사항을 커밋하고, 컬렉션이 변경된 경우 프로덕션 빌드를 트리거합니다. |
리빌드 | 컬렉션의 전체 프로덕션 리빌드를 강제합니다. 마지막 빌드 이후 소스 에셋이 변경된 경우에 사용합니다. |
프리뷰 자동 빌드(Auto Build Preview) | 켠 경우, 편집할 때마다 컬렉션이 '프리뷰' 퀄리티로 자동 리빌드됩니다. 한 번에 여러 변경사항을 적용할 때는 이 기능을 끄세요. |
편집 시 모든 아이템 빌드(Build All Items On Edit) | 켠 경우, 모든 아이템이 프리뷰 동안 빌드되므로 대기 없이 아이템 간에 전환할 수 있습니다. 끈 경우, 현재 선택된 아이템만 빌드되므로 대규모 컬렉션에서 더 빠릅니다. |
대규모 컬렉션의 경우, 대량 편집을 수행하는 동안 프리뷰 자동 빌드 및 편집 시 모든 아이템 빌드를 끄고 결과를 검토할 준비가 되면 적용을 실행하세요.
생성된 에셋
컬렉션이 빌드되면 메시, 텍스처, 머티리얼 등 생성된 에셋은 컬렉션 에셋 자체 내에 저장됩니다. 따라서 생성된 에셋을 실수로 편집하여 다음 컬렉션 빌드 시 해당 편집 내용이 손실되는 것을 방지할 수 있습니다.
생성된 에셋을 디버깅을 위해 검사해야 하는 경우 콘텐츠 브라우저에서 컬렉션을 우클릭하고 에셋 언팩(Unpack Assets)을 선택합니다. 이렇게 하면 컬렉션에서 생성된 에셋이 프로젝트로 언팩되어 콘텐츠 브라우저에 표시됩니다.
언팩된 에셋은 사본이 아닙니다. 컬렉션에서 레퍼런스되고 어셈블리에 사용되는 동일한 에셋입니다. 사용자가 이 에셋에 대해 수행하는 모든 편집은 해당 컬렉션에서 어셈블된 메타휴먼에 영향을 미치지만, 컬렉션이 다음에 빌드될 때 이러한 편집은 손실됩니다. 생성된 에셋에 대한 수정은 수동이 아닌 파이프라인을 통해 이뤄져야 합니다.
슬롯
컬렉션에서 사용 가능한 슬롯은 전적으로 해당 컬렉션에 할당된 파이프라인에 따라 달라집니다. 파이프라인은 각각 이름, 허용되는 에셋 타입 및 처리 로직이 있는 자체 슬롯 세트를 정의합니다. 일반적인 예시는 다음과 같습니다.
| 슬롯 | 허용되는 에셋 타입 | 설명 |
|---|---|---|
캐릭터(Character) |
| 페이스 및 바디를 제공하는 베이스 메타휴먼 캐릭터 에셋입니다. |
헤어 |
| 헤드 헤어 그룸입니다. |
눈썹(Eyebrows) |
| 눈썹 그룸입니다. |
상의 의상(Top Garment) |
| 상단 바디 클로딩입니다. |
하의 의상(Bottom Garment) |
| 하단 바디 클로딩입니다. |
위는 예시일 뿐입니다. 커스텀 파이프라인을 생성할 때 노출할 슬롯과 각 슬롯이 허용하는 에셋 타입을 정확히 선택할 수 있습니다. 파이프라인에는 타투, 파티클 이펙트, 스태틱 메시 액세서리 또는 프로젝트에 필요한 기타 콘텐츠용 슬롯이 포함될 수 있습니다.
가상 슬롯
파이프라인은 가상 슬롯을 정의할 수 있습니다. UI에 별도의 카테고리로 표시되지만, 내부적으로는 공유 슬롯에 피딩되는 슬롯입니다. 이 기능이 유용한 이유는 다음과 같습니다.
파이프라인은 특정 에셋을 그룹으로 처리할 수 있습니다. 예를 들어 상의 의상, 하의 의상, 신발이 모두 동일한 어셈블리 로직을 사용하는 경우, 세 개의 별도 명명된 슬롯이 아닌 클로딩 아이템 배열로 처리할 수 있습니다.
사용자는 UI에서 개별적인 단일 선택 슬롯을 얻습니다. 새 상의 의상을 선택하면 기존 상의 의상은 자동으로 선택 해제됩니다.
동일한 처리 로직을 재사용하는 새 클로딩 슬롯을 추가할 때는 메인 클로딩 슬롯을 가리키는 새 가상 슬롯만 필요하며, 새 로직은 필요하지 않습니다.
메타휴먼 컬렉션 파이프라인
파이프라인은 컬렉션 시스템을 제어합니다. 다음의 두 가지 사항을 정의합니다.
사용 가능한 슬롯 - 컬렉션이 포함할 수 있는 명명된 아이템 카테고리 및 각 슬롯이 허용하는 에셋 타입입니다.
아이템 처리 방식 - 빌드 로직(소스 에셋에서 게임에 사용 가능한 에셋 생성) 및 어셈블리 로직(빌드된 에셋을 렌더링 가능한 캐릭터로 구성)입니다.
모든 컬렉션에는 파이프라인이 할당되어 있습니다. 컬렉션의 '디테일' 패널에서 파이프라인을 확인하고 변경할 수 있습니다. 파이프라인은 C++로 정의됩니다.
빌드 및 어셈블리 작동 방식
파이프라인 작업은 두 가지 개별 단계로 진행됩니다.
빌드는 에디터에서 실행됩니다. 컬렉션의 각 아이템을 아이템 파이프라인을 통해 처리합니다. 여기서 메시 생성, 텍스처 베이킹, LOD 생성 등 에셋 생성이 이뤄집니다. 결과는 컬렉션에 빌드된 데이터로 저장됩니다.
어셈블리는 인스턴스가 에디터 프리뷰 시, 레벨에 인스턴스 배치 시 또는 런타임에서 렌더링 가능한 캐릭터를 생성해야 할 때마다 실행됩니다. 어셈블리는 빌드된 데이터와 인스턴스의 슬롯 선택을 가져와 페이스 메시, 바디 메시, 그룸, 클로딩 및 파이프라인이 생성하는 기타 엘리먼트 등 최종 출력으로 구성합니다.
빌드는 리소스를 많이 사용하며, 에디터에서 한 번 실행됩니다. 어셈블리는 런타임에서 온디맨드로 실행할 수 있을 만큼 충분히 빠르므로 런타임에서 원활하게 캐릭터를 커스터마이징하고 프로시저럴하게 채울 수 있습니다.
파이프라인이 수행할 수 있는 작업
파이프라인의 아이템 처리 로직은 C++로 표현할 수 있는 모든 오퍼레이션을 수행할 수 있습니다. 파이프라인의 빌드 및 어셈블리 단계가 처리할 수 있는 예시는 다음과 같습니다.
캐릭터 바디에 맞게 카오스 의상 에셋의 크기를 조정합니다.
인스턴스드 스키닝 메시 컴포넌트와 함께 사용하기 위해 그룸의 카드 메시를 스켈레탈 메시로 변환합니다.
클로딩 아래에 숨겨진 바디 지오메트리를 제거합니다.
런타임 퍼포먼스 향상을 위해 복잡한 머티리얼을 텍스처에 베이킹합니다.
스태틱 메시 액세서리를 소켓에 어태치합니다.
커스텀 파이프라인 생성
파이프라인은 C++에서 UMetaHumanCollectionPipeline을 서브클래싱하여 생성됩니다. 서브클래스에서는 다음을 정의할 수 있습니다.
슬롯 - 각 슬롯은 이름, 허용되는 에셋 타입, UI 색상, 슬롯 출력이 파이프라인의 전체 어셈블리 출력으로 피딩되는 방식을 설명하는 매핑을 갖습니다.
아이템 파이프라인 - 파이프라인이 지원하는 각 아이템 타입에 대한 빌드 및 어셈블리 로직을 포함하는
UMetaHumanItemPipeline의 서브클래스입니다.어셈블리 출력 구조체 - 파이프라인이 생성하는 각 출력 타입에 대한 필드를 포함하는 커스텀 구조체입니다.
예를 들어 텍스처 에셋을 허용하는 타투 슬롯을 추가하려면 다음 단계를 따릅니다.
UMetaHumanCollectionPipeline의UMyProjectPipeline서브클래스를 생성합니다.생성자에서 파이프라인 사양에 슬롯 엔트리를 추가하고
SupportedPrincipalAssetTypes를 타투 에셋 클래스에 설정합니다.타투 처리를 위해
BuildItem()및AssembleItem()을 구현하는UMetaHumanItemPipeline의UMyTattooItemPipeline서브클래스를 생성합니다.파이프라인 클래스를 컬렉션에 할당합니다.
언리얼 엔진 5.8에서는 메타휴먼 크리에이터가 커스텀 파이프라인을 지원하지 않습니다. 커스텀 파이프라인은 메타휴먼 컬렉션 에디터에서 사용할 수 있습니다.
파이프라인 슬롯 프로퍼티
파이프라인의 각 슬롯에는 다음 프로퍼티가 있습니다.
| 프로퍼티 | 설명 |
|---|---|
지원되는 에셋 타입(Supported Asset Types) | 이 슬롯이 허용하는 에셋 클래스입니다(예: |
어셈블리 출력 매핑(Assembly Output Mapping) | 슬롯의 어셈블된 출력이 파이프라인의 전체 어셈블리 출력 구조체에 매핑되는 방식입니다. 이 매핑을 선언하면 파이프라인 클래스에 필요한 보일러플레이트 코드의 양이 줄어듭니다. |
다중 선택 허용(Allows Multiple Selection) | 하나 이상의 아이템이 이 슬롯에서 동시에 활성화될 수 있는지 여부입니다. |
사용자에게 표시(Visible To User) | 컬렉션 에디터 UI에 슬롯이 표시되는지 여부입니다. |
슬롯 색상(Slot Color) | UI에서 이 슬롯을 식별하는 데 사용되는 색상으로, 아이템 섬네일에 색상 밴드로 표시됩니다. |
타깃 슬롯(Target Slot)(가상 슬롯에만 해당) | 설정한 경우, 이 슬롯은 가상으로 취급되며 선택이 타깃 슬롯으로 전달됩니다. |
아이템 파이프라인
각 슬롯의 아이템은 아이템 파이프라인에 의해 처리됩니다. 아이템 파이프라인은 특정 타입의 에셋을 빌드하고 어셈블하는 방법을 제어하는 C++ 클래스입니다. 예를 들어 그룸 에셋용 아이템 파이프라인은 빌드 단계에서 스트랜드 데이터를 처리하고 헤어 머티리얼 파라미터를 적용한 다음 어셈블리 동안 결과를 캐릭터의 헤드에 어태치합니다.
에셋 타입별 로직은 컬렉션 파이프라인 전체에서 재사용할 수 있습니다. 아이템 파이프라인이 컬렉션 파이프라인 사양에 선언된 인터페이스를 구현하는 한, 기존 컬렉션 파이프라인 내에서 사용할 자신만의 아이템 파이프라인을 정의할 수도 있습니다.
컬렉션의 각 의상 아이템에는 명시적인 아이템 파이프라인이 할당될 수 있습니다. 그렇지 않은 경우, 컬렉션 파이프라인은 에셋 타입에 따라 예비 전환을 제공합니다.
커스텀 파이프라인을 생성한다는 것은 사용자가 프로젝트에 필요한 에셋 타입을 처리하기 위해 자신만의 아이템 파이프라인 서브클래스를 작성한다는 것을 의미하게 됩니다. BuildItem() 메서드는 컬렉션 빌드 동안 실행되어 에셋을 생성합니다. AssembleItem() 메서드는 인스턴스 어셈블리 동안 실행되어 그 결과를 최종 캐릭터로 구성합니다.