환영합니다 지난 강의에서는 머티리얼 함수를 통한 base color(베이스 컬러)의 제어를 배웠습니다
그리고 머티리얼 함수에서 sort priority(정렬 우선순위)를 사용하여 입력 순서를 조절해 보았습니다
현재 우리의 Auto Landscape Material(자동 랜드스케이프 머티리얼)의 모습입니다
이 세 파라미터를 사용하여 base color(베이스 컬러)를 조절하고 이 단일 파라미터를 이용하여
색조를 조절합니다
계속 진행하기 전에 Landscape Material(랜드스케이프 머티리얼)의 파라미터의 수를 줄여보도록 하겠습니다
보시는 것처럼 이 세 개는 모두 단일 스칼라 파라미터입니다
이 세 스칼라 파라미터로 이 property(프로퍼티)들을 조절하는 대신에
Constant3 파라미터로 조절하여 파라미터의 개수를 줄일 수 있습니다
어떻게 하는 지 아직 기억하고 계시길 바랍니다
master material(마스터 머티리얼)을 만들면서 해 보았고 다른 값들을 조절하는 것은
scene(씬)을 만들면서 연습해 보았습니다
이 것이 오늘 여러분의 주요 연습 과제가 될 것입니다
연습 과제로 Constant3 파라미터를 사용해서 base color(베이스 컬러)를 조절하게 하여
머티리얼 인스턴스의 파라미터의 양을 줄여보시기 바랍니다
그리고 각 채널이 무엇을 조절하는지 알 수 있도록
올바르게 이름을 지어주시기 바랍니다
이제 비디오를 멈추고 직접 해보시다가 도움이 필요하시면 다시 돌아오시기 바랍니다
잘 오셨습니다
어떻게 되셨나요
파라미터 하나로 이 세 개의 값들을
잘 조절하셨나요
어떻게 할 수 있는지 같이 보도록 하겠습니다
바로 Constant3Vector를 하나 만들고 파라미터로 변환하겠습니다
그리고 이름은 BaseColorAdjustment라고 짓겠습니다
좋습니다
이 채널들의 이름도 올바르게 변경하도록 하겠습니다
레드 채널은 Brightness라고 짓고 그린 채널은
Saturation이라고 짓겠습니다
그리고 블루 채널은 Contrast라고 짓겠습니다
그리고 제가 잊어버리기 전에 디폴트 값을 각각 1로 주겠습니다
됐습니다
이 세 파라미터는 삭제하고 레드 채널을 Brightness에 연결하고
Saturation은 Saturation에
Contrast는 Contrast에
제가 오타를 냈는데
빠르게 수정하겠습니다
됐습니다 apply(적용)을 누르고
머티리얼 인스턴스로 돌아갑니다
이제 세 개의 스칼라 파라미터 대신에 이 한 개의 파라미터로 base color(베이스 컬러)를
조절합니다
제가 잊어버리기 전에 Alpha 채널에 저장된 값은 사용하지 않을 것이므로
해당 없다고 이름 짓겠습니다
BaseColorAdjustment를 선택하고 Alpha 채널에 N/A라고
입력합니다
됐습니다 이제 누가 이 머티리얼 인스턴스를 사용하든 이 값은 아무 영향이 없다는 것을 알 수 있습니다
이게 우리의 Landscape Material(랜드스케이프 머티리얼)인데
보시는 것처럼 여전히 좋아 보이지는 않습니다
제가 생각하기에 가장 큰 문제는 tiling(타일링)입니다
날아 보면 이 하나의 texture(텍스처)가 Landscape(랜드스케이프)에 타일처럼 계속 반복되는 것이 보이는데
Landscape Material(랜드스케이프 머티리얼)을 이렇게 사용할 수는 없습니다
그러므로 이번 강의에서는 타일링을 어떻게 깨는지를 알아 볼텐데 타일링을 깨는 데에는
여러
방법이 있습니다
사실 이를 해결할 수 있는 몇 가지가 엔진에도 들어 있습니다만
이 것을 사용하기 전에 작은 것부터 해보도록 하겠습니다
가장 직접적이고 가장 쉽다고 할 수 있는 방법부터 보겠습니다
이 방법은 CameraDepthFade 노드를 사용해야 합니다
이 노드는 이렇게 생겼습니다
색에서 알 수 있는 것은 이 것이 머티리얼 함수라는 것입니다
그러므로 더블 클릭해서 함수를 열어 정확히 어떻게 동작하는 지 볼 수 있습니다
그리고 이 노드의 출력 결과는 이렇게 보여질 것입니다 Auto Landscape Material(자동 랜드스케이프 머티리얼)을 만들 때
올바른 mask(마스크)를 찾아 사용하는 것이 가장 중요하다고 할 수 있을 것 같습니다
첫 섹션에서 dissolve material(디졸브 머티리얼)을 만들면서 mask(마스크)가 무엇인지 간단히 알아보았었습니다
즉 mask(마스크)는 실제로 0과 1 사이의 값이란 뜻이며
검은색과 흰색 사이의 값 입니다
그리고 검은색과 흰색으로 우리는 많은 것을 할 수 있습니다
이 값을 Lerp 노드에서 사용할 수도 있습니다
값이 0이면 socket(소켓) A의 값이 무엇이든 출력할 수 있고
값이 1 즉 흰색이면 socket(소켓) B 안의 값이 무엇이든 출력할 수 있습니다
이렇게 Lerp 노드에 사용할 수 있고 심지어는 이 mask(마스크)를, 이 값을 이용하여 직접 곱할 수도
있습니다
이렇게 하면 0을 곱하기 때문에
0을 전달해서 여기의 값은 0이 되고, 1로 곱하면 기존 값에
아무런 영향도 없으므로 그대로 1이 됩니다
이것이 CameraDepthFade의 출력 결과이며
사용할 mask(마스크)를 출력하게 됩니다
좋습니다
그런데 어디가 0이 되고 어디가 1이 될지 실제로 어떻게 결정할까요
답은 우리가 직접 해보면서 알아보도록
하겠습니다
프로젝트로 돌아와서
새 폴더를 만들고 이름은
ExampleMaterial로 짓겠습니다
이 강의의 시작을 기억해보시면 제가 처음 보는 노드가 있으면
이해하기 가장 빠른 방법은 예시를 보는 것이라고 했습니다
그리고 이번 섹션에서 수 많은 새로운 노드들을 보실텐데 가장 빠른 방법은 예시를 보는 것이고
그 예시들을 직접 만들어 보도록 하겠습니다
더블 클릭해서 폴더를 열고
새로운 폴더를 또 만듭니다
이름은 TilingBreak 입니다
이 폴더 안에는 타일링을 깨는 예시 머티리얼들이 들어갈 것입니다 더블 클릭해서 열고
it.
새 머티리얼을 만듭니다
이름은 M_TilingBreak라고 하고 이 머티리얼의 머티리얼 인스턴스를
생성합니다
MI_TilingBreak라는 이름이고
더블 클릭해서 TilingBreak 머티리얼을 열겠습니다
우리가 사용할 노드인 CameraDepthFade를
만들겠습니다
마우스 우클릭을 하고 CameraDepthFade를 입력합니다
됐습니다
Fade Length, Fade Offset, For vertex Shader의 세 함수 입력이 있는데
필수는 이 두 개입니다
이 두 socket(소켓)에만 입력하고 출력할 것입니다
마우스를 올려 보시면 카메라로 부터 페이드 길이에서 하얀색이 되는 0의 gradient(그레이디언트)를
만든다고 합니다
이 설명이 별 도움이 안된다는 것은 저도 잘 알고 있고 이 두 함수 입력 또한
마찬가지 입니다
그러므로 제가 명확하고 간단하게 만들겠습니다
파라미터를 하나 만들고 FadeStartDistance라고 이름 짓습니다
default value(디폴트 값)을 500으로 하겠습니다
그리고 이 파라미터를 복제하고
FadeFallOff라고 이름 짓습니다
이 두 파라미터를 이 두 socket(소켓)에 연결하고 Result를 Base Color에
연결합니다
좋습니다
apply(적용)을 누르고 Landscape Material(랜드스케이프 머티리얼)로 돌아가서 더 나아 보이게 하기 위해
이 머티리얼 인스턴스를 Landscape(랜드스케이프)에 할당합니다
MI_TilingBreak를 Landscape Material(랜드스케이프 머티리얼)에 드래그 합니다
이제 결과를 보실 수 있습니다
mask(마스크)를 생성해 줍니다
그리고 조절할 수 있는 두 파라미터가 있습니다
여기 FadeStartDistance와 FadeFallOff 말입니다
그럼 이 property(프로퍼티)들이 무엇을 할 수 있는지 보도록 하겠습니다
이 FadeStartDistance는 어디에서 페이드가 시작할지를 결정합니다
그러므로 지금은 카메라로 부터 500단위 떨어진 지점에서 시작됩니다
값을 1000으로 증가시키면 카메라로 부터 1000단위 떨어진 지점에서 시작됩니다
그러면 FadeFallOff는
무엇을 할까요
이 것은 완전히 하얗게
되기 시작할 길이를 제어합니다
이 값을 1000으로 증가시키면 그레이디언트가 생기는 것을 보실 수 있습니다
그러므로 페이드는 카메라로부터 1000 단위 떨어진 지점에서 시작되고 또 1000 단위 떨어진 지점에서
완전히 하얗게 됩니다
만약 값을 5000으로 올리면 더 많은 그레이디언트가, 더 많은 그레이스케일 영역이 생깁니다
이제 완전히 하얗게 되는 지점은 5000 단위 떨어진 곳이 됩니다
값을 100으로 내리면 날카로운 가장자리가 됩니다
그러므로 이 값은 실제로 빛과 그림자의 명암비를 제어한다고
이야기 할 수 있습니다
이 거리가, 이 값이 페이드가 완전히 하얀색이 되기 시작하는 거리를 결정한다는 것을 아실 수
있습니다
이 두 값으로, 두 거리로 많은 것을 할 수 있습니다
M_TilingBreak으로 돌아가서 이 최종 출력이 0에서 1사이의 값이 된다는 것을
알고 있고 Lerp 노드에서 사용하려면 Result를 Alpha socket(소켓)에 연결하면 됩니다
값이 검은색일 경우 socket(소켓) A로 출력하고
값이 하얀색일 경우 socket(소켓) B로 출력하는데 이를 이용해서 타일링을 깰 수
있습니다
예를 들어 값이 검은색이면 작은 texture(텍스처)가 되고
값이 흰색이면 더 큰 texture(텍스처)가 됩니다
이를 이용해서 간단하게 타일링을 깰 수 있는데 이 것이 오늘의 연습 과제가
될 것입니다 이번 섹션에서
여러분에게 연습 과제를 더 내드리기 시작할 것이고 과제는 점점 어려워질 것입니다
하지만 한 번에 성공하지 못하셔도 걱정하지 마십시오
언제든지 다시 돌아오셔서 해보시는 것을 제안 드립니다
연습 과제로 예시 머티리얼을 위한 테스트 폴더를 만드시고 제가
했던 것처럼
타일링을 깨는 예시 머티리얼을 만드시기 바랍니다
이 머티리얼에서는 다른 방법으로 타일링을 깰 것입니다
CameraDepthFade를 Lerp 노드의 Alpha 값으로 사용하시기 바랍니다 노드의 설명이
혼란스럽다는 것을 잘 알고 있습니다
두 함수 입력 중 하나는 실제로는 페이드가 시작하는 거리이며 다른 하나는 페이드가
완전히 하얀색이 되기 시작하는 거리 입니다
이렇게 기억하시길 바랍니다
이 것이 여러분이 이해하시기 더욱 쉬울 것 같습니다 그리고 두 texture(텍스처)를 Lerp 노드로 혼합하시기 바랍니다
CameraDepthFade 노드를 사용하면 가까이 있는 texture(텍스처)가 있을 것인데
이 텍스처는 작은 UV 스케일을 갖게 하시기 바랍니다
여러분이 여전히 어떻게 하는 지 기억하시고 계시기를 바랍니다
멀리 있는 것은
큰 UV 스케일을 갖게 하시기 바랍니다 이렇게 하면
타일링을 깨시는 데 도움이 되실 겁니다 이제 비디오를 멈추고 직접 해보시고 도움이 필요하시면
돌아오시기 바랍니다
어떠셨습니까
CameraDepthFate를 이용해서 두 texture(텍스처)를 잘 혼합하셨나요
어떻게 할 수 있는지 같이 보시겠습니다
M_TilingBreak을 더블 클릭해서 열고
Fade Offset이 FadeStartDistance가 될 것이고
Fade Length가 FadeFallOff가 될 것입니다
이 두 값들이 무슨 역할을 하는지 이해하실 수만 있다면 편하신 대로 이름을 정하셔도 됩니다
Result를 Alpha 값에 연결하면 socket(소켓) A가
가까운 texture(텍스처)가 될 것이므로
TextureSample 노드를 만들겠습니다 texture(텍스처)는 제 풀 texture(텍스처)를 뽑도록 하겠습니다
Megascans폴더로 가고 Surface폴더로 들어가서 T_Mossy_Grass를 고르고
이 아이콘을 눌러 선택합니다
됐습니다 texture(텍스처)를 뽑고 있고 이제 TextureCoordinate 노드를 사용하겠습니다
가까운 텍스처는 UV 스케일을 조절할 수 있는 파라미터가 있게 만들 것이므로
이 것을 socket(소켓) A에 연결하고 s키를 꾹 누르고 CloseUVScale이라고
하겠습니다 디폴트 값을 1로 주고 socket(소켓) B에 연결하고
UVs에 연결하고 이 것은 socket(소켓) A의 값이고 이 노드들을
복제하면
먼 texture(텍스처), 멀리 떨어진 texture(텍스처) 입니다
이 파라미터는 FarUVScale이라고 하겠습니다
texture(텍스처)가 멀리 떨어져 있으면 더 크게 할 것이므로
이 것을 socket(소켓) B에 연결하고 디폴트 값은 0.3을 주고
Base Color에 연결하겠습니다
이제 apply(적용)을 누르고 레벨로 돌아가면 material instance(머티리얼 인스터스)에 조절 가능한 두 값들이 생겼습니다
FadeFallOff는 2000으로 늘리고 FarUVScale은 0.1로
바꾸겠습니다
보시는 것처럼 CameraDepthFade를 이용해서 멀리 떨어진 texture(텍스처)는
크게 만들었고 CloseUVScale은
2.8로 바꾸겠습니다
거리의 값이 좀 큰 것 같습니다
FadeStartDistance를 800단위로 줄이고
FadeFallOff는 300으로 바꾸겠습니다
그러면 보시는 것처럼 이 방법으로 어느 정도 타일링을 깼습니다
이 창을
최소화 하고
좋습니다
이 것이 가장 직접적인 방법이고 가장 쉬운 방법이라고 할 수 있으나 보시는 것처럼 잘 동작하지는 않습니다
아주 높은 곳으로 가면 타일링이 여전히 존재하는 것이 보입니다
Landscape(랜드스케이프)에 가까이 가서 아래를 보면 타일링은 여전히 존재합니다
이 것이 타일링을 깨는 일반적인 경험에 의거한 방식입니다
mask(마스크)를 사용해서 texture(텍스처)의 크기를 다르게 조정할 수 있고
texture(텍스처)를 회전시킬 수도 있으며
이 것이 타일링을 꺠는 방법입니다
다른 방법들도 많이 있는데 각각 장단점이 있고 우리는
runtime virtual texture(런타임 버추얼 텍스처)를 사용할 것인데
runtime virtual texture(런타임 버추얼 텍스처)는 이 방법을 지원하지 않습니다
그러므로 다음 강의에서는 타일링을 깨는 더 나은 방법을 알아보겠습니다
이번 강의에서 CameraDepthFade를 사용하여 두 texture(텍스처)를 혼합하였고 mask(마스크)의 개념도
알아보았습니다
이제 우리는 mask(마스크)가 실제로는 0에서 1사이 범위의 값이라는 것을 압니다
Auto Landscape(자동 랜드스케이프)에서 작업할 때는 올바른 mask(마스크)를 찾거나 올바른 mask(마스크)를 만드는 것이
가장 중요하다는 것입니다
그리고 타일링을 깨는 데 UV의 변화를 이용했고
이는 CameraDepthFade의 거리를 통해
이루어졌습니다
좋습니다
Auto Landscape Material(자동 랜드스케이프 머티리얼)에 mask(마스크)를 사용하는 아주 좋은 시작입니다
다음 강의에서 뵙겠습니다