환영합니다
지난 강의에서 sculpt(스컬프팅) 모드의 Noise툴을 사용해서 우리가 작업할 간단한 Landscape(랜드스케이프)를
만들었고
Auto Landscape(자동 랜드스케이프) 머티리얼를 Landscape(랜드스케이프)에 할당하였습니다
현재는 간단한 머티리얼이지만 곧 보기 좋게 만들 것이므로 걱정하지 마시기
바랍니다
지금까지 레벨에 만든 것들입니다
그리고 Base Color Texture(베이스 컬러 텍스처)만을 사용하여 base color(베이스 컬러) 소켓에
연결했습니다
기억을 되살려 보시면 마스터 머티리얼 섹션에서 가장 좋은 color texture(컬러 텍스처)를 위한 색 조절 세팅을 했고
채도와 대비와 밝기를 조절할 수 있었습니다
Landscape(랜드스케이프) 머티리얼에도 동일한 작업을 할 것이므로 해당 노드를 찾아보겠습니다
MasterMaterial 폴더로 가서 이 M_Master를 더블 클릭하여 여시면
여기 보이는 이 노드들이 색을 조절하던 노드입니다
전체를 복사해서 붙여넣겠습니다
노드를 전부 선택하고 복사해서 이 곳에 붙여 넣겠습니다
더 이상 코멘트가 필요할 것 같지 않으므로 지우도록 하겠습니다
BaseColorTexture 입력 또한 필요하지 않으므로 지우도록 하겠습니다
이것이 마스터 머티리얼이 base color(베이스 컬러)를 처리할 수 있도록 하기 위해 우리가 사용할 노드들 입니다
노드들을 위로 옮기고 RGB 소켓을 이 소켓에 연결하고 최종 출력을 Base Color 소켓에
연결합니다
Apply버튼을 누르고 머티리얼 인스턴스로 가서 더블 클릭하여 열겠습니다
이 속성들이 생긴 것을 확인하실 수 있습니다
밝기를 조절하고 대비를 조절할 수 있습니다 We can adjust its brightness, we can adjust its contrast.
이 속성들이 어떻게 작동하는지 기억하시길 바랍니다
다시 기본 값으로 설정하도록 하겠습니다
이 것이 여러분이 색을 조절하기 위해 사용해왔던 것이지만
Landscape(랜드스케이프) 머티리얼은 보통 레이어가 여러 겹 존재합니다
최대 6개나 8개, 9개의 레이어를 가질 수 있고 각 레이어는 각각의 Base Color Texture(베이스 컬러 텍스처)를
갖고 있습니다
그래서 Base Color Texture(베이스 컬러 텍스처)가 있을 때 마다 이 작업을 해주어야 한다면 이 노드들이
필요할 것 입니다
base color(베이스 컬러)를 조절하는 것 뿐인데 그래프는 금방 매우 지저분해질 것 입니다
Roughness(러프니스)나 Normal(노멀)은 어떻게 할까요
노드들을 계속해서 복사해서 붙여 넣어야 할까요
그렇기 때문에 머티리얼 함수가 필요한 것입니다
여러분은 이미 머티리얼 그래프에서 머티리얼 함수를 여럿 사용해 보셨습니다
예를 들어 이 FlattenNormal과 같은 것 말입니다
만약 머티리얼 함수가 무엇인지 모르신다면 간단하게 이렇게 이해하시면 됩니다
머티리얼 함수는 노드를 재사용할 수 있게 합니다
노드들을 계속 반복해서 사용할 수 있다는 것입니다
같은 일을 계속 반복해서 처리해야 한다면 머티리얼 함수를 사용하시면 됩니다
그럼 머티리얼 그래프에서는 어떻게 작동할까요
먼저 한 개를 만들어 보겠습니다
프로젝트로 돌아와서 마우스 우클릭을 하고 New Folder를 클릭합니다
MaterialFunction으로 이름 짓고
더블 클릭하여 열겠습니다
새 머티리얼 함수를 만들 것이므로 마우스 우클릭을 하고 머티리얼로 이동해서
Material Function(머티리얼 함수)를 선택합니다
이 또한 명명 규칙이 있습니다
MF_LandscapeMaterialProcess 라고 이름 짓고 엔터를 누릅니다
이름이 조금 길긴 하지만 명확합니다
이 머티리얼 함수는 Landscape(랜드스케이프) 머티리얼의 처리를 할 것 입니다 더블 클릭하여 열겠습니다
안에는 Output Result라는 단 하나의 노드만 있습니다
언리얼에서 BLUEPRINT를 사용해 보셨거나 프로그래밍 지식이 있으시다면
익숙하게 느껴지실 것입니다
함수는 보통 Function Input과 Function Output 노드를 갖고 있습니다
만약 Function Input과 Function Output의 역할을 잘 모르시겠다면 간단히 이렇게 생각하시기 바랍니다 Function Input은 간단하게
처리가 필요한 데이터입니다
예를 들어 이 경우에는 base color(베이스 컬러)의 RGB 정보이고 output은 처리된 데이터가
될 것입니다
base color(베이스 컬러)에 어떤 처리를 하면 Function Output은 처리된 데이터의 최종 결과를
출력합니다
머티리얼 함수에서 Function Input을 어떻게 이용할 수 있을지 같이 보시겠습니다
머티리얼 함수로 돌아와서
Output이 단 하나만 있는 것을 보실 수 있고 언제든 마우스 우클릭을 하고 function을 입력하여 Input을 추가할 수
있습니다
FunctionInput이 바로 보이고 엔터를 눌러 이 노드를 선택하시기 바랍니다
현재 Vector3 타입으로 설정되어 있습니다
다행히 해본 적 있는 경우입니다
Constant3Vector입니다
이 것을 Output에 연결하면, 그러니까 이 Constant3Vector를 출력하고
Apply를 누르고 Auto Landscape(자동 랜드스케이프) 머티리얼로 돌아가서
머티리얼 함수를 드래그 하기만 하면 사용할 수 있습니다
보시는 것처럼 In 소켓이 있고 V3라고 적혀있습니다 즉 Constant3Vector이고 Result가
있는데
이는 Output이 될 것 입니다
지금 좋은 이름으로 되어 있지 않습니다
정확히 이 것들이 무엇을 하는 지 알아볼 수 없으므로 바꿔보겠습니다 머티리얼 함수로 가겠습니다
이름을 In에서 BaseColorTexture로 바꿨습니다
즉 이 Input은 Base Color Texture(베이스 컬러 텍스처)를 입력 받을 것이라는 의미입니다
Input Type을 Function Input Vector3에서 Function Input Texture 2D로 바꾸면
Missing Preview connection for function input 이라는 오류 메시지가 나타납니다
즉 Function Input을 사용하신다면 종종 Preview 소켓에 데이터가 연결되어야만 합니다
이 것은 최종 출력에 아무런 영향도 미치지 않습니다
이 것은 단순히 미리 보기를 하고 해당 조건을 만족시키며 오류 메시지를 없애기 위함일 뿐입니다
텍스처를 하나 꺼낼 것이므로 texture를 입력합니다
지금까지 우리는 TextureSample만 사용했습니다
이 노드를 선택하고 RGB를 Preview에 연결하려고 하면 Float3는 Texture 2D(텍스처 2D)와
호환되지 않습니다 라는 문구가 보입니다 즉 Textures Sample은 텍스처를 만들어 내는데
RGB 정보로 출력합니다
하지만 이 소켓은 Constant3Vector가 아닌 텍스처를 필요로 하므로
texture object(텍스처 오브젝트)가 필요합니다
이 Textures Sample을 지우고 TextureObject를 입력하겠습니다
이제 우리는 이 소켓을 Preview 소켓에 연결할 수 있고 메시지는 사라질 것 입니다
Apply를 누르고 Auto Landscape(자동 랜드스케이프) 머티리얼로 돌아가서
갱신된 정보를 보려면 이 머티리얼 함수를 지우고 다시 드래그 해와야 합니다
이제 BaseColorTexture라고 설정된 것을 보실 수 있고 Result를 출력할 것입니다
연습 과제 시간입니다
연습 과제로는 Landscape(랜드스케이프) 머티리얼을 처리하는 머티리얼 함수를 만들어 보시기 바랍니다
우리의 머티리얼 그래프가 상당히 복잡해질 것이므로 머티리얼 함수가 제공하는 재사용성이 필요하기 때문에
이 단계는 우리의 목적을 달성하는데 상당히 중요합니다
또한 function input(함수 입력)이 Base Color Texture(베이스 컬러 텍스처)의 입력을 받을 수 있게 하시기 바랍니다
Input Type을 Texture 2D로 바꾸시려면 Preview 소켓에 texture object(텍스처 오브젝트)로 연결하셔야 한다는 것을
기억하시기 바랍니다
비디오를 멈추시고 직접 해보시기 바랍니다
어떻습니까
머티리얼을 처리할 머티리얼 함수를 만드는 데 성공하셨습니까
머티리얼 함수를 다룰 때에는 조심하시기 바랍니다
Input Type에 항상 신경을 쓰셔야 합니다
보시면 제가 이미 BasicColorTexture로 설정해 두었고 텍스처로 입력받고 있습니다
이 것은 출력 결과가 될 것입니다
그러나 이런 설정에는 한 가지 문제가 있습니다
빠르게 보여드리겠습니다
texture object(텍스처 오브젝트)가 필요하기 때문에 현재로서는 이 Textures Sample을 이 곳에 연결할 수 없습니다
그러므로 마우스 우클릭을 하고 TextureObject를 입력하는데
파라미터가 필요합니다
그러므로 이 노드로 설정합니다
BaseColorTexture로 이름 짓고 이 소켓을 이 BaseColorTexture소켓에 연결합니다
자 이제 입력은 준비되었지만 출력은, 머티리얼 함수로 돌아가 보면
이 텍스처를 직접 출력하고 있는 것을 보실 수 있습니다
RGB 정보를 출력하고 있지 않고
텍스처 전체를 보내고 있습니다
하지만 이 것은 우리가 원하는 것이 아닙니다
우리는 이 것을 머티리얼에 사용하려고 합니다
즉 우리는 RGB 정보를 출력해야 한다는 뜻 입니다
우리는 이것을 base color(베이스 컬러)로 사용하려고 하기 때문에
이를 위해서는 다른 설정이 필요합니다
보다 정확히는 material attributes(머티리얼 어트리뷰트)를 사용해야 합니다
material attributes(머티리얼 어트리뷰트)를 사용할 때 자주 사용해야 하는 두 가지 옵션이 있습니다
하나는 SetMaterialAttributes 노드이고
다른 하나는 material attributes(머티리얼 어트리뷰트)의 사용입니다
이 두 가지를 어떻게 사용하는지 보도록 하겠습니다
머티리얼 함수로 돌아가서
마우스 우클릭을 하고 SetMaterialAttributes를 입력하면
이렇게 간단한 노드가 생기는 데
개별적인 material attributes(머티리얼 어트리뷰트)를 설정하여 사용할 수 있습니다
이 Add버튼을 누르면 array element(배열 요소)가 하나 Set Types에 추가되고
이 드롭다운 메뉴를 클릭해보면 첫 번째 항목은 BaseColor 입니다
이제 Base Color의 입력이 생겼으니
이 소켓을 Base Color에 연결하려 하면 이 노드가 texture object(텍스처 오브젝트)이므로 연결이
되지 않습니다
Base Color는 RGB 정보를 필요로 합니다
이 소켓은 최종 출력에 연결하고
RGB 정보를 얻기 위해 TextureSample 노드가 필요합니다
엔터를 눌러 Texture Sample 노드를 만들고
이 texture object(텍스처 오브젝트)를 이 texture 소켓에 연결하면 이제 이 texture object(텍스처 오브젝트)를 사용할 수 있고
이 RGB를 Base Color에 연결합니다
이제 출력 값은 무엇일까요
출력은 처리된 머티리얼이 될 것이므로 설정을
채도와 명도 그리고 대비 같은 조절을
이 곳에서 할 수 있고 최종 출력 결과는 처리된 머티리얼이 됩니다
그러므로 출력 이름을 Result에서 ProcessedLandscapeMaterial로 바꾸고 Apply를 누르겠습니다
다시 M_AutoLandscape로 돌아가면 이름이 업데이트되지 않았습니다
제가 알기로 언리얼 엔진 4에서는 이런 문제가 없었는데 언리얼 엔진 5에서는
업데이트된 이름을 적용하려면 머티리얼 함수를 삭제하고 머티리얼 그래프에 다시
가져와야 합니다
이제 업데이트된 이름이 적용되었습니다
이제 이 ProcessedLandscapeMaterial을 최종 출력에 연결하면 되는데 보시는 것처럼
ProcessedLandscapeMaterial를 연결할 수 있는 소켓이 없습니다
왜냐하면 이 소켓들은 모두 Base Color(베이스 컬러)와
메탈릭과 Specular(스페큘러)를 위한 개별적인 입력으로서, 처리된 머티리얼 자체를 사용할 수 없습니다
이 문제를 해결하기 위해 이 핀을 먼저 제거하겠습니다
이 노드를 M_AutoLandscape에서 Use Material Attributes(머티리얼 어트리뷰트 사용)으로 변경해야 합니다
체크하시면 Material Attributes(머티리얼 어트리뷰트)라는 하나의 소켓만 존재하게 됩니다
이제 이 소켓을 Material Attributes(머티리얼 어트리뷰트)에 연결할 수 있고 BaseColorTexture노드는
이 입력에 연결하고 적용합니다
머티리얼 인스턴스로 돌아가서
이제 BaseColorTexture를 위한 파라미터가 생겼고 이제 임포트한 텍스처를 사용할 수 있습니다
Megascans 폴더로 가서 base color(베이스 컬러)로 이 Mossy Grass를 선택하시기 바랍니다
그냥 선택하시고 BaseColorTexture를 체크하시고 이 아이콘을 누르시면
선택된 텍스처를 입력으로 사용합니다 이렇게 머티리얼 함수를 사용하시면 되고
머티리얼 함수의 좋은 점은 여러 번 사용할 수 있다는 것입니다 머티리얼 함수를
복제해서 두번 째 Base Color Texture(베이스 컬러 텍스처)를 처리할 수 있고
세 번째가 있어도 위에 있는 노드들의 복제 없이 이 머티리얼 함수를 이용하면 됩니다
이번 강의에서는 머티리얼 함수에 대해서 그리고 어떻게 모듈성과 재사용성을 제공하는 지에 대해 알아보았고
texture object(텍스처 오브젝트)가 무엇인지에 대해서도 알아보았습니다
지금까지 Texture Sample 노드만 사용해왔는데 사실 이 노드는 texture object(텍스처 오브젝트)를 뽑아서 RGB 정보로
출력하는 것입니다
Use Material Attributes(머티리얼 어트리뷰트 사용)에 대해서도 알아보았는데 최종 입력들을 하나의 노드로 바꾸어
머티리얼 함수의 출력을 사용할 수 있었습니다
좋습니다
다음 강의에서 뵙겠습니다