레이어드 머티리얼 만들기

언리얼 엔진의 레이어드 머티리얼 기법을 소개하는 문서입니다.

Choose your operating system:

Windows

macOS

Linux

이 튜토리얼에서는 크롬과 눈 두 개의 레이어로 이루어진 간단한 레이어드 머티리얼(Layered Material) 을 만드는 과정을 보여드립니다. 최종 레이어드 머티리얼에서는 월드 기준 정렬된 블렌드를 사용해, 두 머티리얼을 실제로 전환하며 자동으로 메시 표면 위에 눈이 쌓이도록 합니다. 블렌드 함수는 항상 가장 위 표면을 확인하므로, 오브젝트를 회전해도 눈 머티리얼은 아래 이미지처럼 항상 윗면에 남아있습니다.

레이어드 머티리얼을 제작할 때는 일반적으로 각 레이어를 머티리얼로 생성한 뒤, 노드 네트워크를 새 머티리얼 함수에 복사 및 붙여넣기 합니다. 이번 튜토리얼에서는 시간을 절약하기 위해 처음부터 각 레이어를 함수에 배치하겠습니다.

단순한 크롬

크롬 텍스처

T_ExampleLayers_Metal01_BC.png

T_ExampleLayers_Metal01_N.png

T_ExampleLayers_Metal_1_BC.png

T_ExampleLayers_Metal01_N.png

(우클릭 후 다른 이름으로 저장)

(우클릭 후 다른 이름으로 저장)

베이스 레이어는 표면에 비주얼 요소를 추가할 수 있는 약간의 흠이 존재하는 단순한 크롬 머티리얼입니다. 편집 여부를 보여주기 위해 머티리얼에 전반적인 외형을 미세 조정할 수 있는 몇 가지 입력도 포함되어 있습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭한 뒤 머티리얼(Materials) 을 클릭하고 컨텍스트 메뉴에서 머티리얼 함수(Material Function) 를 선택합니다.

    머티리얼 함수 생성

  2. 머티리얼 함수의 이름을 Layer_Chrome 으로 지정합니다.

    함수 이름 변경

  3. 머티리얼 함수를 더블 클릭 하여 머티리얼 에디터에서 엽니다.

    에디터에서 새 머티리얼 함수 실행

  4. 머티리얼 그래프에서 우클릭 한 뒤, 컨텍스트 메뉴에서 머티리얼 어트리뷰트 생성(Make Material Attributes) 을 검색하여 선택합니다.

    컨텍스트 메뉴에서 ‘Make Material Attributes' 추가

  5. Make Material Attributes 노드를 Output Result 노드에 연결합니다.

    ‘Make Material Attributes' 연결

크롬 머티리얼 네트워크

다음 이미지는 크롬 레이어에 사용할 머티리얼 그래프입니다. 이미지 밑에 분석을 따라하면 쉽게 재현할 수 있습니다. 사용할 두 텍스처는 베이스 컬러(Base Color)와 러프니스(Roughness)에 사용할 T_ExampleLayers_Metal_1_BC.png , 노멀 맵에 사용할 T_ExampleLayers_Metal01_N.png 입니다. 둘 다 이 페이지 상단에서 다운로드하실 수 있습니다.

클릭하면 이미지를 확대합니다.

다음 내용은 머티리얼 그래프의 4가지 코멘트 블록에 대한 설명입니다.

  1. 베이스 컬러(Base Color) - 베이스 컬러에서는 선형 보간(Linear Interpolate, LERP)을 사용해 크롬의 베이스 컬러와 아주 짙은 회색 값(0.3)을 블렌드합니다. 베이스 컬러에서 함수 입력(Function Input) 노드를 생성하고 이름을 Tint 로 지정합니다. 디테일 패널(Details Panel)에서는 입력 타입을 Vector3 로 설정해야 함수에 색을 입력해 크롬의 색조를 변경할 수 있습니다. 한편 T_ExampleLayers_Metal_1_BC 텍스처의 빨간색 채널은 두 값 사이의 선형 보간에 사용합니다.

    입력 타입 Vector 3

  2. 메탈릭(Metallic) - 금속 머티리얼이므로 메탈릭 입력을 1로 설정합니다.

  3. 러프니스(Roughness) - 러프니스는 크롬 머티리얼의 경우 아주 낮게 설정해야 하지만, 약간 수정해 주면 머티리얼의 전반적인 외형에 깊이감을 추가할 수 있습니다. 이때 크롬 텍스처의 빨간색 채널은 0.2, 0.4 값의 LERP에 사용합니다. 다시 말해 텍스처 맵의 어두운 영역에 대한 러프니스는 밝은 영역의 러프니스보다 높습니다.

  4. 커스터마이징 가능 노멀(Customizable Normal) - 이 네트워크는 탄젠트 스페이스 노멀 맵을 받아서 초록색과 빨간색 채널로 분리하여 맵의 디테일을 대규모로 제어합니다. 그리고 다른 함수 입력(Function Input)에서 가져온 값을 각 채널의 값에 곱합니다. 해당 입력의 타입은 스칼라로, 이름은 Normal Multiplier 로 지정되며 디폴트값은 1.0입니다. AppendVector 노드 를 사용하면 결괏값을 덧붙인 다음, 노멀 맵의 파란색 채널에 덧붙입니다. 그 결과 사용자는 노멀 배수(Normal Multiplier) 값을 변경하여 노멀의 높이를 조정할 수 있습니다.

전부 완료한 뒤 머티리얼 함수(Material Function)를 컴파일 및 저장하세요.

단순한 눈

눈 텍스처

T_Cave_Ice_Tiling_D.png

T_Cave_Ice_Noise_N.png

T_Cave_Ice_Tiling_D.png

T_Cave_Ice_Noise_N.png

(우클릭 후 다른 이름으로 저장)

(우클릭 후 다른 이름으로 저장)

위의 두 텍스처를 다운로드한 뒤 언리얼 엔진에 임포트 합니다. 이제 다음 단계를 거치며 눈 레이어에 사용할 두 번째 머티리얼 함수를 만들어 보겠습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭한 뒤 머티리얼(Materials) 을 클릭하고 컨텍스트 메뉴에서 머티리얼 함수(Material Function) 를 선택합니다.

    머티리얼 함수 생성

  2. 머티리얼 함수의 이름을 Layer_Snow 로 지정합니다.

    함수 이름 변경

  3. 머티리얼 함수를 더블 클릭 하여 머티리얼 에디터에서 엽니다.

    새 머티리얼 함수

  4. 머티리얼 그래프에서 우클릭 한 뒤, 컨텍스트 메뉴에서 Make Material Attributes 로 검색하여 선택합니다.

    컨텍스트 메뉴에서 ‘Make Material Attributes' 추가

  5. Make Material Attributes 노드를 Output Result 노드에 연결합니다.

    ‘Make Material Attributes' 연결

눈 레이어 네트워크

다음은 눈 머티리얼 그래프를 간단히 나눈 것입니다. 이 레이어는 T_Cave_Ice_Tiling_D.png , T_Cave_Ice_Noise_N.png 텍스처를 사용하며, 둘 다 해당 페이지 상단에서 다운로드하실 수 있습니다.

  1. 베이스 컬러 - FuzzyShading 머티리얼 함수를 사용하기 때문에 네트워크에서 유일하게 비교적 복잡한 부분입니다. 이 함수는 머티리얼이 빛을 받을 때 텍스처가 너무 어두워지는 것을 방지합니다. 빛이 섬유질 표면을 통과할 때와 유사한 방식입니다. 그래서 벨벳, 이끼 또는 위의 예시처럼 눈을 구현하는 데 사용하기 적합합니다. 베이스 컬러 텍스처를 0.3의 제곱으로 높이면 (T_Cave_Ice_Tiling_D.png) 텍스처의 대비가 약간 감소합니다.

    다음으로 결과를 FuzzyShading 머티리얼 함수에 연결합니다. 머티리얼 에디터(Material Editor)의 함수(Functions) 탭에서 연결할 수 있습니다. Core Darkness 는 0, Power 는 1, EdgeBrightness 는 0.5로 설정합니다. 마지막으로 전체를 아주 연한 파란색(R=0.8, G=0.9, B=0.95)으로 곱해 차갑게 얼어붙은 분위기를 냅니다.

  2. 메탈릭(Metallic) - 비금속 표면이므로 메탈릭을 0으로 설정합니다.

  3. 러프니스(Roughness) - 라이트가 눈에 닿는 순간 눈이 약간 빛나도록 만들기 위해, T_Cave_Ice_Tiling_D.png의 빨간색 채널을 이용해 Lerp를 0.6~0.3으로 진행합니다.

  4. 노멀(Normal) - 노멀 맵 자체의 세팅도 약간 강하게 변경하겠습니다. 탄젠트 스페이스 노멀 맵의 효과를 낮추는 방법 중 하나로 파란색 채널의 세기를 두 배로 늘리는 방법이 있습니다. 노멀 맵에 (1,1,2)의 값을 갖는 Constant3 Vector 값을 곱하면 됩니다.

끝났으면 결과를 저장하세요!

레이어드 머티리얼

이제 머티리얼을 만들고 두 레이어 함수를 블렌딩할 수 있습니다. 해당 예제에서는 눈이 항상 표면의 위에 쌓이도록 설정합니다. 머티리얼에는 머티리얼 인스턴스에서 커스터마이징 가능한 파라미터도 있습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 신규 추가(Add New) 를 클릭하고 컨텍스트 메뉴에서 머티리얼을 선택합니다.

    새 머티리얼 생성

  2. 새 머티리얼의 이름을 Mat_SnowyChrome 으로 지정합니다.

    머티리얼 이름 변경

  3. 머티리얼을 더블 클릭 하여 머티리얼 에디터에서 엽니다.

    머티리얼 에디터에서 새 머티리얼 열기

  4. 콘텐츠 브라우저Layer_Chrome , Layer_Snow 머티리얼 함수를 머티리얼 그래프로 드래그합니다.

    레이어를 머티리얼 그래프로 드래그하기

  5. 디테일 패널(Details Panel)에서 머티리얼 그래프의 배경을 클릭해 기본 머티리얼 프로퍼티를 표시하고 머티리얼 어트리뷰트 사용(Use Material Attributes) 옵션을 활성화합니다.

    ‘머티리얼 어트리뷰트 사용' 활성화

  6. 팔레트에서 MatLayerBlend_Simple 머티리얼 함수와 WorldAlignedBlend 함수를 추가합니다. MatLayerBlend_Simple에서는 크롬에서 눈으로의 전환 작업을 실행하고, World_Aligned_Blend는 표면이 가리키는 방향에 따라 Layer Blend를 진행합니다.

레이어드 머티리얼 네트워크

다음은 Mat_SnowyChrome 머티리얼 네트워크의 구조입니다. 코멘트 영역마다 설명이 달려 있습니다.

  1. 크롬 셋업(Chrome Setup) - 2개의 파라미터를 Layer_Chrome Material 함수에 연결하고 있습니다. 1번째는 Chrome Normal 이라는 스칼라 파라미터로, NormalMultiplier 입력을 조작합니다. 2번째는 ChromeTint 라는 벡터 파라미터로, Tint 입력을 조작합니다. 두 파라미터를 사용하면 노멀 맵의 세기를 변경하고, 머티리얼이 나중에 인스턴스화 할 때 크롬의 색조를 변경할 수 있습니다.

  2. 눈 셋업(Snow Setup) - 노드를 따로 추가할 필요가 없습니다. Layer_Snow 머티리얼 함수가 블렌드 노드에 직접 연결됩니다.

  3. 월드 정렬 블렌드 셋업(World Aligned Blend Setup) - WorldAlignedBlend 노드는 머티리얼 블렌드의 위치와 선명도를 조절합니다. Blend Sharpness 값을 10으로 설정한 뒤, BlendBias 라는 스칼라 파라미터를 생성하고 Blend Bias 입력에 연결합니다. 연결하면 블렌드가 발생하는 지점의 메시에서 수직 지점을 조정할 수 있습니다.

  4. MatLayerBlend - 이 노드에는 블렌드를 진행하는 데 필요한 로직이 있습니다. 여기서 베이스 머티리얼은 Layer_Chrome, 상단 머티리얼은 Layer_Snow이며, 알파 입력에 연결된 WorldAlignedBlend 노드에서 전환 작업을 주도합니다.

전부 끝나면 머티리얼을 저장하세요!

레이어드 머티리얼 인스턴싱하기

이 머티리얼에 두 파라미터를 포함했으니, 이제 머티리얼 인스턴스를 만들고 머티리얼 레이어의 수치를 커스터마이징할 수 있습니다.

  1. 프로젝트에 시작용 콘텐츠(Starter Content)를 포함했다면 새 머티리얼을 적용할 의자와 탁자 세트가 있을 것입니다. 시작용 콘텐츠가 없다면 자유롭게 에셋을 가져와 씬에 배치해 보세요.

    DefaultLevel.png

  2. Mat_SnowyChrome 머티리얼을 우클릭한 다음, 컨텍스트 메뉴에서 머티리얼 인스턴스 생성(Create Material Instance) 을 클릭합니다. 기본 이름도 괜찮습니다.

    머티리얼 인스턴스 생성

  3. 콘텐츠 브라우저(Content Browser) 에 있는 머티리얼 인스턴스 에셋을 씬의 오브젝트 중 하나로 드래그합니다.

    콘텐츠 브라우저에서 머티리얼 인스턴스 적용

  4. 머티리얼 인스턴스를 더블 클릭 하여 머티리얼 인스턴스 에디터에서 엽니다. 크롬의 색조, 크롬의 노멀 맵 깊이, 크롬 위에 떨어진 눈의 양을 변경할 수 있습니다.