머티리얼 파라미터 컬렉션

모든 머티리얼에서 참조할 수 있는 임의의 스칼라 및 벡터 파라미터 세트를 저장하는 에셋입니다.

GlobalParams1.jpg

머티리얼 파라미터 컬렉션(MaterialParameterCollection) 은 머티리얼에서 참조할 수 있는 임의의 스칼라 및 벡터 파라미터 세트를 저장하는 에셋입니다. 아티스트가 글로벌 데이터를 한 번에 여러 머티리얼로 전달하는 데 사용할 수 있는 강력한 툴입니다. 또한 머티리얼 파라미터 컬렉션을 사용하여 눈양, 파괴량, 습기 등의 레벨별 이펙트를 구동할 수 있습니다. 그렇지 않으면 레벨 내 많고 다양한 머티리얼 인스턴스에서 개별 파라미터 값을 설정해야 합니다.

GlobalParams1.png GlobalParams2.png

위의 예시에서 머티리얼 파라미터 컬렉션에 저장된 글로벌 파라미터는 씬의 다음과 같은 요소를 제어하는 데 사용됩니다.

  • 바람의 속도와 세기에 따라 꽃의 모프가 나타납니다.

  • 플레이어의 위치가 트래킹되어 폴리지로 전달됩니다. 해당 위치 정보는 플레이어가 근처에서 걸어갈 때 꽃과 잔디가 플레이어로부터 멀어지도록 하는 데 사용됩니다.

  • 태양 각도 및 컬러도 트래킹하여 물마루에 컬러를 올바르게 입히고, 빛이 파도 마루를 직접 관통하여 빛나는 경우(플레이어가 태양을 바라보고 있는 경우)에만 이펙트가 구현되도록 제한합니다.

  • 하루의 시간에 따른 이펙트의 배색 및 물에 대한 전반적인 디퓨즈 라이팅 컬러도 제어됩니다.

머티리얼 파라미터 컬렉션 생성 및 편집하기

머티리얼 파라미터 컬렉션은 콘텐츠 브라우저에서 생성되는 별도 타입의 에셋입니다. 다음 단계를 따라 머티리얼 파라미터 컬렉션을 생성하고 파라미터를 추가합니다.

  1. 콘텐츠 브라우저에서 우클릭 하고 고급 에셋 생성(Create Advanced Asset) 섹션에서 머티리얼(Material) 서브카테고리를 펼칩니다. 컨텍스트 메뉴에서 머티리얼 파라미터 컬렉션 을 선택합니다.

    Create new MaterialParameterCollection

  2. 포함할 파라미터 타입을 설명할 수 있도록 MaterialParameterCollection 에셋의 이름을 변경합니다. 이 예시에서는 MPC_GlobalParams 라는 이름을 사용합니다. 에셋을 더블클릭 하여 머티리얼 파라미터 컬렉션을 편집합니다.

    Rename Material Parameter Collection

  3. 머티리얼 파라미터 컬렉션에 포함된 스칼라 파라미터(Scalar Parameters)벡터 파라미터(Vector Parameters) 를 표시하는 새 창이 열립니다.

    Open Material Parameter Collection

  4. 컬렉션에 파라미터를 추가하려면 스칼라 또는 벡터 파라미터 섹션에서 엘리먼트 추가 (+) 아이콘을 클릭합니다. 이 예시의 경우 스칼라 파라미터 를 추가합니다. GlobalEmissivePower 로 명명하고 디폴트 값을 1.0 로 변경합니다.

    Add Scalar Parameter to MPC

  5. 필요에 따라 스칼라 또는 벡터 파라미터를 더 추가할 수 있습니다. 단일 머티리얼 파라미터 컬렉션에는 최대 1024개의 스칼라 파라미터와 1024개의 벡터 파라미터를 저장할 수 있습니다.

머티리얼에 머티리얼 파라미터 컬렉션 사용하기

이제 머티리얼 파라미터 컬렉션의 파라미터를 사용하여 머티리얼의 어트리뷰트를 정의할 수 있습니다. 머티리얼 파라미터 컬렉션의 주된 장점 중 하나는 파라미터 값이 머티리얼 자체의 별도 에셋에 저장된다는 것입니다. 즉, 원하는 만큼 많은 머티리얼에서 머티리얼 파라미터 컬렉션을 참조할 수 있으며, 머티리얼 파라미터 컬렉션에서 값을 변경할 때 이 컬렉션을 참조하는 모든 머티리얼에 자동으로 영향을 줍니다.

다음 단계를 따라 베이스 머티리얼에서 머티리얼 파라미터 컬렉션을 참조합니다.

  1. 콘텐츠 브라우저에서 우클릭 하고 컨텍스트 메뉴의 기본 에셋 생성 섹션에서 머티리얼 을 클릭합니다. 머티리얼을 설명하는 이름을 지정합니다.

    Create new Material

  2. 이제 콘텐츠 브라우저에 머티리얼과 이전 섹션에서 생성한 머티리얼 파라미터 컬렉션이 있을 것입니다. 머티리얼더블클릭 하여 머티리얼 에디터에서 엽니다.

    Material and MPC in Content Browser

  3. Fresnel 표현식을 사용하여 이 머티리얼을 에지 주변이 살짝 더 밝게 빛나는 단순한 이미시브 표면으로 만들어 보겠습니다. 머티리얼 그래프에 다음과 같은 머티리얼 표현식 노드를 추가합니다.

    머티리얼 표현식 타입

    이름

    디폴트값

    벡터 파라미터

    Base Color

    1,0,0,0

    벡터 파라미터

    Emissive Color

    0.1,0.01,0.14,0

    곱하기 - x2

    해당 없음

    해당 없음

    프레넬

    해당 없음

    해당 없음

    아래 이미지에 표시된 대로 머티리얼 표현식을 연결합니다.

    Emissive starting Material Graph

  4. 머티리얼 그래프에서 Fresnel 노드를 선택합니다. 디테일 패널에서 익스포넨트(Exponent)6 으로, 베이스 리플렉트 프랙션(Base Reflect Fraction)0.1 로 설정합니다. 이 프로퍼티들은 림 라이팅 이펙트의 감쇠를 제어합니다. 익스포넨트 값을 높이거나 낮춰 표면이 Fresnel 노드의 영향을 얼마나 받는지 실험해 봅니다.

    Fresnel Material Expression properties

  5. 머티리얼 그래프에서 우클릭 하고 'collection'을 검색하여 그래프에 CollectionParameter 를 추가합니다. 이 노드는 머티리얼 그래프에 머티리얼 파라미터 컬렉션의 정보를 가져오는 데 사용됩니다.

    Unspecified Collection Parameter

  6. 머티리얼 그래프에서 Collection Param 노드를 선택합니다. 디테일 패널의 컬렉션(Collection) 드롭다운 메뉴에서 앞서 생성한 MPC_GlobalParameters 컬렉션을 선택합니다.

    Select Material parameter Collection

  7. 파라미터 이름(Parameter Name) 드롭다운 메뉴에서 EmissivePower 파라미터를 선택합니다.

    Select Emissive Power parameter

  8. 아래 이미지와 같이 'EmissivePower' 노드를 Multiply 노드의 개방된 B 입력에 연결합니다.

    Select Emissive Power parameter

  9. 머티리얼 에디터 툴바에서 저장(Save) 을 클릭하여 머티리얼을 컴파일 및 저장합니다. 에셋을 저장한 후에는 머티리얼 에디터를 닫아도 됩니다.

    Save Material Asset

머티리얼 파라미터 컬렉션 테스트하기

머티리얼 파라미터 컬렉션이 여러 머티리얼의 어트리뷰트를 제어하는 데 유용하다는 사실을 입증하기 위해, 하나 이상의 머티리얼 인스턴스를 생성하여 씬의 다양한 오브젝트에 적용해 볼 수 있습니다.

  1. 베이스 머티리얼을 우클릭 하고 컨텍스트 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 을 선택합니다.

    Create a Material Instance

  2. 베이스 머티리얼 및 머티리얼 인스턴스를 레벨의 서로 다른 두 오브젝트에 적용합니다. 머티리얼 인스턴스에서 베이스 컬러와 이미시브 컬러 파라미터를 변경해 보면 두 오브젝트를 구분할 수 있습니다.

    Apply Materials to objects in level

  3. 이제 머티리얼 파라미터 컬렉션을 열어 EmissivePower 값을 변경하면, 새 값은 베이스 머티리얼과 머티리얼 인스턴스 둘 다에 즉시 전파될 것입니다.

블루프린트를 통해 머티리얼 파라미터 컬렉션 업데이트하기

블루프린트를 통해 머티리얼 파라미터 컬렉션과 상호작용할 수도 있습니다. 이는 플레이어가 게임플레이 중에 머티리얼의 외관을 조작할 수 있다는 의미에서 매우 강력한 툴이 되어줍니다. 아래 예시는 키 입력에 반응하도록 두 머티리얼의 EmissivePower 를 변경하는 방법을 보여줍니다. 런타임에 B 를 누르면 이미시브 값이 밝아지고, D 키를 누르면 어두워집니다. 눌렀던 키를 떼면 파라미터는 원래 값인 1 로 돌아갑니다.

  1. 메인 에디터 뷰포트 위의 툴바에서 블루프린트(Blueprints) 드롭다운 메뉴를 펼치고 목록에서 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.

    Open Level Blueprint

  2. 레벨 블루프린트에서 우클릭 하고 keyboard event 를 검색합니다. 컨텍스트 메뉴에서 B 키보드 이벤트를 추가합니다. 이 동작을 반복하여 D 키보드 이벤트를 추가합니다.

    B and D Keyboard Event nodes

  3. 레벨 블루프린트에서 우클릭 하고 블루프린트에 Set Scalar Parameter Value 노드를 추가합니다. 컬렉션(Collection) 드롭다운 메뉴에서 MPC_GlobalParams 머티리얼 파라미터 컬렉션을 참조합니다.

    Collection drop-down menu

    파라미터(Parameter) 드롭다운 메뉴에서 EmissivePower 파라미터를 참조합니다.

    Emissive Power Parameter

  4. Set Scalar Parameter Value 노드 를 2번 복제하면 블루프린트에 3개의 사본이 생깁니다. 블루프린트 그래프가 아래 이미지처럼 보이도록 노드를 와이어로 연결합니다. B 및 D 키보드 이벤트 노드의 Pressed 출력을 첫 번째 및 세 번째 Set Scalar Parameter Value 노드의 입력에 연결해야 합니다. 두 키보드 이벤트 노드의 Released 출력은 두 번째 Set Scalar Parameter Value 노드의 입력에 연결해야 합니다.

    Blueprint Graph completed

  5. 마지막 단계는 각 키보드 이벤트에 반응하는 EmissivePower파라미터 값(Parameter Value) 을 설정하는 것입니다. 이 예시에서 B 를 누르면 EmissivePower50 으로 늘어납니다. D 를 누르면 EmissivePower0.05 로 줄어듭니다. 두 키를 모두 떼면 파라미터는 원래 값인 1 로 설정됩니다.

    EmissivePower values

  6. 블루프린트 에디터 툴바에서 컴파일(Compile) 을 클릭하여 레벨 블루프린트를 컴파일합니다. 이제 게임 내에서 변경사항을 테스트할 수 있습니다.

  7. 에디터 툴바의 에디터에서 플레이 아이콘을 클릭하고 BD 를 누르거나 떼서 블루프린트를 테스트합니다. 결과는 아래 영상에 나와 있습니다.

제한 사항 및 퍼포먼스 특성

머티리얼은 최대 2개의 서로 다른 머티리얼 파라미터 컬렉션을 참조할 수 있습니다. 하나는 게임 전체에 적용되는 값에 일반적으로 사용되는 반면, 다른 하나는 레벨별 파라미터에 사용할 수 있습니다. 컬렉션에는 최대 1024개의 스칼라 파라미터와 1024개의 벡터 파라미터를 저장할 수 있습니다.

한 컬렉션의 파라미터 수를 수정하면 해당 컬렉션을 참조하는 모든 머티리얼을 리컴파일하게 됩니다. 많은 파라미터를 추가해야 하는 경우 빈 맵에 파라미터를 미리 추가해 두는 편이 더 빠를 수 있습니다.

파라미터 이름을 변경하는 경우 해당 파라미터를 참조하는 모든 머티리얼은 예상대로 계속 작동합니다. 그러나 해당 파라미터를 참조하는 모든 블루프린트는 깨지게 됩니다. 이 문제를 해결하려면 컬렉션에서 작동하는 블루프린트 함수의 ParameterName을 재할당해야 합니다.

다양한 머티리얼 인스턴스에서 서로 다른 다수의 파라미터를 설정하는 것보다 머티리얼 파라미터 컬렉션의 값을 업데이트하는 것이 훨씬 효율적입니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소