레이어드 머티리얼 만들기

UE4 의 레이어드 머티리얼 기법에 대한 입문서입니다.

Windows
MacOS
Linux

SnowyStuff.png

이번 짧은 튜토리얼에서는 크롬과 눈, 두 개의 머티리얼 레이어로 된 간단한 레이어드 머티리얼을 만드는 프로세스를 개괄적으로 살펴보겠습니다. 최종 레이어드 머티리얼은 오브젝트 표면 위에 자동으로 눈을 덮어주는 것으로, 실제로는 두 머티리얼을 전환하게 됩니다. 머티리얼 사이의 블렌딩은 항상 윗면 검사를 하므로, 오브젝트를 회전시켜도 눈은 항상 윗면에 남아있게 됩니다.

보통 머티리얼 레이어를 만들 때, 레이어를 머티리얼로 만든 다음 노드 망을 새 함수로 복사해 넣는 것이 일반적입니다. 그러나 시간 절약을 위해, 여기서는 처음부터 함수 안에 레이어를 만들도록 하겠습니다.

단순 크롬

크롬 텍스처

T_ExampleLayers_Metal01_BC.png

T_ExampleLayers_Metal01_N.png

T_ExampleLayers_Metal_1_BC.png

T_ExampleLayers_Metal01_N.png

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

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

첫 머티리얼 레이어로는 표면에 약간의 녹이나 흠이 있는 꽤 단순한 크롬을 만들어 보겠습니다. 약간의 편집 용이성을 보이기 위해 전체적인 모습 제어를 위한 입력도 약간 만들어 주겠습니다.

  1. 콘텐츠 브라우저에서 신규 추가 버튼을 누른 다음 머티리얼 & 텍스처 > 머티리얼 함수 를 선택합니다.

    NewFunction.png

  2. 새 함수 이름을 Layer_Chrome 이라 합니다.

    Layer_Chrome.png

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

    EditLayerChrome.png

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

    MakeMaterialAttributesContext.png

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

    ConnectedMMA.png

크롬 레이어 망

이 머티리얼 레이어 망은 꽤나 단순합니다. 빠른 구성을 위해 분해시켰습니다. 사용된 텍스처 둘은 베이스 컬러와 러프니스에 쓰인 T_ExampleLayers_Metal_1_BC.png 와 노멀 맵에 쓰인 T_ExampleLayers_Metal01_N.png 로, 둘 다 이 페이지 상단에서 다운로드 가능합니다.

클릭하면 원래 크기로, 또는 우클릭 후 다른 이름으로 저장**

머티리얼 레이어는 코멘트 블록별로 나뉘어 있으며, 자세한 설명은 아래와 같습니다:

  1. 베이스 컬러 - 망의 이 부분은 매우 간단합니다. 크롬 베이스 컬러와 매우 어두운 회색을 Linear Interpolate 로 선형 보간 셋업했습니다. 베이스 컬러는 사실상 Tint 라는 이름의 함수 입력입니다. 이 입력은 Vector3 로 설정되어 있어서, 함수에 컬러를 입력하여 크롬의 색을 바꿀 수 있도록 해 줍니다. 그 둘 사이 보간을 돌리는 데는 T_ExampleLayers_Metal_1_BC 텍스처의 빨강 채널을 사용합니다.

  2. 메탈릭 - 금속을 만들고 있기 때문에, 메탈릭은 1 로 설정합니다.

  3. 러프니스 - 크롬을 만들고 있으므로, 러프니스는 꽤나 낮을 것입니다. 하지만 어두운 부분에서는 러프니스를 약간 증폭시켜서, 머티리얼의 전체적인 모습에 깊이감을 더해주도록 하겠습니다. 사실 이 망은 0.2 에서 0.4 사이로 Lerp 한다는 점만 빼고는 베이스 컬러에 사용한 망과 같습니다.

  4. 커스터마이징 가능 노멀 - 이 망은 단순히 탄젠트 스페이스 노멀 맵을 받은 다음 초록과 빨강 채널을 분리하여, 맵의 디테일을 대량으로 제어합니다. 각 채널마다 다른 함수 입력에서 제공받은 값을 곱해 줍니다. 이 입력은 스칼라 유형의 Normal Multiplier 이름으로 설정되어 있으며, 기본값은 1.0 입니다. 결과를 (AppendVector 노드로) 덧붙인 다음 노멀 맵의 파랑 채널에 덧붙입니다. 그 결과 사용자는 Normal Multiplier 값을 바꾸는 것으로 노멀의 높이를 조정할 수 있게 됩니다.

머티리얼 레이어 함수 작업이 완료되면 저장하세요.

단순 눈

눈 텍스처

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. 콘텐츠 브라우저에서 신규 추가 버튼을 누른 다음 머티리얼 & 텍스처 > 머티리얼 함수 를 선택합니다.

    NewFunction.png

  2. 새 함수 이름을 Layer_Snow 라 합니다.

    Layer_Snow.png

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

    EditLayerChrome.png

  4. 머티리얼 그래프 영역에 우클릭하여 컨텍스트 메뉴를 띄운 다음, Make 를 검색하고 Make Material Attributes 를 선택합니다.

    MakeMaterialAttributesContext.png

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

    ConnectedMMA.png

눈 레이어 망

아래는 눈 머티리얼 레이어를 간단히 나눠본 것입니다. 이 레이어는 T_Cave_Ice_Tiling_D.pngT_Cave_Ice_Noise_N.png 를 사용하며, 둘 다 이 페이지 상단에서 다운로드 가능합니다.

클릭하면 원래 크기로, 또는 우클릭 후 다른 이름으로 저장

  1. 베이스 컬러 - 아마도 이 망에서 비교적 복잡한 유일한 부분일 것으로, 그 이유는 순전히 FuzzyShading 머티리얼 함수를 사용하기 때문입니다. 이 함수는 그저 머티리얼이 빛을 받을 때 텍스처가 너무 어두워지지 않도록만 합니다. 약간은 빛이 섬유로 된 표면을 통과할 때와 같아, 벨벳이나 이끼, 여기서는 눈에도 완벽합니다. 그래서 베이스 컬러 텍스처(T_Cave_Ice_Tiling_D.png)에다가 0.3 을 제곱(power)하여 약간의 대비를 제거하는 것으로 시작합니다.

    다음, 그 결과를 연결하는 곳은 FuzzyShading 머티리얼 함수, 머티리얼 에디터의 함수 탭에서 끌어온 것입니다. Core Darkness 는 0, Power 는 1, EdgeBrightness 는 0.5 로 설정합니다. 마지막으로 그 전체에다 매우 창백한 파랑색(R=0.8, G=0.9, B=0.95)을 곱해 차가운 얼음같은 분위기를 냅니다.

  2. 메탈릭 - 이는 비금속성 표면이므로, 메탈릭은 0 으로 설정합니다.

  3. 러프니스 - 눈에 빛이 바로 닿으면 약간 반짝이도록 했으면 하므로, T_Cave_Ice_Tiling_D.png텍스처의 빨강 채널을 사용하여 Lerp 를 0.6 에서 0.3 으로 돌려줍니다.

  4. 노멀 - 이것 역시 꽤나 기본적입니다. 탄젠트 스페이스 노멀 맵의 효과를 낮추고 싶기 때문에, 파랑 채널의 세기를 두 배로 하였습니다. 파랑이 높아지면 노멀 맵 높이의 전체적인 느낌이 낮아집니다.

완료되면 저장하세요!

레이어드 머티리얼

이제 지금까지 만든 레이어를 사용하여 레이어드 머티리얼을 만들 수 있습니다. 항상 표면 위에 눈이 보이도록 인스턴스 커스터마이제이션 여지를 약간 남겨둔 채 셋업하도록 하겠습니다.

  1. 콘텐츠 브라우저에서, 신규 추가 버튼을 클릭한 다음 컨텍스트 메뉴에서 머티리얼을 선택합니다.

    NewMaterialContextMenu.png

  2. 새 함수 이름을 Mat_SnowyChrome 라 합니다.

    Mat_SnowyChrome.png

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

    SnowyChromeMatEd.png

  4. 콘텐츠 브라우저에서 기존에 만들어 둔 Layer_ChromeLayer_Snow 머티리얼 레이어를 끌어놓습니다.

  5. 디테일 패널에서 Use Material Attributes (머티리얼 특성 사용) 옵션을 켭니다.

    enableMatAttrib.png

  6. 함수 패널에서 MatLayerBlend_Simple 함수와 World_Aligned_Blend 함수를 끌어놓습니다. MatLayerBlend_Simple 을 사용하여 크롬에서 눈으로의 전환 처리를 하고, World_Aligned_Blend 로 표면이 향한 방향에 따라 Layer Blend 에 힘을 실어 줍니다.

레이어드 머티리얼 망

아래는 Mat_SnowyChrome 망을 분해한 것으로, 각 코멘트 영역마다 설명이 달려 있습니다.

클릭하면 원래 크기로, 또는 우클릭 후 다른 이름으로 저장

  1. 크롬 셋업 - 여기서 크롬 머티리얼 레이어를 들여놓고 두 개의 머티리얼 파라미터를 연결했습니다. 첫째는 Chrome Normal 이라는 스칼라 파라미터로, Normal Multiplier 입력을 돌려주고 있습니다. 둘째는 Chrome Tine 라는 벡터 파라미터로, Tint 입력을 돌려주고 있습니다. 이로써 노멀 맵 세기 조절 뿐만 아니라 나중에 인스턴싱할 때 크롬 색도 변경 가능합니다.

  2. 눈 셋업 - 이보다 단순하기가 힘들지요. 그냥 눈 머티리얼 레이어만 있습니다.

  3. 월드 정렬 블렌드 셋업 - 망 이 부분에서는 Blend Sharpness 를 10 으로 설정하는 것으로 시작합니다. 그런 다음 Snow Bias 라는 스칼라 파라미터를 Blend Bias 입력에 연결합니다. 그러면 머티리얼이 인스턴싱될 때 눈 부분을 편집할 수 있습니다.

  4. MatLayerBlend - 블렌드를 돌리는데 사용되는 노드만 들어있을 뿐입니다. 여기서 베이스 머티리얼은 크롬이고, 탑 머티리얼은 눈입니다. World_Aligned_Blend 가 전환 처리를 합니다.

완료되면 머티리얼 저장하시고요!

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

이미 머티리얼 레이어의 일정 부분을 돌리는 데 사용되는 파라미터 셋업을 머티리얼에 해 뒀으니, 인스턴싱하여 편집하기만 하면 됩니다. UE4 에서 이 프로세스는 매우 쉽습니다.

  1. 시작용 콘텐츠를 포함시켜 프로젝트를 시작했다면, 새 머티리얼을 적용할 탁자와 의자 세트가 있을 것입니다. 없다면 아무 애셋이든 BSP 든 마음대로 놓아 보세요.

    DefaultLevel.png

  2. Mat_SnowyChrome 머티리얼에 우클릭한 다음 머티리얼 인스턴스 생성 을 선택합니다. 이름은 놔둬도 괜찮습니다.

    CreateMaterialInstance_ContextMenu.png

  3. 콘텐츠 브라우저에서 새 인스턴스를 끌어 씬의 오브젝트 중 하나 위에 놓습니다.

    DragDropMaterialSnowy.png

  4. 인스턴스를 더블클릭한 다음 프로퍼티를 원하는 대로 변경합니다. 크롬의 색, 크롬의 노멀 맵 깊이, 크롬 위에 눈이 얼마나 내렸는지를 변경할 수 있습니다.

    SnowChromeInstanceTesting.png

태그
Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼