환영합니다
지난 강의에서 Base Color Texture(베이스 컬러 텍스처)안에 저장된 값인 RGB 정보를
잘 사용했습니다
보다 정확히는 레드 채널 안의 값을 스페큘러 입력에 사용했고 어쩌면 다른 채널의 다른 값을
사용하셨을 수도 있습니다
별로 상관 없습니다
스페큘러 값만 조절하신다면 플라스틱 같은 모습은 없어질 것입니다
우리가 여기까지 작업했습니다
훨씬 보기 좋은 Landscape(랜드스케이프)가 되었고 현재 Landscape Material(랜드스케이프 머티리얼)의
모습입니다
base color(베이스 컬러)를 위한 texture(텍스처) 입력밖에 없습니다
이번 강의에서는 노멀을 위한 TextureInput을 추가해 보도록 하겠습니다
master material마스터 머티리얼)에서 배운 것입니다
보시는 것처럼 texture paramteter(텍스처 파라미터)를 갖고 있고 노드를 사용해서 노멀의 세기를 제어합니다
Landscape Material(랜드스케이프 머티리얼)에 동일한 작업을 할텐데 옃 가지 차이점이 있습니다
프로젝트로 돌아가서 M_LandscapeMaterialProcee를 더블 클릭하여 열고
정돈한 것을 유지하기 위해서 이 큰 덩어리를 base color(베이스 컬러)라고 comment(코멘트)를 달고 약간
드래그 합니다
이 덩어리는 스페큘러라고 comment(코멘트)하겠습니다
좋습니다
다음은 노멀 맵의 texture(텍스처)입력입니다
보시는 것처럼 이것은 Base Color Texture(베이스 컬러 텍스처)입력 이고
노멀 맵에 동일하게 하도록 하겠습니다
texture(텍스처)를 입력할 FunctionInput을 만드는 데
이 것을 Function Input Texture 2D로 바꾸고 입력 이름을 NormalTextureInput으로
바꾸도록 하겠습니다
이렇게 FunctionInput을 만들었는데
이 핀에서, 여기서 나오는 값은 노멀 맵이
될 것입니다
기억을 살려드리기 위해 BaseColorTexture로 돌아가겠습니다
이 값을 처리하고 있는데
이 값은 Base Color Texture(베이스 컬러 텍스처)에서 나와 이 TextureBombing 머티리얼 함수로 가는데
노멀 맵에도 동일한 것을 해야 합니다
이 동일한 기술이 노멀 맵에도 적용되어야 하는데 이 머티리얼 함수가
제공하는 모듈성을 이용해서 아주 쉽게 할 수 있습니다 그냥 이 머티리얼 함수를 복제해서
노멀을 처리하는데 사용하면 됩니다
따라서 Texture에 연결하겠습니다
좋습니다
UVs는, Base Color Texture(베이스 컬러 텍스처)로 가보면 UV를 처리하는 데 landscape coordinates(랜드스케이프 좌표)를
사용하는데 같은 방식을 사용해야 합니다 핀을 바로 여기에 연결하는 것만 제외하고
말입니다
named reroute node(이름 경유 노드)를 사용할 것이므로 이 핀의 연결을 끊고 이 landscape coordinates 노드를 옮기고
핀을 드래그해서 named reroute node라고 입력합니다
CachedLandscapeCoordinate라고 이름 짓고 comment(코멘트)를 달겠습니다
이 것이 named reroute node(이름 경유 노드)가 제공하는 좋은 점입니다
선이 뒤얽히는 것을 피할 수 있게 해줍니다
여기에 CachedLandscapeCoordinate를 사용해서
UVs에 연결합니다
좋습니다
그리고 UVs에도 동일한 작업을 해야 하므로
CachedLandscapeCoordinate를 UVs에 연결합니다
좋습니다
다음은 CellBombTextureScale입니다
base color(베이스 컬러)의 처리로 돌아가면 CellBombTextureScale을 조절하는 데 이 입력을
사용하고 있습니다
이 것은 하나의 머티리얼이기 때문에 여기서 입력 값을 바꾸면
이 머티리얼의 모든 texture(텍스처)에 영향을 주려고 합니다
그러므로 이 입력에도 named reroute node(이름 경유 노드)를 사용해야 노멀 맵에도 사용할 수 있습니다
핀을 드래그 해서 named reroute node를 입력하고
CachedCellBombTextureScale라고 하고
직접 사용하는 대신에 named reroute node(이름 경유 노드)를 사용합니다
CachedCellBombTextureScale를 선택하고 socket(소켓)에 연결한 후
이 LandscapeCoordinate 바로 밑으로 두 노드를 옮기고
comment(코멘트)를 답니다
좋습니다
그리고 cache(캐시)된 노드를 여기서 사용하는 데 CellBombTextureScale에 연결합니다
그리고 동일한 작업을 InputTextureScale과 RandomOffsetVariation 등의 이 socket(소켓)들에 해야
합니다
마지막 socket(소켓)은 IsNormalMap인데
지금 작업하는 것이 노멀 맵이란 것을 기억하십시오
static bool 값을, 참인 bool 값을 이 socket(소켓)에 연결하여 올바른 결과를 얻어야
합니다
그리고 이 모든 것을 스스로 구현하실 수 있는지 한번 보겠습니다
연습 과제는
MF_LandscapeMaterialProcess의 노멀 맵에 연결할 입력을 추가합니다
sort priority(정렬 우선순위)에 주의하시고 다른 머티리얼 함수인 MF_TextureBombing을 이용해서 노멀 맵을
처리하시기 바랍니다
IsNormalMap socket(소켓)에 유의하시기 바랍니다
최종 값이 올바르기 위해선 true 값에 연결해야 하고
노멀 맵의 제어와 normal strength(노멀의 세기)를 제어를 만들 수 있는지 해보시기 바랍니다
조금 어려울 수도 있습니다
스스로 할 수 있는 지 해 보시기 바랍니다
비디오를 멈추고 직접 해보시고 도움이 필요하면 돌아오시기 바랍니다
잘 돌아오셨습니다
어떠셨습니까
노멀 맵을 잘 추가하셨습니까
어떻게 할 수 있는지 알아보도록 하겠습니다
지금까지 UVs와 CellBombTextureScale만 연결하였고
InputTextureScaale에도 동일한 작업이 필요합니다
TextureScale로 가서
핀을 드래그 하고 named reroute node(이름 경유 노드)를 입력하고
CachedTextureScale라고 이름 짓고 이 named reroute node(이름 경유 노드)를 사용할 것이므로
CachedTextureScale을 선택하고 이 InputTextureScale에 연결합니다
이 두 노드를 드래그해서 CellBombTextureScale 밑으로 이동합니다
comment(코멘트)도 달고
sort priority(정렬 우선순위)를 빠트린 것 같습니다
빠르게 하도록 하겠습니다
좋습니다
그리고 아래에서 CashedTextureScale을 사용하는데
이 texture(텍스처)의 UV 스케일을 직접 제어할 것이고
다음은 RandomOffsetVariation인데
또한 UsedRotationVariation과 RandomRotationVariation이 있는데
이 처리는 다소 지루할 수 있으므로
여러분은 이미 하실 줄 아실거라고 믿기 때문에 빨리 감기로 넘어가겠습니다
좋습니다
모든 named reroute node(이름 경유 노드)들을 각각 상응하는 socket(소켓)들에 연결하였고
모든 것에 comment(코멘트)도 달았는데 숫자는 sort priority(정렬 우선순위)를 의미합니다
다음은 noraml map(노멀 맵)입니다
이 것이 노멀 맵이므로 static bool을 사용하겠습니다
디폴트 값을 참으로 주고 IsNormalMap에 연결합니다
좋습니다
normal texture(노멀 텍스처)는 다 끝난 것 같고 이 출력을
Base Color Texture(베이스 컬러 텍스처)와 동일하게 제어하려고 합니다
이 많은 노드들을 Base Color Texture(베이스 컬러 텍스처)를 처리하기 위해 사용하고 있고
여기에 동일하게 하고 싶습니다
제어하고자 하는 것은 normal strength(노멀의 세기)인데 master material(마스터 머티리얼)에서 했던
다소 지저분 했던 것과 다르게 올바른 방법은 이렇습니다
ComponentMask를 사용하는데 레드 채널과 그린 채널을 mask(마스크)로 한 번에 감싸고
다른 ComponentMask로
B 채널을 감싸는데
이는 Z값이고 레드 채널과 그린 채널은 X와 Y 값이 됩니다
normal strength(노멀의 세기)는 X와 Y값이 클 수록 B 값도 커질 것이고
이 것이 normal strength(노멀의 세기 )를 제어하는 방법입니다
Multiply 노드를 사용하는데 이 것을 socket(소켓) A에 연결하고 socket(소켓) B에는
FunctionInput을 만들고
scalar(스칼라)가 되어야 하고
NormalStrength라고 이름 짓습니다
여기에서 값을 증가 시키면 최종 출력은 강한 normal strength(노멀의 세기)를 가질 것입니다
좋습니다
socket(소켓)B에 연결하고 sort priority(정렬 우선순위)가 필요할 것 같습니다
번호를 확인해 보겠습니다
NormalTextureInput의 sort priority(정렬 우선순위)는
이 BaseColorTextureInput 아래에 갔으면 좋겠는데
6이므로
7로 하겠습니다
그리고 다른 입력들의 숫자도 바꿔야 합니다
빠르게 하겠습니다
과정이 조금 길고 지루하지만 숫자 실수를 하지 않도록 하시기 바랍니다
입력 socket(소켓)들을 정리하고 싶으시다면 말입니다
좋습니다
이 NormalStrength 입력은 13번이 되고 이 NormalTextureInput은 7이 됩니다
그리고 기억할 수 있도록 빠르게 comment(코멘트)를 달겠습니다
입력이고
13.Normal Strength 입니다
좋습니다
다음으로 이 두 값들을 하나로 모으고 싶습니다
AppendVector 노드를 사용하는데
x와 y값 그리고 z 값을 합칩니다
이제 최종 출력은 노멀이 될 것입니다
named reroute node(이름 경유 노드)를 사용하고
CachedNormalOutput이라고 하고 이 것을 material attributes(머티리얼 어트리뷰트)로 하고 싶습니다
그러므로 socket(소켓)이 필요하므로
socket(소켓)을 추가하는데 Metallic이 아니라
Normal로 하고 CachedNormalOutput을 Normal socket(소켓)에
연결합니다
그리고 오류 메시지를 없애기 위해 FunctionInput의 Preview 연결이 필요하므로
하나 만들겠습니다
TextureObject를 입력하고 DefaultTexture를 사용하는 대신에 DefaultNormal을
사용하여 Preview socket(소켓)에 연결하고 그래프를 조금 정리합니다
bit.
이 큰 덩어리가 노멀이 될 것입니다
apply(적용)을 누르고
M_AutoLandscape 머티리얼로 돌아가면
NormalTextureInput이라는 socket(소켓)이 있습니다
TextureObjectParameter를 빠르게 추가하고 GrassLayer_NormalTexture라고
합니다
같은 타입이어야 하기 때문에
DefaultNormal로 설정하고 NormalTextureInput에 연결합니다
NormalStrength는
스칼라 파라미터를 만들고
GrassLayer_NormalStrength라고 하고 디폴트 값을 1을 주고 NormalInput에
연결합니다
그리고 apply(적용)을 누르고
MI_AutoLandscape로 돌아가서
이 파라미터들을 정리하는 것을 잊어버렸는데
나중에 할 수 있으니 걱정하지 마십시오
이 Surface 폴더의 Mossy_Grass를 이 파라미터의 NormalTexture로 사용할 것이므로
이 아이콘을 클릭합니다
이 Landscape Material(랜드스케이프 머티리얼)에 노멀 맵을 사용하고 있고 세기도 조절할 수 있습니다
이 값을 증가시키면서 노멀 맵의 세기를 조절하고 있고
다시 1로 바꾸고 이 파라미터들을 각자의 그룹으로 빠르게 정리하도록
하겠습니다
이제 다시 머티리얼 인스턴스로 돌아와서
base color(베이스 컬러)와 normal texture(노멀 텍스처)를 위한 텍스처 파라미터들이 있고 값들을 이 아래에서
조절할 수 있습니다
이번 강의에서 Landscape Material(랜드스케이프 머티리얼)에서 노멀 맵을 사용해보았고 normal strength(노멀의 세기) 또한
조절이 가능합니다
x와 y값이 클수록 최종 세기 또한 커집니다
이렇게 normal strength(노멀의 세기)를 조절하고
MF_TextureBombing덕분에 또 다른 texture(텍스처)를 머티리얼 함수에 쉽게 추가할 수
있었습니다
잘 하셨습니다
다음 강의에서 뵙겠습니다