본문 바로가기
Unreal Engine 5

UE5 머티리얼 인스턴스(Material Instance)

by 니키티스 2025. 4. 11.

해당 글은 언리얼 엔진 5의 Material Instance에 관한 공식 문서를 읽고 이를 정리한 글입니다. 대부분은 공식 문서에서 가져왔지만, 일부 자료는 현재 프로젝트를 진행하면서 만든 쉐이더나 머티리얼에 대한 사진을 활용하였습니다.

오타나 오류가 있다면 지적해 주시면 감사하겠습니다.

참고 문서https://dev.epicgames.com/documentation/ko-kr/unreal-engine/creating-and-using-material-instances-in-unreal-engine#%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EA%B7%B8%EB%A3%B9%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0


 

머티리얼 인스턴스(Material Instance)란 부모 머티리얼을 상속받아 어트리뷰트를 커스터마이징 할 수 있는 자식 머티리얼을 말한다. 실제 생성 시 Material Instance라고 Material과는 다른 형태로 제공된다.

머티리얼 인스턴스를 활용하면 여러 개의 머티리얼을 하나의 부모 머티리얼로 제어할 수 있어 유용하며, 부모 머티리얼만 변경하여 손쉽게 여러 개의 머티리얼의 표현 방법을 바꿀 수 있다는 점에서 장점이 있다.

 

기존 Material을 우클릭하면 Create Material Instance라는 옵션이 나오는데, 이를 통해 생성한다.

파라미터 노드 활용하기

머티리얼 인스턴스를 만들기 위해서는 먼저 부모가 될 머티리얼을 만들어야 한다.

여기에서는 현재 진행 중인 프로젝트에서 사용 중인 카툰 렌더링 쉐이더를 사용해 보도록 하겠다.

툰 쉐이더를 나타내는 M_ToonShader의 Material 에디터 완성샷.

파라미터 노드

머티리얼 인스턴스를 만들려면, 부모 머티리얼을 만들 때 자식 머티리얼에서 조정할 수 있도록 몇 가지 설정을 만들어주어야 한다.

머티리얼 인스턴스에서는 파라미터로 등록한 어트리뷰트만 조정이 가능하기 때문에, 부모 머티리얼에서는 파라미터로 사용될 수 있는 ‘파라미터 노드’를 추가해줘야 한다.

이는 Parameters로 검색하면 나오는 여러 노드가 바로 그것이다.

Material 에디터에서 우클릭해서, Parameters 하위에 나와 있는 모든 것이 Parameter 노드이다.

가장 흔히 사용되는 머티리얼 파라미터 두 가지에 대해서는 머티리얼 에디터에서 키보드 단축키로 접근할 수 있다.

  1. 스칼라 파라미터(Scalar Parameter): S를 누른 상태에 머티리얼 그래프 좌클릭. 상수를 파라미터화한 버전으로 하나의 값을 갖는다.
  2. 벡터 파라미터(Vector Parameter): V키를 누른 상태에서 머리티얼 그래프 좌클릭. 상수 4 벡터를 파라미터화한 버전으로 네 개의 부동 소수점 값을 갖는다.

파라미터 노드는 이런 식으로 생성된다.

이외에 TextureSampleParameter2D 등은 단축키로 안 되니 검색해서 생성하자.

파라미터 노드 조정

디테일 패널에서 파라미터의 디폴트 값이나 값의 범위를 설정할 수도 있다.

예를 들어, Roughness 값을 0~1 사이로 설정하기 위해 Slider Min를 0, Slider Max를 1로 설정할 수 있다.

노드를 파라미터로 변환하기

기존 머티리얼 그래프 내에서 쓰던 표현식을 파라미터로 변환할 수도 있다.

예를 들어, 3을 누른 상태에서 에디터를 클릭하면 Constan3Vector 노드를 배치할 수 있다. 열심히 다 작업을 하고 나서, 생각해 보니 이 노드를 파라미터로 바꾸어 조정할 수 있게 하고 싶을 수도 있다.

그 경우, 노드를 우클릭하고 Convert to Parameter를 누르면 노드를 파라미터로 변환할 수 있다.

당연하지만, 노드를 나타내는 이름은 적절히 지정해주어야 한다.

파라미터화된 머티리얼의 생성

파라미터화 머티리얼을 만들어 보자

일단 중간 테스트를 위해 간단하게 툰쉐이더를 제작해 보았다. 이제 이를 통해 Material Instance를 만들어 보자.

여러 파라미터 노드를 사용하여 머티리얼을 생성했는데, 이제 머티리얼 인스턴스를 생성하면 이 파라미터를 조정하여 프로퍼티를 바꿀 수 있게 된다.

상단의 Apply 버튼을 누르고 저장(Save) 버튼을 누르자.

머티리얼 인스턴스는 원본 머티리얼을 우클릭하고 Create Material Instance를 누르면 된다. 생성한 머티리얼에서 적절히 이름을 지정해 주면 끝이다.

이때, 생성한 Material Instance를 더블 클릭하면 커스터마이징이 가능하다.

우측 상단의 Parameter Group에서 수정할 Material 어트리뷰트를 체크하고, 자유롭게 값을 편집하자.

공식 문서에서의 설명. 변경할 옵션을 체크하고, 값을 변경하면 된다. (3번) 뒤로가기 버튼을 누르면 초기화가 가능하다.

아래와 같이 자유롭게 설정을 바꿀 수 있으니 자유롭게 파라미터 값을 바꾸며 실험해 보자.

 

파라미터 그룹 사용

그런데 Material Instance에서 앞에서처럼 만든 파라미터들은 정리가 깔끔하게 되지 않는다.

Material Instance에서 파라미터 노드는 위와 같이 표시된다.

살펴보면 알겠지만, 단순히 어떤 종류의 파라미터인지에 따라(스칼라인지, 벡터인지, 텍스처인지 등) 그룹을 나눠줄 뿐이다.

파라미터가 매우 많아지면 파라미터를 별도로 그룹화해주지 않으면 편집하기 어려워진다.

공식 문서에서 비교한 것을 살펴보자.

두 장의 그림을 비교할 건데, 위는 파라미터 그룹이 없는 예시이고, 아래는 파라미터 그룹을 통해 머티리얼 어트리뷰트를 깔끔하게 정리한 모습이다.

파라미터 그룹을 활용하지 않았을 때(공식 문서 출처)
파라미터 그룹으로 어트리뷰트를 정리한 모습(공식 문서 출처)

확실히 가독성이 달라지는 것을 볼 수 있다.

파라미터 그룹 사용법

파라미터 그룹은 부모 머티리얼에서 설정할 수 있다. 머티리얼 에디터의 디테일 패널에서 그룹을 설정할 수 있다.

먼저 파라미터 그래프에서 머티리얼 파라미터 노드를 하나 선택한다.

그다음으로 디테일 패널의 그룹(Group) 필드에 이름을 입력한다. 그룹 이름은 자유롭게 정해도 되는데, 머티리얼 어트리뷰트의 종류별로 나누는 것을 추천한다고 한다.

새로운 그룹을 만들 땐 이런 식으로 입력하면 되지만, 그 이후 파라미터에 대해서는 새 그룹 이름을 입력하거나 오른쪽 드롭다운에서 기존 그룹을 선택할 수도 있다.

그룹 내 파라미터 정렬하기

이렇게 하면 같은 그룹 내에서는 파라미터들이 알파벳 순서대로 정렬된다.

그 대신 원하는 순서대로 출력하고 싶다면, 정렬 우선순위(Sort Priority) 필드를 사용해야 한다.

Sort Priority에 정수 값을 입력하면 되는데, 낮을수록 우선순위가 높다.

그렇게 하면 아래와 같이 되어 있던 GLOBAL SHADOW 파라미터 그룹의 순서를,

다음과 같이 원하는 순서로 변경할 수 있다.

파라미터 그룹 정렬하기

파라미터 그룹 내에서 정렬은 Sort Priority를 사용하면 된다.

반면, 파라미터 그룹의 순서도 정렬하고 싶을 수 있다. 기본은 알파벳 순서이기 때문에, 순서를 바꾸려면 두 가지 방법을 쓸 수 있다.

첫 번째 방법그룹 이름에 숫자를 추가하는 것이다.

메가스캔 부모 머티리얼에서 사용하는 방식인데, 파라미터 그룹 이름에 00~07 등의 숫자를 붙이는 것이다.

두 번째 방법그룹 정렬 우선순위(Group Sort Priority)를 사용하는 것이다. 이 프로퍼티는 머티리얼 인스턴스가 아니라 부모 머티리얼에 있다고 한다.

(주의점! UE 5.4를 사용하는데 저만 그런 것인지 Group Sorting을 찾을 수 없습니다. 다른 분들도 해당 버전에서는 안 보일 수도 있습니다. 뭐가 문제인지 모르겠는데, 다른 분들도 그렇다면 댓글을 남겨주시면 감사하겠습니다.)

이는 다음과 같이 설정할 수 있다.

  1. 머티리얼 그래프의 노드를 선택 해제하여, 머티리얼 프로퍼티에 접근하기
  2. 디테일 패널에서 그룹 정렬(Group Sorting)을 펼치고, 파라미터 그룹 데이터(Parameter Group Data)를 선택하기
  3. 이 섹션에서 모든 파라미터 목록을 볼 수 있는데, 각 인덱스를 펼쳐 Group Sort Priority를 변경하여 그룹 정렬 순서를 변경할 수 있다.

이렇게 그룹별로 Priority를 설정할 수 있다고 한다.

 

머티리얼 인스턴스의 부모 머티리얼 변경하기

머티리얼 인스턴스는 부모 머티리얼을 빠르게 변경할 수 있다.

머티리얼 인스턴스에서 디테일 패널 > 일반(General) 섹션 > 부모(Parent) 프로퍼티를 볼 수 있는데,

드롭다운에서 다른 부모 머티리얼로 변경할 수 있다.

다만, 부모 머티리얼을 사용하면 이전에 사용하던 파라미터를 사용하지 못할 수 있으므로, 주의해야 한다고 한다.

 

참고 자료

언리얼 엔진 공식 문서(https://dev.epicgames.com/documentation/ko-kr/unreal-engine/creating-and-using-material-instances-in-unreal-engine#%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EA%B7%B8%EB%A3%B9%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0), 설명 및 사진 자료

카툰 쉐이더는 프로젝트에서 제작 중인 자료를 사용하였습니다.

댓글