핵심 머티리얼 개념

UE4 머티리얼과 그 작동법에 대한 소개 문서입니다.

Windows
MacOS
Linux

IntroToMaterialsHeader.png

머티리얼이란 오브젝트와 레벨에 원하는 모양새를 내는 데 있어 가장 핵심적인 부분 중 하나입니다. 이 문서는 자신만의 머티리얼 제작에 빠르게 착수할 수 있도록 돕기 위한 하이 레벨 문서의 역할을 합니다.

기존 버전 언리얼 엔진에서의 머티리얼 제작 방식에 이미 익숙하신 분이라면, 이번 물리 기반 머티리얼 시스템을 제대로 활용하기 위해 알아둬야 할 핵심 프로퍼티를 간략히 선보이고 있는 퀵스타트 가이드 문서를 살펴보시면 도움이 될 것입니다.

머티리얼 표현식 노드와 망

머티리얼에 대해 알아야 할 가장 첫 번째로 중요한 사실은, 코드를 통해 생성되는 것이 아니라, 머티리얼 에디터 안에서 (머티리얼 표현식이라 불리는) 비주얼 스크립팅 노드로 엮인 망을 통해 생성된다는 사실입니다. 각 노드에는 특정 동작을 하도록 설계되어 있는 HLSL 코드 스니펫이 들어있습니다. 즉 머티리얼을 생성하는 것은 비주얼 스크립팅을 통해 HLSL 코드를 생성한다는 뜻입니다.

WoodFloor.png

위의 경우는 경목 바닥을 정의하는 매우 간단한 망입니다. 그러나 머티리얼 표현식 망이 그리 간단할 필요는 없습니다. 망 안에 머티리얼 표현식 노드가 수십개씩 되는 경우도 다반사입니다.

사용가능한 머티리얼 표현식 전부에 대한 문서는 머티리얼 표현식 레퍼런스 에서 찾아보실 수 있습니다.

색과 수 작업

아시듯이 색은, 디지털 형상화 측면에서 네 개의 채널로 나뉩니다:

R - 빨강

G - 초록

B - 파랑

A - 알파

모든 디지털 이미지와 마찬가지로 각 픽셀에 대해, 이 채널들 중 하나의 값은 수로 표현할 수 있습니다. 머티리얼에서의 작업 중 대부분은 단지 일련의 상황이나 수학적 표현식에 따라 이러한 수를 조작하는 것입니다.

머티리얼은 부동소수점 (float) 값을 사용하여 색 데이터를 저장합니다. 그렇다는 것은 각 채널의 값 범위가 0.0 에서 1.0 사이에서 결정되며, 일부 이미지 편집 프로그램에서처럼 0 에서 255 범위가 아니라는 뜻입니다. 중요한 점은 언제든 1.0 이상의 과장된 값을 넣을 수 있다는 점으로, 몇몇 경우에 있어서 특별한 동작을 하게 됩니다. 예를 들어 글로우 효과를 내는 머티리얼의 '이미시브' 입력에 색을 보낼 때, 값이 1.0 보다 크면 글로우 밝기가 세 집니다.

UE4 의 머티리얼에 대해 고려할 때, 다수의 표현식이 각각의 컬러 채널에 독립적으로 연산 된다는 점을 유의하세요. 예를 들어 Add 노드는 두 개의 입력을 받은 다음 채널별로 더합니다. 두 개의 (3채널 벡터값인) RGB 색을 서로 더하는 경우, 출력색은 (Red1+Red2, Green1+Green2, Blue1+Blue2) 가 됩니다.

Red 1 + Red 2 = Red 3

Green 1 + Green 2 = Green 3

Blue 1 + Blue 2 = Blue 3

채널별 연산을 하는 노드는 일반적으로 채널 수가 같은 입력이 필요합니다. 예를 들어 Add 의 경우 RGB 색을 다른 RGB 색에 더할 수는 있어도 RGBA (4 채널) 색을 RGB (3 채널) 색에 더할 수는 없는데 RGB 색에는 알파 채널이 없기 때문입니다. 그러면 이 머티리얼은 오류가 나며, 컴파일이 되지 않습니다. 이 규칙의 예외는 입력 중 하나가 단일 채널 (스칼라) 값일 경우입니다. 그 때는 스칼라 값을 다른 모든 채널에 그냥 더해버립니다. 예를 들어:

  • RGB (0.35, 0.28, 0.77) 값에 스칼라 값 1.0 을 더한 결과는 다음과 같습니다:

    0.35 + 1.0 = 1.35

    0.28 + 1.0 = 1.28

    0.77 + 1.0 = 1.77

텍스처

머티리얼의 경우, 텍스처는 일종의 픽셀 기반 데이터를 제공해 주는 이미지일 뿐입니다. 이 데이터는 오브젝트의 색이나 빛나는 정도, 그 투명도, 기타 여러가지 부분이 될 수 있습니다. 게임 모델의 색을 적용하는 데 있어 "텍스처" 가 전부던 옛날 사고방식도 있습니다. 물론 텍스처 제작 과정은 여전히 중요합니다만, 텍스처는 머티리얼의 최종 결과가 아니라 한 성분 (컴포넌트)으로 생각하는 것이 중요합니다.

하나의 머티리얼이 모두 제각각의 목적으로 적용되고 샘플링되는 텍스처를 여럿 활용할 수도 있습니다. 예를 들어 베이스 컬러 텍스처, 스페큘러 텍스처, 노멀 맵이 있는 단순한 머티리얼이 있다 칩시다. 여기에 이들 텍스처 하나 이상의 알파 채널에 저장된 러프니스와 이미시브에 대한 맵을 추가할 수도 있습니다.

이들 전부 같은 레이아웃을 공유하긴 하지만, 사용된 컬러는 텍스처의 용도에 따라 다릅니다.

텍스처를 생성하여 언리얼 엔진에 임포트하고 나면, Texture Sample 노드와 같은 특수 머티리얼 표현식 노드를 통해 머티리얼로 들여오게 됩니다. 이러한 노드는 머티리얼 외부에 존재하여 콘텐츠 브라우저에서도 별도로 찾아볼 수 있는 텍스처 애셋으로의 참조를 만듭니다. 일부 3D 프로그램과는 달리, 머티리얼에 텍스처를 자체적으로 포함시킬 수 있는 방법은 없습니다.

텍스처 및 그 제작 관련 상세 정보는 텍스처 문서 를 확인해 주시기 바랍니다.

프로퍼티와 입력

머티리얼을 가지고 할 수 있는 대부분의 것들은, 머티리얼 자체의 여러가지 프로퍼티 설정 뿐만 아니라, 머티리얼을 정의하는 머티리얼 표현식 노드망을 어떻게 만들고 연결하는지에 따라서도 그 구동 방식이 달라집니다. 언리얼 엔진 머티리얼 시스템의 능력을 진정 끌어내기 위해서는, 사용가능한 프로퍼티와 입력에 대해 살펴보면 엄청난 도움이 될 것입니다. 자세한 내용은 다음 문서에서 찾을 수 있습니다:

머티리얼 프로퍼티 머티리얼 입력

표면에 머티리얼 적용하기

머티리얼을 적용하는 방식은 표면의 유형에 따라 약간씩 달라집니다.

메시

(스태틱, 다이내믹, 스켈레탈) 메시에의 머티리얼 적용은 여러가지 방식으로 처리 가능합니다. 단순히 메시의 프로퍼티에 위치한 머티리얼의 엘리먼트 슬롯을 사용하는 방법이 있습니다. 프로퍼티는 레벨에 있는 메시를 선택했을 때나, 메시에 우클릭하여 뜨는 컨텍스트 메뉴에서 프로퍼티를 선택했을 때 디테일 패널에서 찾을 수 있습니다. 스태틱 메시 에디터나 페르소나 스켈레탈 메시 에디터같은 여러가지 에디터 안에서도 찾을 수 있습니다.

  1. 머티리얼을 적용하고자 하는 메시를 선택합니다.

    BoxSelected.png

  2. 디테일 패널에서, 머티리얼 엘리먼트 드롭다운에 있는 화실표를 클릭합니다. 프로젝트에서 사용가능한 모든 머티리얼이 표시되며, 검색창으로 검색도 가능합니다.

    MaterialDetails.png MaterialDropdown.png GreenBox.png

  3. 또는, 콘텐츠 브라우저에서 원하는 머티리얼을 선택한 다음 화살표 버튼을 클릭하면 적용됩니다.

    UseInContentBrowser.png

어떠한 메시에 대해 한 머티리얼을 기본 지정하고 싶은 경우, 콘텐츠 브라우저 안에서 메시에 우클릭 후 프로퍼티 를 선택해서든, 더블클릭 후 뜨는 (스태틱 메시 에디터나 페르소나 등의) 애셋 에디터를 사용해서 머티리얼을 설정하든, 반드시 해당 메시의 프로퍼티에 머티리얼을 설정해 주시기 바랍니다.

기억하실 것은, 애셋 에디터나 콘텐츠 브라우저에서 머티리얼을 바꾸는 경우, 해당 변경내용이 애셋 자체에 영향을 끼칩니다. 씬에 이미 놓인 메시의 디테일을 사용해서 바꾸는 경우, 배치된 메시 사본에만 영향을 끼칩니다.

브러시 표면

브러시 표면에 머티리얼을 적용하는 것은 간단합니다:

  1. 콘텐츠 브라우저에서 머티리얼을 선택합니다.

    MaterialSelected.png

  2. 머티리얼을 적용하고자 하는 브러시 표면을 클릭합니다.

    BoxPanelSelected.png

  3. 디테일 패널에서 ArrowButton.png 버튼을 누릅니다. 이 버튼을 누르면 브러시 표면에 머티리얼을 적용합니다.

    AddingMaterialToBox.pngRedOnBox.png

태그
Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼