환영합니다 지난 강의에서는 텍스처 Compression(압축) 설정과
주요 Compression(압축) 설정에 대해 다뤄보았습니다
텍스처 Sampler Type에 대해서도 살펴보았습니다
올바른 결과를 위해서는 Compression(압축) 설정과 Sampler Type이 모두
올바르게 설정되어야 한다는 것을 잊지 마시기 바랍니다
지금까지는 Base Color(베이스 컬러)와 Roughness(러프니스) 텍스처를 사용했습니다
그리고 다음으로 다뤄 볼 텍스처 맵은 노멀 맵입니다
노멀 맵이란 무엇일까요?
여기 여러분께 보여드리고 싶은 두 Object(오브젝트)가 있습니다
위 Object(오브젝트)를 먼저 보시기 바랍니다
디테일이 부족하며 그닥 완성도 있어 보이지는 않지만 아래 Object(오브젝트)는 위의 것보다 더 디테일이
추가되었습니다
이 두 mesh(메시)들은 동일한 Polygon Count(폴리곤 수)를 갖고 있습니다
둘의 차이점은 둘 중 하나만 노멀 맵을 사용한다는 것 뿐입니다
이 예시를 통해 노멀 맵이 표면에 중요한 디테일을 제공하며
새로운 면을 따로 필요하지도 않는다는 것을 알 수 있습니다
디테일을 만들어 내는 데 도움이 됩니다
이는 노멀을 통해 이루어지거나 개별 픽셀이 바라보는 방향을 통해 이루어집니다
그래서 노멀 맵이라고 불립니다
마스터 머티리얼로 돌아와 보겠습니다
노멀 맵을 위한 텍스처 파라미터를 하나 더 불러와주겠습니다
우클릭 후 Texture Sample Parameter를 입력합니다
NormalTexture라고 이름을 짓겠습니다
텍스처 Sampler Type을 확인하시는 걸 잊지 마시고 지금은 Color로 설정되어 있는데 우리가 원하는
설정이 맞을까요?
노멀 맵을 확인해 봅시다
Texture 폴더로 갑니다
여기 두 노멀 맵이 있습니다
어느 것을 확인해 볼까요?
각 타입이 하는 역할과 우리에게는 어느 것이 필요한지 알아볼 것입니다
첫 번째부터 더블 클릭으로 열어줍니다
Alpha 채널이 없습니다
그러므로 Compress Without Alpha를 활성화해주고 Compression(압축) 설정은 Normalmap으로 설정합니다
좋습니다 특정하게 노멀 맵을 위한 설정입니다
Compression(압축) 설정은 이렇게 끝났습니다
그럼 텍스처 Sampler Type을 다시 확인해 봅시다
Sampler Type은 Color입니다
당연하게도 그건 우리가 원하는 게 아닙니다
그건 Base Color(베이스 컬러)용입니다
그러므로 이 드롭다운을 클릭해줍니다
노멀을 위한 Sampler Type이 따로 있습니다
그것을 선택하겠습니다
그리고 또 미리보기가 검정색이 되었으며 오류가 발생했다는 뜻입니다
이 Default(통일성) 텍스처가 노멀에 쓰이지 않기 때문입니다
이것을 바꿔주어야 합니다
드롭다운을 클릭하면 선택할 수 있는 파일이 두 개가 있습니다
DefaultNormal을 선택해도 좋고 Placeholder를 입력해도 괜찮습니다
그리고 바로 텍스처가 보입니다
노멀을 위한 텍스처입니다
이것을 사용하겠습니다
그리고 UV 소켓에는 이 Cached UV Input을 플러그합니다
좋습니다
노멀 맵을 다룰 때 출력 값으로는 어느 채널을 사용해야 할까요?
RGB 채널에서 나오는 정보가 필요하긴 하지만
정확히는 레드, 그린, 블루 채널을 의미하지 않습니다
각 채널에 저장된 정보는 사실 위치 정보입니다
그러므로 이 RGB는 3D 공간에서 사용되는 XYZ와 대응합니다
그러므로 이 핀을 드래그하여 바로 Cast 해주겠습니다
Named Reroutes 노드를 불러와 CachedDefaultNormalOutput라 이름을 짓고
색은 보라빛으로 바꿔준 다음 최종 출력으로 가보겠습니다
이 CachedDefaultNormalOutput을
노멀 소켓에 연결하고 적용합니다
머티리얼 인스턴스로 돌아가서 노멀의 텍스처를 바꿔줄 것입니다
그러므로 먼저 NormalTexture를 활성화시켜주고 첫 번째 것을 이 텍스처 파라미터에 끌어와 교체해 주겠습니다
자
그럼 바로 표면에 디테일이 보입니다
노멀 맵을 사용한 것이고
이건 노멀 맵을 사용하지 않은 결과고, 이건 다시 노멀 맵을 사용한 결과입니다
표면에 눈에 띄는 디테일이 생겼습니다
하지만 마스터 머티리얼에서 우리는 더 자세한 제어를 하기 원합니다
그리고 노멀 맵에서 제가 제어하고 싶은 것은 강도입니다
그러면 당연히 이제 필요한 것은 첫 번째로 텍스처이며 두 번째는 FlattenNormal
입니다
이 노드는 이전에 Saturation(채도)을 위해 사용한 Desaturation(탈색) 노드와
비슷한 방식입니다
Normal에 플러그하면 그게 베이스가 되고 Flatness에 숫자를 플러그하면
노멀 맵의 강도를 낮춰주는 결과가 나타납니다
그리고 물론 그건 우리가 원하는 결과가 아닙니다
값을 올리면 강도도 올라가기 원합니다
그러면 이어서 오늘의 과제를 드리겠습니다
여러분의 과제는 스칼라 파라미터를 추가해 노멀 강도를 제어하는 것입니다
우선 텍스처 파라미터 타입부터 올바르게 설정해야 한다는 것을 잊으시면 안 됩니다
그리고 Flatten Normal 노드를 사용해 결과를 달성하시기 바랍니다
거기서 노멀의 강도를 제어할 수 있도록 하는 것입니다
그리고 제가 원하는 동작은 파라미터의 값을 올리면
강도도 올려지는 것입니다
그러면 또 다른 노드가 필요합니다
이러한 동작을 위해 필요한 노드입니다
그리고 마지막으로 노멀과 관련된 모든 파라미터를 따로 그룹으로 분류하여 원하는 순서대로
배치하시기 바랍니다
지금쯤 익숙한 작업일 거라고 생각합니다
그럼 영상을 멈추고 시도해 보시기 바랍니다
도움이 필요하시면 돌아오셔도 됩니다
어떠셨나요?
성공적으로 노멀 맵의 컨트롤을 얻으셨나요?
다시 함께 해봅시다
여기 이미 CachedDefaultNormalOutput이 있습니다
노드를 하나 더 추가하겠습니다
Flatten Normal입니다
그리고 이 RGB를 Normal에 플러그하고 결과를 이 출력 값에 넣어줍니다
그리고 Flatness는 현재 우리가 값을 올리면 노멀의 강도를 낮춰줄 것입니다
우선 스칼라 파라미터를 불러와 보겠습니다
이름은 Normal Strength로 하고 기본 값은 1로 하겠습니다
값을 올렸을 때 강도도 올리고 싶다면 결과를 반전시켜야 합니다
그래서 필요한 노드는 One Minus이며 이걸 이 소켓에 연결하고 이것은
Flatness에 연결합니다
이제 남은 것은 분류하는 일입니다
노멀 텍스처는 따로 그룹을 만들어 주겠습니다
05 Normal 그룹을 만들어주고 우선 순위는
1로 설정한 다음 이 파라미터도 노멀 그룹에 넣어주겠습니다
우선 순위는 2로 하고 적용합니다
머티리얼 인스턴스로 돌아가겠습니다
이제 노멀 강도에 대한 제어가 생겼습니다
값을 키우면 노멀의 강도 또한 증가합니다
값을 줄이면 강도가 약해지며 정확히 제가 원하던
결과입니다
이제 노멀의 강도 제어가 가능해졌으니 이제
노멀 맵의 종류들을 살펴봅시다
노멀 맵에는 가장 흔한 두 종류가 있습니다
하나는 DirectX, 또 하나는 OpenGL 입니다
어느 것을 사용해야 할까요?
저도 모르겠습니다
둘 다 시도해 보는 것은 어떨까요?
머티리얼 인스턴스로 돌아가 보겠습니다
지금은 이 종류의 노멀 맵을 사용하고 있으며 마우스를 올려보면
DirectX라 쓰여있습니다
만약 OpenGL을 사용하면 어떻게 될까요?
그럼 이것을 이 파라미터로 드래그해 주겠습니다
OpenGl을 사용하면 이런 결과가 나타나는데 잘 보여드리기 위해 강도를
높혀보겠습니다
이것이 OpenGL, 이것은 DirectX입니다
차이가 느껴지시나요?
다시 보여드리겠습니다
OpenGL이고 이건 DirectX입니다
DirectX를 사용할 때만 그림자가 올바르게 적용되고 OpenGL을 사용하면
잘못된 그림자가 생깁니다
그러므로 언리얼에서 작업할 때는 항상 DirectX를 노멀 맵으로 사용해야 합니다
하지만 그렇다고 OpenGL을 노멀 맵으로 사용하면 안 된다는 것은 아닙니다
잘못된 그림자가 보이는 이유는 축들 중 하나가 뒤집어졌기 때문입니다
그것을 다시 되돌릴 수 있다면 올바른 결과가 보일 것입니다
그래서 이 OpenGL 노멀 맵을 더블 클릭으로 열어주고 Advanced 드롭다운을
봅시다
Flip Green Channel이 보입니다
이걸 활성화하면 올바른 결과, 즉 DirectX와 동일한 결과가 나타납니다
해보겠습니다
저장을 하고
머티리얼 인스턴스로 돌아갑니다
먼저 DirectX를 노멀 맵으로 사용해 보겠습니다
이것이 DirectX고 이것은 OpenGL입니다
동일한 결과가 보입니다
그저 OpenGL이 노멀 맵의 다른 형식이라는 것과 Unity 같은 게임 엔진들이 사용하기도 하지만
언리얼은 DirectX를 주로 사용한다는 것만 기억하시면 됩니다
하지만 OpenGL 노멀 맵 밖에 없다면 그린 채널을 뒤집어서 사용하면
DirectX와 동일한 결과를 얻을 수 있습니다
이번 강의에서는 노멀 맵의 사용법과 Flatten Normal을 사용해
노멀의 강도를 제어하는 법에 대해 알아보았습니다
노멀 맵의 두 가지 종류에 대해서도 다뤄보았으며 만약 OpenGL만 갖고 있을 경우
그저 Flip Green Channel을 이용하면 된다는 것을 배웠습니다
수고하셨습니다
다음 강의에서 뵙겠습니다