
머티리얼 파라미터 컬렉션(MaterialParameterCollection) 은 머티리얼에서 참조할 수 있는 임의의 스칼라 및 벡터 파라미터 세트를 저장하는 에셋입니다. 아티스트가 글로벌 데이터를 한 번에 여러 머티리얼로 전달하는 데 사용할 수 있는 강력한 툴입니다. 또한 머티리얼 파라미터 컬렉션을 사용하여 눈양, 파괴량, 습기 등의 레벨별 이펙트를 구동할 수 있습니다. 그렇지 않으면 레벨 내 많고 다양한 머티리얼 인스턴스에서 개별 파라미터 값을 설정해야 합니다.
위의 예시에서 머티리얼 파라미터 컬렉션에 저장된 글로벌 파라미터는 씬의 다음과 같은 요소를 제어하는 데 사용됩니다.
- 바람의 속도와 세기에 따라 꽃의 모프가 나타납니다.
- 플레이어의 위치가 트래킹되어 폴리지로 전달됩니다. 해당 위치 정보는 플레이어가 근처에서 걸어갈 때 꽃과 잔디가 플레이어로부터 멀어지도록 하는 데 사용됩니다.
- 태양 각도 및 컬러도 트래킹하여 물마루에 컬러를 올바르게 입히고, 빛이 파도 마루를 직접 관통하여 빛나는 경우(플레이어가 태양을 바라보고 있는 경우)에만 이펙트가 구현되도록 제한합니다.
- 하루의 시간에 따른 이펙트의 배색 및 물에 대한 전반적인 디퓨즈 라이팅 컬러도 제어됩니다.
머티리얼 파라미터 컬렉션 생성 및 편집하기
머티리얼 파라미터 컬렉션은 콘텐츠 브라우저에서 생성되는 별도 타입의 에셋입니다. 다음 단계를 따라 머티리얼 파라미터 컬렉션을 생성하고 파라미터를 추가합니다.
-
콘텐츠 브라우저에서 우클릭 하고 고급 에셋 생성(Create Advanced Asset) 섹션에서 머티리얼(Material) 서브카테고리를 펼칩니다. 컨텍스트 메뉴에서 머티리얼 파라미터 컬렉션 을 선택합니다.
-
포함할 파라미터 타입을 설명할 수 있도록 MaterialParameterCollection 에셋의 이름을 변경합니다. 이 예시에서는 MPC_GlobalParams 라는 이름을 사용합니다. 에셋을 더블클릭 하여 머티리얼 파라미터 컬렉션을 편집합니다.
-
머티리얼 파라미터 컬렉션에 포함된 스칼라 파라미터(Scalar Parameters) 및 벡터 파라미터(Vector Parameters) 를 표시하는 새 창이 열립니다.
-
컬렉션에 파라미터를 추가하려면 스칼라 또는 벡터 파라미터 섹션에서 엘리먼트 추가 (+) 아이콘을 클릭합니다. 이 예시의 경우 스칼라 파라미터 를 추가합니다. GlobalEmissivePower 로 명명하고 디폴트 값을 1.0 로 변경합니다.
-
필요에 따라 스칼라 또는 벡터 파라미터를 더 추가할 수 있습니다. 단일 머티리얼 파라미터 컬렉션에는 최대 1024개의 스칼라 파라미터와 1024개의 벡터 파라미터를 저장할 수 있습니다.
머티리얼에 머티리얼 파라미터 컬렉션 사용하기
이제 머티리얼 파라미터 컬렉션의 파라미터를 사용하여 머티리얼의 어트리뷰트를 정의할 수 있습니다. 머티리얼 파라미터 컬렉션의 주된 장점 중 하나는 파라미터 값이 머티리얼 자체의 별도 에셋에 저장된다는 것입니다. 즉, 원하는 만큼 많은 머티리얼에서 머티리얼 파라미터 컬렉션을 참조할 수 있으며, 머티리얼 파라미터 컬렉션에서 값을 변경할 때 이 컬렉션을 참조하는 모든 머티리얼에 자동으로 영향을 줍니다.
다음 단계를 따라 베이스 머티리얼에서 머티리얼 파라미터 컬렉션을 참조합니다.
-
콘텐츠 브라우저에서 우클릭 하고 컨텍스트 메뉴의 기본 에셋 생성 섹션에서 머티리얼 을 클릭합니다. 머티리얼을 설명하는 이름을 지정합니다.
-
이제 콘텐츠 브라우저에 머티리얼과 이전 섹션에서 생성한 머티리얼 파라미터 컬렉션이 있을 것입니다. 머티리얼 을 더블클릭 하여 머티리얼 에디터에서 엽니다.
-
Fresnel 표현식을 사용하여 이 머티리얼을 에지 주변이 살짝 더 밝게 빛나는 단순한 이미시브 표면으로 만들어 보겠습니다. 머티리얼 그래프에 다음과 같은 머티리얼 표현식 노드를 추가합니다.
머티리얼 표현식 타입 이름 디폴트값 벡터 파라미터 Base Color 1,0,0,0 벡터 파라미터 Emissive Color 0.1,0.01,0.14,0 곱하기 - x2 해당 없음 해당 없음 프레넬 해당 없음 해당 없음 아래 이미지에 표시된 대로 머티리얼 표현식을 연결합니다.
-
머티리얼 그래프에서 Fresnel 노드를 선택합니다. 디테일 패널에서 익스포넨트(Exponent) 를 6 으로, 베이스 리플렉트 프랙션(Base Reflect Fraction) 을 0.1 로 설정합니다. 이 프로퍼티들은 림 라이팅 이펙트의 감쇠를 제어합니다. 익스포넨트 값을 높이거나 낮춰 표면이 Fresnel 노드의 영향을 얼마나 받는지 실험해 봅니다.
-
머티리얼 그래프에서 우클릭 하고 'collection'을 검색하여 그래프에 CollectionParameter 를 추가합니다. 이 노드는 머티리얼 그래프에 머티리얼 파라미터 컬렉션의 정보를 가져오는 데 사용됩니다.
-
머티리얼 그래프에서 Collection Param 노드를 선택합니다. 디테일 패널의 컬렉션(Collection) 드롭다운 메뉴에서 앞서 생성한 MPC_GlobalParameters 컬렉션을 선택합니다.
-
파라미터 이름(Parameter Name) 드롭다운 메뉴에서 EmissivePower 파라미터를 선택합니다.
-
아래 이미지와 같이 'EmissivePower' 노드를 Multiply 노드의 개방된 B 입력에 연결합니다.
-
머티리얼 에디터 툴바에서 저장(Save) 을 클릭하여 머티리얼을 컴파일 및 저장합니다. 에셋을 저장한 후에는 머티리얼 에디터를 닫아도 됩니다.
머티리얼 파라미터 컬렉션 테스트하기
머티리얼 파라미터 컬렉션이 여러 머티리얼의 어트리뷰트를 제어하는 데 유용하다는 사실을 입증하기 위해, 하나 이상의 머티리얼 인스턴스를 생성하여 씬의 다양한 오브젝트에 적용해 볼 수 있습니다.
-
베이스 머티리얼을 우클릭 하고 컨텍스트 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 을 선택합니다.
-
베이스 머티리얼 및 머티리얼 인스턴스를 레벨의 서로 다른 두 오브젝트에 적용합니다. 머티리얼 인스턴스에서 베이스 컬러와 이미시브 컬러 파라미터를 변경해 보면 두 오브젝트를 구분할 수 있습니다.
-
이제 머티리얼 파라미터 컬렉션을 열어 EmissivePower 값을 변경하면, 새 값은 베이스 머티리얼과 머티리얼 인스턴스 둘 다에 즉시 전파될 것입니다.
블루프린트를 통해 머티리얼 파라미터 컬렉션 업데이트하기
블루프린트를 통해 머티리얼 파라미터 컬렉션과 상호작용할 수도 있습니다. 이는 플레이어가 게임플레이 중에 머티리얼의 외관을 조작할 수 있다는 의미에서 매우 강력한 툴이 되어줍니다. 아래 예시는 키 입력에 반응하도록 두 머티리얼의 EmissivePower 를 변경하는 방법을 보여줍니다. 런타임에 B 를 누르면 이미시브 값이 밝아지고, D 키를 누르면 어두워집니다. 눌렀던 키를 떼면 파라미터는 원래 값인 1 로 돌아갑니다.
-
메인 에디터 뷰포트 위의 툴바에서 블루프린트(Blueprints) 드롭다운 메뉴를 펼치고 목록에서 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.
-
레벨 블루프린트에서 우클릭 하고 keyboard event 를 검색합니다. 컨텍스트 메뉴에서 B 키보드 이벤트를 추가합니다. 이 동작을 반복하여 D 키보드 이벤트를 추가합니다.
-
레벨 블루프린트에서 우클릭 하고 블루프린트에 Set Scalar Parameter Value 노드를 추가합니다. 컬렉션(Collection) 드롭다운 메뉴에서 *MPC_GlobalParams 머티리얼 파라미터 컬렉션을 참조합니다.
파라미터(Parameter) 드롭다운 메뉴에서 EmissivePower 파라미터를 참조합니다.
-
Set Scalar Parameter Value 노드 를 2번 복제하면 블루프린트에 3개의 사본이 생깁니다. 블루프린트 그래프가 아래 이미지처럼 보이도록 노드를 와이어로 연결합니다. B 및 D 키보드 이벤트 노드의 Pressed 출력을 첫 번째 및 세 번째 Set Scalar Parameter Value 노드의 입력에 연결해야 합니다. 두 키보드 이벤트 노드의 Released 출력은 두 번째 Set Scalar Parameter Value 노드의 입력에 연결해야 합니다.
-
마지막 단계는 각 키보드 이벤트에 반응하는 EmissivePower 의 파라미터 값(Parameter Value) 을 설정하는 것입니다. 이 예시에서 B 를 누르면 EmissivePower 가 50 으로 늘어납니다. D 를 누르면 EmissivePower 는 0.05 로 줄어듭니다. 두 키를 모두 떼면 파라미터는 원래 값인 1 로 설정됩니다.
-
블루프린트 에디터 툴바에서 컴파일(Compile) 을 클릭하여 레벨 블루프린트를 컴파일합니다. 이제 게임 내에서 변경사항을 테스트할 수 있습니다.
-
에디터 툴바의 에디터에서 플레이 아이콘을 클릭하고 B 및 D 를 누르거나 떼서 블루프린트를 테스트합니다. 결과는 아래 영상에 나와 있습니다.
제한 사항 및 퍼포먼스 특성
머티리얼은 최대 2개의 서로 다른 머티리얼 파라미터 컬렉션을 참조할 수 있습니다. 하나는 게임 전체에 적용되는 값에 일반적으로 사용되는 반면, 다른 하나는 레벨별 파라미터에 사용할 수 있습니다. 컬렉션에는 최대 1024개의 스칼라 파라미터와 1024개의 벡터 파라미터를 저장할 수 있습니다.
한 컬렉션의 파라미터 수를 수정하면 해당 컬렉션을 참조하는 모든 머티리얼을 리컴파일하게 됩니다. 많은 파라미터를 추가해야 하는 경우 빈 맵에 파라미터를 미리 추가해 두는 편이 더 빠를 수 있습니다.
파라미터 이름을 변경하는 경우 해당 파라미터를 참조하는 모든 머티리얼은 예상대로 계속 작동합니다. 그러나 해당 파라미터를 참조하는 모든 블루프린트는 깨지게 됩니다. 이 문제를 해결하려면 컬렉션에서 작동하는 블루프린트 함수의 ParameterName을 재할당해야 합니다.
다양한 머티리얼 인스턴스에서 서로 다른 다수의 파라미터를 설정하는 것보다 머티리얼 파라미터 컬렉션의 값을 업데이트하는 것이 훨씬 효율적입니다.