머티리얼 파라미터 컬렉션

어느 머티리얼에서도 참조 가능한 임의의 스칼라 & 벡터 파라미터 세트를 저장하는 애셋입니다.

Windows
MacOS
Linux

GlobalParams1.jpg

MaterialParameterCollection (머티리얼 파라미터 컬렉션)은 어느 머티리얼에서도 참조 가능한 임의의 스칼라 & 벡터 파라미터 세트를 저장하는 애셋입니다. 이는 글로벌 데이터를 다수의 머티리얼에 한 번에 적용시킬 수 있는 아티스트의 강력한 툴이 됩니다. 강설량, 파괴량, 습기 등과 같은 레벨별 이펙트를 구동시키는 데 있어서도, 이게 없었다면 레벨마다 각기 다른 머티리얼 인스턴스에 별도로 파라미터 값을 설정해 줘야 할 것을, 한 번에 돌려주는 것이 가능합니다.

GlobalParams1.png GlobalParams2.png

위의 예제에서 글로벌 파라미터는 씬에서 다음과 같은 면을 제어하는 데 사용되었습니다:

  • 꽃의 모프 상태와 함께 바람의 속력과 세기가 제어되고 있습니다.

  • 플레이어의 위치를 추적하여 폴리지에 물려줍니다. 그 위치 정보를 사용하여 플레이어가 걸어다니는 주변의 꽃과 풀을 밀어냅니다.

  • 태양 각도와 색 역시도 추적하여 물마루 색을 올바르게 입히고, (플레이어가 태양을 바라보고 있을 때) 파도 마루를 통해 빛이 직접 빛날 때만 이펙트를 제한시키도록 하고 있습니다.

  • 하루 일과 시간에 걸친 이펙트의 착색과 물에 대한 전체적인 디퓨즈 라이팅 색 역시도 제어하고 있습니다.

파라미터 컬렉션 생성 및 편집

머티리얼 파라미터 컬렉션콘텐츠 브라우저New Assets (새 애셋) 옵션이나 우클릭 컨텍스트 메뉴를 통해 만든 다음 다른 애셋처럼 편집 및 저장 가능합니다.

  1. 머티리얼 파라미터 컬렉션을 만들려면 먼저 콘텐츠 브라우저 에 우클릭하여 생성 메뉴를 띄웁니다. 거기서 머티리얼 & 텍스처 섹션을 선택한 다음 Material Parameter Collection (머티리얼 파라미터 컬렉션) 을 선택합니다. 선택하면 콘텐츠 브라우저 에 새 머티리얼 파라미터 컬렉션이 생깁니다.

    MatPC.jpg

  2. 머티리얼 파라미터 컬렉션이 다른 애셋처럼 콘텐츠 브라우저 에 추가 및 저장됩니다.

    MatPraCollectionMP.jpg

  3. 머티리얼 파라미터 컬렉션을 편집하려면, 먼저 더블클릭 하여 프로퍼티 창을 열어야 합니다.

    properties.png

  4. 스칼라 파라미터 또는 벡터 파라미터Plus Button 버튼을 클릭하여 머티리얼 에서 접근하고자 하는 파라미터를 새로 만듭니다. 입력한 스칼라 또는 벡터 파라미터의 이름과 기본값을 입력해야 한다는 점 잊지 마세요.

    properties_add.png

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

머티리얼에 머티리얼 컬렉션 파라미터 추가 작업은 몇 단계로 이루어집니다. 다음 섹션에서는 Material Collection 노드를 매우 간단한 머티리얼에 추가해서 게임 플레이 도중 좌클릭하면 머티리얼을 탈색시켜 보도록 하겠습니다.

  1. 먼저 Material Collection Parameter 노드를 추가한 다음 데이터를 채워줘야 합니다. 그러려면 콘텐츠 브라우저우클릭 한 다음 머티리얼 & 텍스처 섹션에서 머티리얼 파라미터 컬렉션 을 선택합니다. 그러면 콘텐츠 브라우저 에 머티리얼 파라미터 컬렉션이 생깁니다. 생성되면 이름을 지어줘야 합니다. 여기서는 MPC_Global_Material_Prams 으로 하겠습니다. 완료되면 콘텐츠 브라우저 에 이렇게 생겨 있을 것입니다.

    MPC_Create_New_MPC.png

  2. 머티리얼 컬렉션 파라미터가 생성되었으면 더블클릭 하여 엽니다. 머티리얼 컬렉션 파라미터가 열렸으면 스칼라 파라미터를 하나 추가하여 이름을 Global_Desaturation 라 짓습니다. Global_Desaturation 기본값은 0.0 으로 놔둡니다. 완료되면, 머티리얼 컬렉션 파라미터의 모습은 이렇습니다. MPC_Setup_MPC.png

  3. 머티리얼 컬렉션 파라미터가 생성되었으니 거기에 사용할 간단한 머티리얼을 만들어 줘야 합니다. 이 예제에서는 다음과 같은 머티리얼을 만들겠습니다.

    MPC_Simple_Material.png

    이 머티리얼에는 두 개의 Scalar Parameter 머티리얼 표현식 노드와 Vector Parameter 머티리얼 표현식 노드가 필요할 것입니다. 노드 이름은 Base_Color, Metallic, Roughness 로 하며, 각 노드는 그에 해당하는 입력에 연결해야 합니다.

  4. 노드를 메인 머티리얼 노드에 연결한 상태로, 이제 머티리얼에 Desaturation 머티리얼 표현식 노드와 머티리얼 표현식 파라미터 노드를 추가할 차례입니다. Desaturation 머티리얼 표현식 노드를 추가하려면, 팔레트 에서 Desaturation 을 검색하여 머티리얼 그래프로 끌어 놓으면 됩니다. 배치한 이후, 콘텐츠 브라우저 에서 머티리얼 파라미터 컬렉션을 찾은 다음 머티리얼 그래프로 끌어 놓습니다. 완료된 머티리얼 모습은 이렇습니다.

    MPC_Added_New_Nodes.png

  5. 노드가 전부 추가되었으니, 모든 것을 연결해 줄 차례입니다. 먼저 연결해 줄 것은, Desaturation 노드의 첫 번째 입력에 베이스 컬러 출력을 연결하는 것입니다. 다음으로, 머티리얼 컬렉션 파라미터의 출력을 Desaturation 의 Fraction 입력에 연결합니다. 다 됐으면 Desaturation 노드의 출력을 메인 머티리얼 노드의 베이스 컬러 입력에 연결합니다. 마지막으로, 적용 버튼을 눌러 머티리얼을 컴파일합니다. 완료된 머티리얼 모습은 이렇습니다.

    MPC_Completed_Material.png

  6. 작동중인 머티리얼 컬렉션 파라미터를 확인하려면, 먼저 머티리얼 컬렉션 파라미터를 사용중인 머티리얼을 월드에 있는 오브젝트에 적용해야 합니다. 머티리얼이 적용된 이후, 콘텐츠 브라우저 안에서 머티리얼 컬렉션 파라미터를 더블클릭 하여 엽니다. 열고나서 Global_Desaturation 의 기본값을 0 에서 1 로 변경하면, 이 경우 머티리얼이 적용된 오브젝트가 다음 예제처럼 파랑에서 하양으로 갑니다.

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

머티리얼 컬렉션 파라미터를 조작할 수 있는 방법 또 한 가지는, 블루프린트를 통하는 것입니다. 게임플레이 도중 아무때나 필요에 따라 머티리얼 컬렉션 파라미터를 조정할 수 있다는 뜻이기 때문에, 매우 강력한 방법입니다.

  1. 시작하기 전, 사전 작업이 몇 가지 있습니다. 먼저 머티리얼에서 머티리얼 인스턴스 를 몇 개 만들어야 합니다. 이 예제에서는 위에서 만든 머티리얼을 기반으로 머티리얼 인스턴스를 세 개 만들어 줘야 합니다. 머티리얼 인스턴스 생성이 완료된 이후, 색을 조정하여 떨어지도록 합니다. 이 예제에서는 빨강, 초록, 파랑이 머티리얼 인스턴스의 색이 되었습니다. 완료된 콘텐츠 브라우저 모습은 이렇습니다.

    MPC_Create_New_Material_Instances.png

  2. 머티리얼 인스턴스가 생성되었으니, 콘텐츠 브라우저 에서 머티리얼 인스턴스를 좌클릭으로 끌어 씬의 오브젝트 위에 놓는 방식으로 씬의 다양한 오브젝트에 적용할 차례입니다. 머티리얼 인스턴스를 적용하려는 오브젝트 위에 마우스 커서가 있을 때, 왼쪽 마우스 버튼 을 놓으면 그 오브젝트에 머티리얼 인스턴스가 적용됩니다. 완료된 모습은 이렇습니다.

    ColorsMP.jpg

  3. 머티리얼 인스턴스가 레벨의 오브젝트에 적용되었으니, 레벨 블루프린트를 열 차례입니다. 레벨 블루프린트를 열려면 메인 툴바의 블루프린트 아이콘을 클릭한 다음 드롭다운 메뉴에서 레벨 블루프린트 를 선택합니다.

    MPC_Open_Level_Blueprint.png

  4. 레벨 블루프린트가 열렸으면, 노드를 몇 개 놓을 차례입니다. 이 예제에서는 다음과 같은 노드와 변수가 필요합니다.

    • Left Mouse Button Pressed

    • Timeline

    • Set Scalar Parameter Value

    • 이름이 Des 인 Float 변수

    완료된 블루프린트 그래프 모습은 이렇습니다. SetUpBlueprintMP.jpg

  5. 블루프린트 그래프에 올바른 노드를 추가하였으니 이제 구성해 줄 차례입니다. 먼저 Set Scalar Parameter Value 부터 구성해 주겠습니다. 구성을 위해 해 줘야 하는 작업은, 먼저 사용할 머티리얼 파라미터 컬렉션을 정의하는 것입니다. 방법은, 컬렉션 입력에 좌클릭 한 다음 사용하고자 하는 머티리얼 파라미터 컬렉션을 선택하면 됩니다. 다음은, 조작하고자 하는 Parameter Name 을 선택합니다. 이 경우 Global_Desaturation 겠지요. 완료된 Set Scalar Parameter Value 노드 모습은 이렇습니다.

    MPC_SSPV_Node.png

  6. 다음으로 타임라인 을 구성을 통해 좌클릭 시 서서히 색이 변하다가 버튼을 놓으면 되돌아도록 하겠습니다. 타임라인 구성을 위해서는, 먼저 타임라인을 더블클릭 하여 엽니다. 그러면 이와 같은 것이 보입니다. MPC_Timeline_Editor.png

  7. 타임라인이 열렸으니, 활성화시 어떤 작업을 하도록 데이터를 조금 채워넣어 줘야 합니다. 먼저 타임라인에서 Add Float Track 아이콘을 추가하여 Float Track 을 추가합니다. 그리고서 연회색 부분 아무데나 우클릭 한 다음 메뉴에서 Add Key 를 선택하여 Key Track 을 두 개 추가합니다. 키를 두 개 추가합니다. 하나는 시간 0 에 값 0, 다른 하나는 시간 1 에 값 1 입니다. 키 포인트가 추가된 이후, 트랙이 어떤 일을 하는지 쉽게 알 수 있도록 이름 변경하는 것 잊지 마세요. 이 예제에서는 이름을 Des_Amount 로 합니다. 완료되면 이런 모습일 것입니다.

  8. 타임라인 셋업이 제대로 되었다면, 타임라인 메뉴를 닫고 레벨 블루프린트이벤트 그래프 로 되돌아갑니다. 레벨 블루프린트에서 이제 모든 노드를 연결하기 시작하면 됩니다. 완료된 블루프린트 모습은 이렇습니다. MPC_Connecting_Nodes.png

  9. 모두 연결이 되었으니, 컴파일 버튼을 눌러 레벨 블루프린트를 컴파일 하고 블루프린트 에디터를 닫습니다. 블루프린트 에디터를 닫고 나면 이제 게임에서 변화를 테스트해 볼 차례입니다. 그러기 위해서는 메인 툴바의 플레이 아이콘을 눌러주면 됩니다. 플레이를 누르면, 새 창이 떠 그 안에 레벨이 실행됩니다. 작동중인 머티리얼 컬렉션 파라미터를 확인하려면, 왼쪽 마우스 버튼 을 누르고 있기만 하면 됩니다. 그러면 씬의 머티리얼 색이 원래 색에서 회색으로 변하는 것이 보일 것입니다. 왼쪽 마우스 버튼 을 놓으면 머티리얼이 회색에서 원래 색으로 변하는 것을 볼 수 있습니다.

한계 및 퍼포먼스적 특징

하나의 머티리얼은 최대 두 개의 머티리얼 파라미터 컬렉션 레퍼런스가 가능합니다. 하나는 보통 게임 측면의 값에, 다른 하나는 레벨 전용 파라미터에 사용할 수 있습니다. 하나의 컬렉션은 최대 각각 1024 개 씩의 스칼라 & 벡터 파라미터를 가질 수 있습니다.

컬렉션 안의 파라미터 갯수를 변경하면 해당 컬렉션을 참조하는 모든 머티리얼을 리컴파일해야 합니다. 파라미터를 많이 추가해야 할 필요가 있거든, 빈 맵에서 미리 많이 추가해 두는 것이 빠를 수가 있습니다.

파라미터 이름을 변경하면, 해당 파라미터를 참조하는 머티리얼 은 정상 작동하나, 블루프린트 는 깨집니다. 이 문제의 해결을 위해서는 컬렉션에서 작동하는 블루프린트 함수의 파라미터 이름 을 재지정해 줘야 합니다.

머티리얼 파라미터 컬렉션 의 값을 업데이트하는 것은 매우 효율적이라, 다수의 머티리얼 인스턴스에 있는 여러 파라미터를 설정하는 것과는 비교조차 안됩니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼