환영합니다
지난 강의에서 Landscape(랜드스케이프) 머티리얼의 자동화에 대해 알아보았습니다
개념에 대해서는 다루었습니다
이제 mask(마스크)를 만들고 생성하는 것이 가장 중요하다는 것을 알고 있습니다
Landscape(랜드스케이프) 머티리얼의 모습입니다
슬로프에 문제가 있다는 것을 눈치 채셨을 텐데 슬로프가 슬로프처럼
보이지 않습니다
이유는 우리가 타일링을 깬 방법 때문입니다
타일링을 깨기 위해서 TextureBombing을 사용해 왔는데 슬로프가
제 각기 다른 작은 조각들로 잘려져서 슬로프처럼 보이지 않는 것입니다
고치려면 TextureBombingScale과 TextureScale을 감소 시켜서 슬로프가
더 큰 패턴으로 이루어지게 하면 됩니다
AutoLandscapeMaterial폴더로 가서 M_AutoLandscape를 더블 클릭해서 열고
고치려면 slope layer(슬로프 레이어)에 CellBombTextureScale이 필요합니다
새 파라미터를 만들고
SlopeLayer_CellBombTextureScale이라고 이름 짓습니다
이 글로벌 파라미터를 사용하는 대신에 새로 만든 파라미터를 만들고 이 노드는
지우겠습니다
이 것을 맞는 그룹에 넣겠습니다
06-SlopeLayer가 되어야 합니다
sort prioity(정렬 우선순위)는 0이 될 것이고 디폴트 값은 0.1을 주고
Apply를 누릅니다
이제 slope layer(슬로프 레이어)에 CellBombTextureScale의 개별 제어가 생겼습니다
MI_AutoLandscape를 더블 클릭해서 열어서
slope layer(슬로프 레이어)로 내려가서 이 SlopeLayer_CellBombTextureScale의 값을
감소 시키겠습니다
0.01로 내리겠습니다
그리고 InputTextureScale도 감소 시키겠습니다
0.1로 감소 시키면
이제 제대로 된 슬로프가 되었습니다
슬로프에 큰 바위들이 있고 기존의 모습보다 훨씬 낫습니다
좋습니다 slope mask(슬로프 마스크)를 어떻게 만드는지 보도록 하겠습니다
slope mask(슬로프 마스크)를 만들기 위해서는 다른 종류의 노멀들을 다뤄야 합니다
노멀에는 여러 종류가 있습니다
첫 번째로 오늘 알아볼 Face Normal(페이스 노멀)이 있습니다
이름이 암시하듯이 face normal(페이스 노멀)은 표면에서 수직으로 뻗어 나오는 이 붉은 선입니다
이 붉은 선들의 길이는 보통 짧습니다
그러므로 보통은 길이에 관여하지 않습니다
그러나 이 것이 제공하는 귀중한 정보는 방향입니다
각각의 face normal(페이스 노멀)들이 이 표면이 어느 방향을 가리키고 있는 지를 알려주기 때문에
face normal(페이스 노멀)이라고 불립니다
그리고 이 것이 노멀입니다
표면에서 수직으로 뻗어 나오는 선 입니다
face normal(페이스 노멀)말고도 vertex normal(버텍스 노멀)이라고 하는 것이 있습니다
표면 대신에 나오는 대신에 vertex(버텍스 노멀)의 선들은 face normal(페이스 노멀)과 동일한 방식으로
꼭지점에서 나옵니다
vertex normal(버텍스 노멀)은 이 꼭지점이 어느 방향을 가리키고 있는 지를 알려줍니다
vertex normal(버텍스 노멀)이 제공하는 방향 정보를 이용하면 slope(슬로프)를
찾을 수 있습니다
중요한 것 먼저 보겠습니다
언리얼에서 vertex normal(버텍스 노멀)을 어떻게 구할까요
그를 위한 노드가 있습니다 보시는 이 노드가 말입니다
VertexNormalWorkspace라고 합니다
어떤 메시가 이 머티리얼을 사용하고 있든 이 노드를 사용하면 vertex normal(버텍스 노멀)을 구할 수 있습니다
좋습니다
vertex normal(버텍스 노멀)을 구하고 나면 다음엔 무엇을 해야 할까요
다음으로 필요한 노드는 DotProduct 입니다
이름에 겁먹지 마시기 바랍니다
뒤에서 이루어지는 실제 계산은 상당히 복잡하지만 우리는
출력 결과만 신경 쓰면 됩니다
그리고 실제로 꽤 간단합니다
Dot Product 노드의 출력 결과는 두 벡터가 향하는 방향이 얼마나 비슷한 지를
알려줍니다
vertex normal(버텍스 노멀)이 방향 정보를 가지고 있다는 사실을 알고 있는데 이 것이 벡터입니다
보다 정확히는 1의 길이를 갖고 있는 벡터입니다
말씀드렸듯이 길이는 너무 짧습니다
보통 우리는 길이에 관여를 하지 않지만 이 벡터들의 방향 정보로는 무언가를 할 수
있습니다 Dot Product 노드를 이용하면 두 벡터의 방향이 얼마나 다른 가를 알 수 있습니다
결과는 1Float으로 돌아올 것입니다
이 두 벡터가 평행일 경우 값은 1이 될 것이고
수직일 경우 결과는 0이 되고
정 반대 방향일 경우
결과는 -1이 되며 이렇게 Landscape(랜드스케이프)의 슬로프를 구할 수 있습니다
어떻게 하는 걸까요
vertex normal(버텍스 노멀)과 다른 벡터를 사용한다고 하겠습니다
다른 벡터 또한 1의 길이를 갖고 있고
x축은 0, y축은 0, z축은 1을 갖고 있습니다
이 벡터를 vertex normal(버텍스 노멀)과 비교하면 출력은 어떻게 될까요
빠르게 상기 시켜드리면 Dot Product의 출력 결과는 두 벡터를 비교해서
두 벡터가 평행이면 값은 1
수직이면 값은 0
정반대 방향이면 -1이 됩니다
2초정도 멈추겠습니다
생각해보십시오
이 두 벡터를 비교하면 출력은 무엇이 될까요
시각화하기 쉽게 여기 있는 파란 화살표를 상상해 보시기 바랍니다
이 것은
제 Landscape(랜드스케이프)입니다
상상하기 힘든 것은 알지만 조금만 참아보십시오
우리의 Landscape(랜드스케이프)에는 위로 향하는 꼭지점이 있고
이 방향으로 향하는 꼭지점도 있습니다
이 붉은 화살표를 상상해 보시기 바랍니다 이 것은 다른 벡터입니다
이 두 벡터가 평행일 경우, 이 선이라고 하겠습니다, 1의 값을 얻습니다
즉 하얀색 값을 얻습니다
그리고 이 것과 이 벡터를 비교하면 수직이므로 0의 값을 얻습니다
하지만 슬로프(경사면)은 사실 이 벡터와 이 벡터 사이의 범위인 이 지역입니다
그러므로 슬로프의 값은 실제로는 어떤 회색 값이 될 것입니다
0과 1의 사이의 범위에 말입니다
이 것이 정보입니다
이렇게 슬로프를 구하는 것입니다
언리얼에서 시각화릃 해보겠습니다
프로젝트로 돌아와서
ExampleMaterial폴더로 갑니다
시각화를 위한 폴더를 하나 더 만들고
SlopeMask라 이름 짓고 더블 클릭해서 들어갑니다
여기에 새 머티리얼을 만들겠습니다
머티리얼의 머티리얼로 갑니다
M_SlopeMask라고 부르고 머티리얼 인스턴스를 만듭니다
MI_SlopeMask라고 이름 짓겠습니다
됐습니다
더블 클릭해서 열겠습니다
vertex normal(버텍스 노멀) 노드를 사용해야 합니다
꺼내봅시다
우선 vertex normal을 입력하면
여기 있습니다
VertexNormalWS
두 번째 노드는 up vector(업 벡터)가 필요합니다
이 두 벡터를 비교해야 합니다
블루 채널에 1의 값을 주겠습니다
여기서 실제로는 z축을 의미합니다
이 두 벡터를 비교하기 위해 DotProduct를 사용하겠습니다
소켓 A에 연결하고 소켓 B에 연결하고 Base Color에 연결합니다
보기 어렵기 때문에
Landscape(랜드스케이프)에 이 머티리얼을 사용하겠습니다
landscape를 선택하고 이 MI_SlopeMask를 Landscape(랜드스케이프) 머티리얼에 넣겠습니다
좋습니다
새하얀 표면을 보실 수 있습니다
슬라이드를 기억해 보시면 표면은 위를 향하기 때문에 하얀색의 값을 얻을 것이라고
말씀 드렸습니다
평평한 땅은 하얀색 값을 갖고 꼭대기는 꼭지점이라면
위를 보고 있으므로 1의 값을 가집니다
그러므로 하얀색으로 보여야 합니다 그러나 슬로프는
0에서 1 사이의 grayscale(그레이스케일) 값을 가져야 하는데
모든 것이 새하얀 이유는 슬로프의 값이 충분히 강하지 않기
때문입니다
그래서 하얀색인 것입니다
grayscale(그레이스케일)값은 Power 노드를 사용하면 증가 시킬 수 있습니다
M_SlopeMask로 가서 Power 노드를 꺼냅니다
마스터 머티리얼섹션을 기억해보면 색의 대비를 제어하기 위해 이 노드를
사용했었고 grayscale(그레이스케일)값에 똑같이 할 수 있습니다
Base에 연결하고 Base Color에 연결합니다 지수는
파라미터를 사용하겠습니다
SlopeMaskStrength라고 하고 디폴트 값은 1을 주겠습니다
지수에 연결하고 Apply를 누릅니다
프로젝트로 돌아가서
MI_SlopeMask를 열고
SlopeMaskStrength를 50으로 올리면 슬로프에 약간의 검은 값들이
생겼습니다
이 땅은 위를 향하기 때문에 1의 값을 얻습니다
이 것이 현재 우리가 갖는 결과입니다
하지만 기억하십시오 흰색 값은 슬로프에 가고 편평한 땅은 검은색인 것을 원합니다
슬로프에 머티리얼을 적용하는 방법이었습니다
그 말은 값을 반전 시켜야 한다는 의미입니다
한 가지 더, Dot Product의 리턴 결과가 1에서 -1 범위의 값이기
때문에
값이 0 밑으로 내려가지 않기를 원합니다 즉 여기에 작업을 해야 합니다
무엇인지 기억하십니까
값을 어떻게 반전 시키는 지 기억하십니까
이 것이 오늘의 연습 과제가 되겠습니다
slope mask(슬로프 마스크)를 위한 예시 머티리얼을 만드시고
Landscape(랜드스케이프)에 할당하기 바랍니다
이렇게 하면 slope mask(슬로프 마스크)를 시각화할 수 있는데 Power 노드와 CheapContrast를 이용해서 mask(마스크)를
조절하시기 바랍니다
Power 노드는 mask(마스크)의 세기를 조절하기 위해서만 사용했고 CheapContrast 노드는 가장자리 선명도를
조절하는 데에 사용할 수 있습니다
첫 섹션에서 dissolve material(디졸브 머티리얼)을 만들 때 했었습니다
아직 이 노드를 기억하시길 바라며 CheapContrast를 이용해서 실험해 보시고 mask(마스크)에 어떤 일을 하는지 보시기
바랍니다 또한 어떻게 슬로프를 구하고 값을 반전 시키고 값을 0과 1 사이에 유지할 지도
생각해 보시기 바랍니다
비디오를 멈추고 해보시고 도움이 필요하시면 돌아오십시오
잘 돌아오셨습니다
slope mask(슬로프 마스크)를 만드셨습니까
어떻게 더 낫게 만들 수 있는지 보겠습니다
머티리얼 그래프로 돌아와서 이 값을 Power 노드에 연결하기 전에 0과 1 사이에
clamp(범위 제한)을 하겠습니다
Saturate 노드를 사용할 것인데 값이 1에서 -1사이가 될 수 있는데 0 밑으로
떨어지는 것을 원하지 않기 때문입니다
그러므로 Saturate 노드를 사용하고 Base에 연결하고 Base 이후에 CheapContrast 노드를
사용할 것입니다
이 것을 사용해 가장자리 선명도를, mask(마스크)의 선명도를 조절할 수 있습니다
또 다른 파라미터를 사용하겠습니다
SlopeMaskSharpness라고 하고 디폴트 값은 1을 주고
Contrast에 연결하고 Base Color에 연결합니다
사실 Base Color 전에 Saturate 노드가 하나 더 필요합니다 왜냐하면 이 동작 후에 값이 0 밑으로
떨어질 수도 있기 때문입니다
Saturate를 하나 더 사용해서 값을 0과 1 사이로 제한하고
Base Color에 연결합니다
Apply를 누르면 이제 slope mask(슬로프 마스크)에 더 많은 제어가 가능하고 가장자리 선명도를 조절 가능합니다
값을 0.5로 감소시키면 더 부드러운 가장자리가 됩니다
0.1로 감소 시키면 더 부드러운 가장자리가 되고 이제 슬로프에 검정색 값만 있고
평평한 땅에는 하얀색 값만 있습니다
하지만 우리는 정 반대를 원합니다
하얀색 값이 슬로프에 있어야 합니다
OneMinus 노드를 사용하면 쉽게 할 수 있습니다
첫 섹션에서 다뤘는데 기억하시길 바랍니다
이 노드를 사용해서 dissolve material(Dissolve(디졸브) 머티리얼)을 만들었습니다
OneMinus 노드를 꺼내고 여기서 Saturate 노드가 사실 상당히 중요합니다 왜냐하면
이 것이 값을 0과 1사이로 제한해 주기 때문에 이 값을 OneMinus 노드에 연결해서 값을
안전하게 반전 시킬 수 있고 이 것을 Base Color에 연결합니다
Apply를 누르고 보면 slope mask(슬로프 마스크)의 세기가 너무 강해 보여서 1로
감소 시키겠습니다
이제 평평한 땅은 검은색 값을 가지고 슬로프는 흰색 값을 가집니다
이렇게 슬로프를 구할 수 있고 이 두 파라미터를 조절해서 만족할 때 까지
mask(마스크)를 조절할 수 있습니다
이번 강의에서 slope mask(슬로프 마스크)를 만들고 Dot Product 노드와 vertex normal(버텍스 노멀)을 알아보았습니다
이제 우리는 Dot Product 노드는 두 벡터의 방향 차이를 비교할 수 있고
1과 -1 사이의 결과를 출력할 수 있다는 것을 알고 있습니다
그리고 이 값을 이용해서 슬로프를 구했습니다
다음 강의에서는 Landscape(랜드스케이프) 머티리얼에서 이 mask(마스크)를 어떻게 사용할 수 있는지 알아보겠습니다
다음 강의에서 뵙겠습니다