언리얼 5.5 스터디 - Mutable Character Customization

Woogle·2024년 12월 1일
0

언리얼 엔진 5

목록 보기
61/63

📄 개요

Mutable Character Customization은 언리얼 엔진 5.5버전부터 지원되는 플러그인으로,
런타임 중 동적으로 스켈레탈 메시를 수정할 수 있다.

🚀 mutable vs. const 키워드

  • const : 변수 및 객체를 수정할 수 없다.
  • mutable : 클래스 멤버 변수에 사용되며, const 함수에서도 수정 가능하다.
class Example
{
    const int ConstValue;     // const 함수에서 수정 불가
    mutable int MutableValue; // const 함수에서도 수정 가능

public:
    void ConstFunction() const
    {
        // ConstValue++;      // 컴파일 에러
        MutableValue++;       // 가능
    }
};

📄 튜토리얼

🔌 플러그인 활성화

프로젝트 세팅 → 플러그인 → Mutable 플러그인을 활성화해야한다.
이 플러그인은 언리얼 엔진 5.5 버전 이상부터 지원된다.

🎨 Customizable Object 생성

Customizable Object는 스켈레탈 메쉬의 런타임 파라미터를 사전에 정의하는 객체다.
셰이더 컴파일되는 Master Material과 비슷하다.

  • Customiazble Object 구성
    공식 튜토리얼을 참고하여 아래와 같이 런타임 파라미터를 셋팅했다.
    • 피부색: Texture Layer에서 사용되는 float 변수를 만들었다. (SkinTone)
    • 상의/하의: Toggle 가능한 그룹 Object를 사용했다.
    • 신발: CO_Boots, CO_Sneakers를 만들어 CO_Character의 Shoes 그룹에 등록했다.

🎭 Customizable Object Instance 생성

Customizable Object로 생성할 수 있는 인스턴스로, 런타임 파라미터 변경이 가능하다.
Master Material로 만들어진 Material Instance과 비슷하다.

  • Runtime Parameter 수정 테스트

CO에 정의한 런타임 파라미터인 Pants, Shirt, Shoes, SkinTone 값을 수정하면, COI의 뷰포트에 반영되는 것을 볼 수 있다.

( ※ Shirt가 몸을 뚫고 나오는 현상은 Mesh Morph 노드로 개선할 수 있다. )

🦴 Customizable Skeletal Component 적용

Customizable Object Instance를 Skeletal Mesh Component에 적용하기 위한 연결고리다.

  • 캐릭터에 Customizable Skeletal Component 추가
    캐릭터 메쉬가 런타임 중에 변경될 수 있도록, Customizable Skeletal Component를 어태치하고 COI와 Component Name 정보를 입력했다.

  • COI Parameter 수정 함수
    런타임 중 COI Parameter를 변경할 수 있는 함수들도 만들었다.

    • 상의/하의 토글 함수 (bool)
    • 피부톤 변경 함수 (float)
    • 신발 교체 함수 (int)

🧪 테스트 결과

런타임 중에 COI Parameter 수정을 통해 캐릭터 메쉬가 잘 수정된다.


📄 소감

👍 장점

  • Dynamic Material Instance를 쓰듯이 런타임에 온갖 Parameter를 접근해서 변경할 수 있다.
  • 체형이 다르더라도 파츠 별로 Customizable Object를 만들어 관리할 수 있다.

👎 단점

  • 런타임에 COI Parameter를 수정할 때, String으로 접근하기 때문에 CO의 구조를 머릿속에 기억하면서 작업해야 한다.
  • 아티스트가 미리 Mesh Section 단위로 메쉬와 머터리얼을 제작해야한다.

🤔 종합

  • Mutable Character Customization은 GTA 시리즈 같이 큰 규모의 게임을 만들 때 생산성 및 최적화 측면에서 쓸만할 것 같다.
  • 일반적인 규모의 게임에서는 기존의 Master Pose, Set Skeletal Mesh 방식으로 구현하는 것이 생산성 및 최적화 측면에서 유리할 것 같다.

📄 참고 문서

profile
노력하는 게임 개발자

0개의 댓글