MetaHuman을 적용하는 방법이 다양하겠지만 MetaHuman의 Skeletal이 아닌 기존에 만들어둔 Player에 MetaHuman을 덧입히는 방법을 소개하고자 한다.

먼저 MetaHuman Creator를 통해 메타휴먼을 만들면 다음과 같이 QuixelBridge에 직접 만든 메타휴먼이 생긴다.
이는 시네마틱을 위한 용도가 아닌 이상 상당히 큰 메모리를 잡아먹기에 Low Quality로 다운로드를 받아서 Add 해준다.

Add를 하게되면 다음과 같이 MetaHuman 폴더에 BlueprintClass로 메타휴먼이 생긴다.
이에 대한 원본을 보존하기 위해 복제를 한 뒤, 복제한 파일을 열어 수정을 해줄 것이다.

처음 메타휴먼을 열게되면 부모클래스가 Actor로 되어있을 것이다. 이를 Class Settings에서 기존에 사용하던 Player로 바꿔준다. 블루프린트로 작업을 해왔다면 BP파일을 넣어주면 되고, C++로 했다면 CPP파일을 넣어주면 된다.

부모클래스를 바꿔주면 부모클래스의 Component와 메타휴먼의 Component가 합쳐지게 된다. 여기서 메타휴먼의 Root Component를 기존 Character 클래스의 Mesh Component에 상속시켜준다.

메타휴먼의 Root Component의 Location값을 모두 0으로 바꿔준다. 이렇게 되면 기존에 있던 Character의 Location에 동일하게 자리를 잡게 될 것이다.

그 후, 기존의 Character에 존재하던 Mesh Component의 Visible을 false로 바꿔준다.
Visibility Based Anim Tick Option 옵션 또한 Always Tick Pose and Referesh Bones로 바꿔준다.


Live Retarget 카테고리에 있는 UseLiveRetargetMode변수의 Use Live Retarget Mode를 True로 바꿔준다.
이후, 블루프린트로 작업을 했다면 이전에 있던 블루프린트 코드를 옮겨주고, C++로 작업을 했다면 따로 블루프린트로 작성한 코드가 있지 않는 이상 정상적으로 동작을 할 것이다.
이렇게 메타휴먼을 적용시켰다면 이전과 달리 상당히 프레임이 떨어지는 모습을 볼 수 있다. 완전히 이전과 같이 복구시킬 순 없겠으나 아래와 같이 방법을 통해 어느정도 최적화가 가능하다.

프로젝트 세팅에서 Motion Blur를 false로 바꿔준다. 이는 메타휴먼 캐릭터가 움직이는 과정에서 머리카락에 Motion Blur가 적용되기에 이를 없애주는 것이다.

메타휴먼의 메모리를 차지하는 부분 중 가장 큰 것이 수염과 머리카락이다. 이를 최소화하기 위해 머리카락, 눈썹 등 캐릭터의 외형에 있어서 매우 중요한 부분들을 제외하고는 없애주는 것이 좋다.

캐릭터의 렌더링 부분이다. NumLODs를 1로 바꿔주고, MinLOD의 값을 바꿔가며 적당한 합의를 보아야 한다. MinLOD값이 0일 때, 가장 고퀄리티의 캐릭터 외형을 볼 수 있고, 값이 높아질수록 퀄리티가 낮아진다.

생성된 메타휴먼 폴더에 Texture 필터를 적용하면 위와 같이 MetaHuman에 사용된 모든 Texture를 볼 수 있다.

이를 Ctrl+A 를 통해 모두 선택하고 우클릭한 뒤, Edit Selection in Property Matrix를 선택해준다.

그렇게되면 위와 같이 모든 Texture에 대해 수정이 가능한데 여기서 다시 한 번 Ctrl+A로 모든 파일을 선택하고, 우측에 Compression 메뉴에 Maximum Texture Size를 조정해줄 수 있다. 이는 최고 사이즈만 조절함으로써 설정한 값보다 높은 Texture의 크기만 수정됨으로 메타휴먼에 사용된 Texture의 메모리를 줄일 수 있다.