1 00:00:02.321 --> 00:00:03.221 실감 2 00:00:04.468 --> 00:00:09.067 실감 공통편 지형효과 제작 3 00:00:23.719 --> 00:00:25.840 안녕하세요 박현상 입니다 4 00:00:25.840 --> 00:00:28.760 이번 Shader VFX 강의에서는 5 00:00:28.760 --> 00:00:32.200 언리얼 머티리얼 에디터를 다루게 됩니다 6 00:00:32.200 --> 00:00:36.000 Shader와 VFX의 영역은 서로 떨어질 수 없는 7 00:00:36.000 --> 00:00:40.080 시각 효과를 위해서는 필수 요소라고 할 수 있습니다 8 00:00:40.080 --> 00:00:42.480 이번에 다루게 되는 수업 예제들은 9 00:00:42.480 --> 00:00:46.480 의도적으로 앞서 Unreal VFX 과정에서 했던 10 00:00:46.480 --> 00:00:48.720 내용과 반복 학습이 되도록 11 00:00:48.720 --> 00:00:50.880 연속되는 형태로 학습을 12 00:00:50.880 --> 00:00:54.459 효율적으로 이어나갈 수 있게 설계되었습니다 13 00:00:55.119 --> 00:00:59.520 보시는 분들에 따라서는 중복되는 느낌을 받으실 수 있겠지만 14 00:00:59.520 --> 00:01:05.619 동일한 데이터를 각기 다른 효과로 사용되는 방법에 집중하시길 바랍니다 15 00:01:06.239 --> 00:01:07.480 첫 번째 강의는 16 00:01:07.480 --> 00:01:12.440 메마른 땅에서 물이 차오르는 바닥을 묘사해 볼 겁니다 17 00:01:12.440 --> 00:01:15.199 우리가 젖어있다라는 표현을 18 00:01:15.199 --> 00:01:17.279 시각적인 표현에 대해서 19 00:01:17.279 --> 00:01:23.380 쉐이더 프로그래밍에서 어떻게 표현할 수 있는지를 알아볼 것이구요 20 00:01:23.380 --> 00:01:26.760 또한 메마른 땅에서 젖어있는 땅으로 21 00:01:26.760 --> 00:01:32.279 자연스럽게 밑에서부터 물이 차오르는 느낌을 표현하기 위해서 22 00:01:32.279 --> 00:01:36.720 어떠한 데이터들이 사용되고 응용될 수 있는지에 대해서도 23 00:01:36.720 --> 00:01:38.400 실습해 보겠습니다 24 00:01:38.402 --> 00:01:42.461 WetFloor 머티리얼 생성 25 00:01:42.461 --> 00:01:44.480 이번 강의를 시작하기에 앞서서 26 00:01:44.480 --> 00:01:48.239 어떠한 조건에서 프로젝트를 진행하는 지부터 설명을 하겠습니다 27 00:01:48.239 --> 00:01:51.519 우선은 언리얼버전은 5.4.4구요 28 00:01:51.519 --> 00:01:54.599 여기에서 프로젝트를 생성을 할 겁니다 29 00:01:54.599 --> 00:01:57.320 우선 에디터를 먼저 실행을 하고요 30 00:01:57.320 --> 00:01:59.959 이번 시간에는 머티리얼뿐만 아니라 31 00:01:59.959 --> 00:02:02.080 단순히 쉐이더를 작성한다 32 00:02:02.080 --> 00:02:04.360 내지는 이펙트를 만든다 뿐만 아니라 33 00:02:04.360 --> 00:02:09.000 쉐이더나 이펙트와 연계되서 어떻게 사용하는지 34 00:02:09.000 --> 00:02:11.960 이런 것들에 대한 내용들도 포함되어 있기 때문에 35 00:02:11.960 --> 00:02:16.520 기본적으로는 이 프로젝트의 GAMES 템플릿에서 36 00:02:16.520 --> 00:02:18.440 Third Person을 선택하고요 37 00:02:18.440 --> 00:02:24.119 BLUEPRINT의 Desktop,Maximum,Starter Content가 포함된 상태로 38 00:02:24.119 --> 00:02:29.960 SHADERnVFX라고 쉐이더를 대문자로 쓸게요 39 00:02:29.960 --> 00:02:34.360 SHADER와 VFX에 관한 프로젝트를 생성하겠습니다 40 00:02:34.360 --> 00:02:36.199 Create 버튼을 눌러줍니다 41 00:02:36.199 --> 00:02:38.199 프로젝트 생성이 완료가 되었습니다 42 00:02:38.199 --> 00:02:41.320 그럼 여기에서 첫번째 Content 폴더에다가 43 00:02:41.320 --> 00:02:42.800 폴더를 하나 만들어서 44 00:02:42.800 --> 00:02:46.320 WetFlow라고 예제의 이름을 지어 주겠습니다 45 00:02:46.320 --> 00:02:48.600 우선은 머티리얼을 먼저 생성하신 후에 46 00:02:48.600 --> 00:02:52.559 M_WetFloor 젖어있는 바닥이란 뜻이죠 47 00:02:52.559 --> 00:02:54.639 머티리얼을 열도록 하겠습니다 48 00:02:54.639 --> 00:02:56.360 여기에서 우리가 할 것은 49 00:02:56.360 --> 00:02:59.800 기본적으로 타일 맵을 응용하는 것과 함께 50 00:02:59.800 --> 00:03:04.600 컬러를 믹싱한다는 여러가지 개념들에 대해서 알아볼 건데요 51 00:03:04.600 --> 00:03:08.960 이것을 위해서 먼저 Texture Sample 노드를 생성하신 후에 52 00:03:08.960 --> 00:03:12.680 Cobblestone 텍스처를 우선 diffuse 53 00:03:12.680 --> 00:03:15.279 기본 색상만 가져오도록 하겠습니다 54 00:03:15.279 --> 00:03:18.559 이것을 베이스 컬러에다가 연결을 해볼건데요 55 00:03:18.559 --> 00:03:20.080 이렇게 평면적으로 봤을 때 56 00:03:20.080 --> 00:03:24.919 이미지가 가지고 있는 것을 그대로 우리가 볼 수가 있죠 57 00:03:24.919 --> 00:03:29.199 여기에서 우리가 흔히 쉐이더에서 가장 많이 사용하는 58 00:03:29.199 --> 00:03:31.759 Multiply적용해 볼 겁니다 59 00:03:31.759 --> 00:03:33.299 우리가 흔히 젖어있다 60 00:03:33.300 --> 00:03:35.040 물에 젖어있다고 하면 61 00:03:35.040 --> 00:03:39.759 이런 식으로 단순하게 색이 조금 진해진다는 인상을 받죠 62 00:03:39.759 --> 00:03:43.000 일반적으로 우리가 현실에서 보이는 63 00:03:43.000 --> 00:03:46.019 오브젝트들이 물에 젖었다고 하면 64 00:03:46.020 --> 00:03:48.000 보통 색이 진해집니다 65 00:03:48.000 --> 00:03:49.679 그 색이 진해지는 이유가 66 00:03:49.679 --> 00:03:54.160 우리가 이런 돌의 표면을 간단하게 단면으로 그려 보겠습니다 67 00:03:54.160 --> 00:03:54.960 바닥면이 있고 68 00:03:54.960 --> 00:03:59.000 여기에 돌들이 이런 식으로 이렇게 박혀 있는 형상으로 69 00:03:59.000 --> 00:04:00.240 이렇게 되어 있죠 70 00:04:00.240 --> 00:04:03.000 그리고 이 돌들의 표면을 보면 71 00:04:03.000 --> 00:04:07.440 굉장히 오돌도돌한 표면을 가진걸 볼 수가 있습니다 72 00:04:07.440 --> 00:04:11.359 그리고 이러한 오돌도돌한 표면은 빛이 부딪혔을 때 73 00:04:11.359 --> 00:04:14.960 표면에 부딪혔을 때 사방으로 분산이 되죠 74 00:04:14.960 --> 00:04:18.279 흔히 난반사가 일어난다고 얘기를 합니다 75 00:04:18.279 --> 00:04:22.480 이러한 난반사를 지칭하는 용어가 디퓨즈죠 76 00:04:22.480 --> 00:04:25.799 우리는 그 디퓨즈의 D를 따서 77 00:04:25.799 --> 00:04:29.760 여기 있는 Cobblestone_D 텍스처를 사용한 것이죠 78 00:04:29.760 --> 00:04:32.079 이름을 짓는 데 많이 사용을 합니다 79 00:04:32.079 --> 00:04:36.160 근데 여기에 파란색으로 그리도록 하겠습니다 80 00:04:36.160 --> 00:04:37.720 물이 젖게 되면 81 00:04:37.720 --> 00:04:41.119 여기 얇은 물의 층 같은 게 생기면서 82 00:04:41.119 --> 00:04:45.160 난반사를 상대적으로 적게 합니다 83 00:04:45.160 --> 00:04:49.399 대부분은 그대로 흡수시키거나 추가시키는 거죠 84 00:04:49.399 --> 00:04:54.000 그러다 보니 평소보다 반사되는 빛의 양이 줄어들다 보니까 85 00:04:54.000 --> 00:04:57.399 훨씬 어둡게 느끼는 겁니다 86 00:04:57.399 --> 00:05:01.860 원래대로면 이렇게 난반사된 빛들이 우리 눈에 들어와야 87 00:05:01.860 --> 00:05:03.720 우리가 색을 인지하는데 88 00:05:03.720 --> 00:05:06.119 들어오는 빛의 양이 적어지게 되면 89 00:05:06.119 --> 00:05:10.359 문자 그대로 빛이 줄어드니까 어두워지는 거죠 90 00:05:10.359 --> 00:05:13.440 이러한 원리에서 Multiply를 해주게 되면 91 00:05:13.440 --> 00:05:18.880 상대적으로 젖은 것 같다는 느낌의 텍스처를 볼 수가 있습니다 92 00:05:18.880 --> 00:05:23.000 Multiply를 해준다는 것을 조금만 풀어서 생각을 해보면 93 00:05:23.000 --> 00:05:28.720 우선은 임의의 값으로 Red, Green, Blue 채널에서 94 00:05:28.720 --> 00:05:34.200 각각의 값이 0.5, 0.2, 0.1 만큼 있다고 하겠습니다 95 00:05:34.200 --> 00:05:38.279 이것을 그대로 0.5, 0.2, 0.1로 96 00:05:38.279 --> 00:05:40.839 각각을 곱해 주게 되면 어떻게 될까요 97 00:05:40.839 --> 00:05:44.480 Red 채널의 결과는 0.25가 될 것이고 98 00:05:44.480 --> 00:05:47.440 Green 채널은 0.04 99 00:05:47.440 --> 00:05:53.799 그리고 Blue 채널은 0.01이 되면서 값이 줄어들게 되는데요 100 00:05:53.799 --> 00:05:56.359 이것을 이렇게 해석할 수도 있을 겁니다 101 00:05:56.359 --> 00:05:58.600 Red 채널의 값이 102 00:05:58.601 --> 00:06:00.081 원래 오리지널 값이 103 00:06:00.081 --> 00:06:03.160 이게 A의 값이라고 하고 B라고 할게요 104 00:06:03.160 --> 00:06:06.040 여기 A, B로 연결해 놨으니까 105 00:06:06.040 --> 00:06:08.519 그러면 A의 값이 0.5 106 00:06:08.520 --> 00:06:10.560 즉 50%다 107 00:06:10.560 --> 00:06:15.320 A, Green 채널의 값이 얼마가 됐든 동일한 것만큼 줄어드니까 108 00:06:15.320 --> 00:06:18.880 현재 이 계산상으로는 20%겠죠 109 00:06:18.880 --> 00:06:22.440 그리고 Blue 채널은 10%만 될 겁니다 110 00:06:22.440 --> 00:06:26.160 결과적으로 값이 줄어드는 폭이 낮으면 낮을수록 111 00:06:26.160 --> 00:06:29.519 훨씬 더 많이 줄어드는 효과가 나오게 됩니다 112 00:06:29.519 --> 00:06:34.160 원래대로면 Red, Green, Blue가 1, 1일 때가 White죠 113 00:06:34.160 --> 00:06:35.640 점점 어떻게 돼요 114 00:06:35.640 --> 00:06:37.519 0에 가까워지고 있죠 115 00:06:37.519 --> 00:06:41.920 0에 가까워진다는 얘기는 Black에 가까워지고 있다는 얘기입니다 116 00:06:41.920 --> 00:06:44.920 그런데 Red 채널은 조금 줄어들고 117 00:06:44.920 --> 00:06:48.559 Blue 채널은 많이 줄어들다 보니 어떤 일이 생기냐면 118 00:06:48.559 --> 00:06:54.079 이런 식으로 붉은색 돌들이 훨씬 더 진하게 느껴지게 됩니다 119 00:06:54.079 --> 00:06:57.679 색은 훨씬 채도가 올라간 것처럼 느껴지죠 120 00:06:57.679 --> 00:07:00.720 같은 맥락으로 만약에 Blue 채널의 값이 121 00:07:00.720 --> 00:07:05.000 Red, Green, Blue 중에 Blue 채널의 값이 가장 컸다면 122 00:07:05.000 --> 00:07:09.519 Blue 채널의 값이 훨씬 더 진해졌다는 느낌을 받으실 겁니다 123 00:07:09.519 --> 00:07:14.320 이게 우리가 흔히 사용하는 Multiply의 효과입니다 124 00:07:14.320 --> 00:07:18.640 그래서 때로는 흑백에 사용할 땐 또 다른 의미로 사용될 수 있지만 125 00:07:18.640 --> 00:07:22.160 컬러 값에 동일한 값을 Multiply를 해주게 되면 126 00:07:22.160 --> 00:07:23.760 제곱한 거랑 똑같죠 127 00:07:23.760 --> 00:07:26.399 그렇게 되면 색이 어둡고 128 00:07:26.399 --> 00:07:29.959 컬러가 상대적으로 진하다는 느낌을 받으면서 129 00:07:29.959 --> 00:07:33.760 마치 젖어있다는 인상을 받게 되는 겁니다 130 00:07:33.760 --> 00:07:36.539 이번에는 오리지널의 131 00:07:36.539 --> 00:07:39.119 쉽게 얘기해서 메마른 땅이라고 하겠습니다 132 00:07:39.119 --> 00:07:44.000 그래서 메마른 땅은 A라고 해서 Dry라고 적어 놓고요 133 00:07:44.000 --> 00:07:48.959 젖어있는 땅은 B라고 해서 Wet이라고 표시해 놓겠습니다 134 00:07:48.959 --> 00:07:51.600 여러분들도 헷갈리지 않으시겠죠 135 00:07:51.600 --> 00:07:56.559 이 두 가지가 공존하는 질감을 만들어 볼 겁니다 136 00:07:56.559 --> 00:07:59.799 우리는 부분적으로는 A도 보여줬다가 137 00:07:59.799 --> 00:08:01.239 젖어있는 B도 보여주는 138 00:08:01.239 --> 00:08:03.738 이 두 가지를 공존하는 걸 할 건데요 139 00:08:03.738 --> 00:08:06.000 우리가 이럴 때 많이 사용하는 게 140 00:08:06.000 --> 00:08:08.779 Linear Interpolate라고 하는 141 00:08:08.779 --> 00:08:13.679 흔히 줄여서 Lerp라고 많이 얘기를 하는 노드입니다 142 00:08:13.679 --> 00:08:16.819 여기에 A는 그대로 Dry 143 00:08:16.820 --> 00:08:20.460 B에는 젖어있는 Wet 이걸 넣어주고 144 00:08:20.460 --> 00:08:22.760 그대로 만약에 베이스 컬러에 넣는다면 145 00:08:22.760 --> 00:08:24.600 뭔가 크게 바뀌는 게 없죠 146 00:08:24.600 --> 00:08:28.679 여기에서 여러분들이 조금 더 이해가기 쉽게 147 00:08:28.679 --> 00:08:31.440 텍스처 하나를 더 불러오도록 하겠습니다 148 00:08:31.440 --> 00:08:34.960 우선 Texture Sample이라고 하나를 불러오고 149 00:08:34.960 --> 00:08:38.719 여기에서 Noise Texture를 하나 불러오겠습니다 150 00:08:38.719 --> 00:08:41.679 Noise_01이라고 이렇게 있네요 151 00:08:41.679 --> 00:08:43.400 이런 노이즈 텍스쳐가 있는데 152 00:08:43.400 --> 00:08:48.440 여기에서 이 Red, Green, Blue 어떤 걸 써도 흑백의 이미지니까 153 00:08:48.440 --> 00:08:50.919 Red, Green, Blue 값이 모두 다 동일해서 154 00:08:50.919 --> 00:08:55.479 가장 가까이 있는 Red 값을 우선 가지고 와 보겠습니다 155 00:08:55.479 --> 00:08:58.420 이렇게 보면 뭔가가 얼룩덜룩해 보이는데 156 00:08:58.420 --> 00:08:59.680 느낌이 잘 안 오죠 157 00:08:59.799 --> 00:09:04.679 그래서 노이즈 이미지의 Step 이라는 노드를 이용해서 158 00:09:04.679 --> 00:09:07.119 Red 값을 X 에다가 연결하고 159 00:09:07.119 --> 00:09:09.660 Y에 연결되어 있는 걸 Alt 를 눌러서 160 00:09:09.660 --> 00:09:12.439 Y 값을 연결된 걸 뺀 후에 161 00:09:12.440 --> 00:09:15.320 값은 0.5 로 입력하겠습니다 162 00:09:15.399 --> 00:09:18.840 그러면 0에서 1 까지 Black & White 에서 163 00:09:18.840 --> 00:09:24.000 지금 보시는 것처럼 중간에 그레이 톤을 0.5 보다 작으면 블랙으로 164 00:09:24.000 --> 00:09:27.440 0.5 보다 크다면 화이트로 해가지고 165 00:09:27.440 --> 00:09:29.680 이렇게 Black & White 166 00:09:29.681 --> 00:09:32.040 2분할된 이미지로 만들게 됩니다 167 00:09:32.260 --> 00:09:35.799 이것을 연결해 보면 이렇게 얼룩이 남아 있죠 168 00:09:35.799 --> 00:09:41.400 여기서 여러분들이 블랙의 성분을 더 많이 표현하고 싶다면 169 00:09:41.400 --> 00:09:44.719 0.3 정도로 값을 낮춰 주시면 170 00:09:44.719 --> 00:09:48.199 이런 식으로 30% 이하의 그레인은 블랙으로 171 00:09:48.199 --> 00:09:50.880 그 이상 되는 것은 화이트로 되게끔 하면 172 00:09:50.880 --> 00:09:52.520 면적이 조금 늘어나죠 173 00:09:52.520 --> 00:09:55.440 여기서 0.25 이런 식으로 하면 174 00:09:55.440 --> 00:09:58.960 블랙의 영역이 점점 늘어나는 걸 확인하실 수가 있습니다 175 00:09:58.960 --> 00:10:01.919 여러분들이 노이즈를 바꿔 보셔도 됩니다 176 00:10:01.919 --> 00:10:05.060 이러한 노이즈는 여러분들이 나중에 177 00:10:05.060 --> 00:10:09.080 펄린 마스크라던가 펄린 노이즈 이런 걸 통해서 178 00:10:09.080 --> 00:10:10.919 임의로 바꿔 보셔도 되고 179 00:10:10.919 --> 00:10:17.080 다만 바꾸실 때는 Step 값의 범위를 조절하실 필요가 있겠죠 180 00:10:17.080 --> 00:10:19.599 이런 식으로 바꾸시면 됩니다 181 00:10:19.599 --> 00:10:23.359 이렇게 Lerp를 이용해서 색상을 혼합해 봤는데요 182 00:10:23.359 --> 00:10:26.280 가장 단순하게 Lerp가 하는 일은 183 00:10:26.280 --> 00:10:29.400 이 알파에 따라서 블랙에는 A를 184 00:10:29.400 --> 00:10:33.080 화이트에는 B를 보충해서 표현하는 겁니다 185 00:10:33.080 --> 00:10:35.479 그래서 전체 색을 표현할 수 있는 186 00:10:35.479 --> 00:10:37.039 이 컬러를 담을 수 있는 187 00:10:37.039 --> 00:10:39.159 만약에 컵이 있다고 가정해 보면 188 00:10:39.159 --> 00:10:41.520 여기에다가 먼저 A를 189 00:10:41.521 --> 00:10:43.621 이렇게 A만큼을 쌓고 190 00:10:43.621 --> 00:10:45.000 이만큼이 비어 있죠 191 00:10:45.000 --> 00:10:50.200 비어 있는 이 영역에다가는 알아서 B를 보충하는 겁니다 192 00:10:50.200 --> 00:10:53.880 그래서 우리는 이것을 선형 보관이라고 얘기를 합니다 193 00:10:53.880 --> 00:10:56.799 0부터 1까지의 수치에 따라서 194 00:10:56.799 --> 00:10:59.880 그래서 이 알파 값을 잠시 연결을 빼고 195 00:10:59.880 --> 00:11:02.479 0.3으로 입력을 하면 196 00:11:02.479 --> 00:11:06.840 그리고 0으로 입력하면 A에 가까운 숫자가 나오죠 197 00:11:06.840 --> 00:11:10.840 그리고 이걸 1로 입력하면 B의 이미지가 나옵니다 198 00:11:10.840 --> 00:11:14.119 당연히 0.7과 같이 B에 가까운 숫자라면 199 00:11:14.119 --> 00:11:17.359 조금 더 B의 성분을 많이 섞겠죠 200 00:11:17.359 --> 00:11:20.960 그렇기 때문에 여러분들이 이 알파에 대한 값을 생각하실 때는 201 00:11:20.960 --> 00:11:25.080 B의 비율이라고 생각하셔도 크게 다르진 않습니다 202 00:11:25.080 --> 00:11:29.479 전체 중에 B가 몇 퍼센트 포함되어 있느냐 203 00:11:29.479 --> 00:11:33.359 그래서 0.7은 70%죠 204 00:11:33.359 --> 00:11:35.280 이것을 이미지화 시키면 205 00:11:35.280 --> 00:11:38.799 1은 화이트고 0은 블랙이니까 206 00:11:38.799 --> 00:11:42.400 그것을 단순히 단일 숫자값이 아닌 207 00:11:42.401 --> 00:11:45.362 이렇게 이미지화 시켜서 집어 넣게 되면 208 00:11:45.362 --> 00:11:49.779 이렇게 이미지의 블랙 영역, 화이트 영역에 따라서 209 00:11:49.779 --> 00:11:53.000 서로 다른 이미지를 보여주게 되는 겁니다 210 00:11:53.000 --> 00:11:58.039 그대로 Step의 값을 Alpha에 연결해 주도록 하겠습니다 211 00:11:58.039 --> 00:12:02.559 비슷한 맥락으로 이 Lerp를 그대로 Ctrl-C, Ctrl-V 해서 212 00:12:02.559 --> 00:12:04.400 알파 값은 유지한 상태로 213 00:12:04.400 --> 00:12:07.599 만약에 돌이 메마른 상태라면 214 00:12:07.599 --> 00:12:09.880 Roughness 값이 1이겠죠 215 00:12:09.880 --> 00:12:11.479 1, 매우 거친 상태 216 00:12:11.479 --> 00:12:15.479 이것은 구체로, 미리 보기 부분을 바꿔서 217 00:12:15.479 --> 00:12:18.479 빛의 쉐이딩을 보면서 설명드리겠습니다 218 00:12:18.479 --> 00:12:21.320 Roughness 값이 1이라는 얘기는 219 00:12:21.320 --> 00:12:24.159 상대적으로 빛을 많이 반사하지 않는 220 00:12:24.159 --> 00:12:26.320 굉장히 거친 질감이라는 얘기고 221 00:12:26.320 --> 00:12:29.200 Roughness값이 0이라는 얘기는 222 00:12:29.200 --> 00:12:35.179 아주 매끈매끈해서 주변을 반사시켜서 보일 수 있을 만큼 223 00:12:35.179 --> 00:12:38.479 매끈매끈한 재질이라는 뜻인데 224 00:12:38.479 --> 00:12:41.200 그래서 여기서 여러분들이 헷갈릴 수 있는데 225 00:12:41.200 --> 00:12:45.919 Roughness값 A는 메말라 있기 때문에 굉장히 드라이한 226 00:12:45.919 --> 00:12:49.320 한마디로 Roughness값이 1에 가까울 거고요 227 00:12:49.320 --> 00:12:54.199 반대로 젖어있는 땅이라면 Roughness값이 0인 228 00:12:54.199 --> 00:12:57.559 굉장히 매끈매끈한 상태일 겁니다 229 00:12:57.559 --> 00:13:00.599 이것을 그대로 기존의 알파를 그대로 사용해서 230 00:13:00.599 --> 00:13:02.359 Roughness에 연결을 해주면 231 00:13:02.359 --> 00:13:07.820 지금 보시는 것처럼 젖어있어서 색이 어두운 부분에만 232 00:13:07.820 --> 00:13:10.200 반사도가 굉장히 높아지면서 233 00:13:10.200 --> 00:13:12.219 이런 식으로 주변 환경을 234 00:13:12.219 --> 00:13:15.621 어두운 영역만 반사시키는 걸 확인하실 수가 있죠 235 00:13:15.621 --> 00:13:19.641 물이 차오르는 연출을 위한 효과 236 00:13:19.760 --> 00:13:25.060 이번에는 Cobble Texture가 가지고 있는 노멀맵을 가지고 오겠습니다 237 00:13:25.060 --> 00:13:28.319 Texture Samlpe 노드를 하나 만들어 주고요 238 00:13:28.599 --> 00:13:31.000 이 Texture Samlpe 노드에는 Cobble 239 00:13:31.000 --> 00:13:34.960 그리고 여기 있는 노멀맵을 가지고 올 겁니다 240 00:13:34.960 --> 00:13:36.800 기본 값만 연결한다면 241 00:13:36.801 --> 00:13:41.441 RGB를 Normal에 연결한다면 마치 입체감이 있는 것처럼 242 00:13:41.441 --> 00:13:43.160 이렇게 표현이 되겠죠 243 00:13:43.160 --> 00:13:46.039 지금 보시는 것처럼 멀리서 이렇게 보고 244 00:13:46.039 --> 00:13:49.520 만약에 L킬이랑 마우스 왼쪽 클릭을 같이 해서 245 00:13:49.520 --> 00:13:52.119 빛의 방향을 여러분들이 이렇게 바꿔보시면 246 00:13:52.119 --> 00:13:57.119 지금 보는 것처럼 돌이 마치 입체적으로 이루어진 것처럼 보이겠죠 247 00:13:57.119 --> 00:14:02.080 여기서 여러분들에게 조금 재밌는 설정을 하나 부여를 해 보겠습니다 248 00:14:02.080 --> 00:14:05.400 우선 물이 아래에서부터 위로 249 00:14:05.400 --> 00:14:08.700 서서히 차오른다고 한 번 생각을 해 보겠습니다 250 00:14:08.700 --> 00:14:11.320 앞서서 돌의 단면을 다시 한 번 그려보면 251 00:14:11.320 --> 00:14:17.479 이렇게 평평한 바닥에 자갈들이 깔려 있다고 가정을 하고요 252 00:14:17.479 --> 00:14:21.839 그리고 여기에 물이 서서히 낮은 곳에서부터 253 00:14:21.839 --> 00:14:24.960 이 위에까지 차올랐다고 가정을 해보겠습니다 254 00:14:24.960 --> 00:14:29.199 낮았을 때, 중간 단계, 높았을 때 이런 식으로 255 00:14:29.479 --> 00:14:33.000 그러면은 물론 물의 속성을 조금 더 정밀하게 표현하려면 256 00:14:33.000 --> 00:14:35.799 여러 가지 복잡한 계산이 따르겠지만 257 00:14:35.799 --> 00:14:40.799 단순히 빛이 반사되거나 투과되는 정도를 따져봤을 때 258 00:14:40.799 --> 00:14:44.760 물은 상대적으로 반사를 잘 시키는 재질 중에 하나죠 259 00:14:44.760 --> 00:14:47.100 물론 각도에 따라 좀 달라지긴 합니다만 260 00:14:47.280 --> 00:14:49.540 이런 식으로 빛이 오면 261 00:14:49.540 --> 00:14:52.708 물은 기본적으로 정반사 시킨다고 하죠 262 00:14:52.760 --> 00:14:56.159 들어온 방향 그대로 반사를 시키죠 263 00:14:56.159 --> 00:15:02.159 그래서 원래 있던 표면보다는 조금 더 높은 위치에서 반사를 시키게 될 겁니다 264 00:15:02.159 --> 00:15:05.400 마찬가지 맥락으로 물이 조금 더 차올랐다면 265 00:15:05.400 --> 00:15:12.159 마치 표면이 여기 있는 주황색 위치가 표면으로 인식이 될 거고요 266 00:15:12.159 --> 00:15:14.420 물이 더 차올랐다면 267 00:15:14.420 --> 00:15:16.400 당연히 더 차오른 만큼 이렇게 268 00:15:16.400 --> 00:15:19.720 그리고 어느 순간부터는 물이 269 00:15:19.720 --> 00:15:24.200 돌 위에까지 가득 차서 평평한 상태가 될 겁니다 270 00:15:24.200 --> 00:15:28.919 그래서 어느 순간부터는 더 이상 빛이 돌에 부딪치지 않고 271 00:15:28.919 --> 00:15:32.619 물 표면 위에서 그냥 바로 반사가 일어나서 272 00:15:32.619 --> 00:15:36.919 이런 식으로 입체감이 거의 안 느껴지다시피 하게끔 273 00:15:36.919 --> 00:15:43.080 노멀 맵이 이런 식으로 서로 다르게 작동하게 될건데요 274 00:15:43.080 --> 00:15:45.179 이런 효과를 만들기 위해서는 275 00:15:45.179 --> 00:15:49.239 우리가 단순히 노멀 맵을 한 장만 쓰는 게 아니고 276 00:15:49.239 --> 00:15:53.000 노멀의 효과를 좀 더 믹싱을 해 줘야 됩니다 277 00:15:53.000 --> 00:15:54.519 섞어 줘야 되는 거죠 278 00:15:54.739 --> 00:15:56.820 위에 이렇게 섞어 줬던 것처럼 279 00:15:56.820 --> 00:16:00.959 그래서 우선 평평한 노멀을 만들어 보겠습니다 280 00:16:01.159 --> 00:16:03.599 평평한 노멀부터 만들어 보겠습니다 281 00:16:03.599 --> 00:16:06.159 일반적으로 노멀 맵이라고 하는 건 282 00:16:06.159 --> 00:16:11.359 면의 기울기 정보만 나타낸 것이기 때문에 높낮이 값은 없습니다 283 00:16:11.359 --> 00:16:13.200 기울기 값만 있기 때문에 284 00:16:13.200 --> 00:16:16.880 그래서 Constant3Vector를 이용해서 285 00:16:16.880 --> 00:16:20.359 블루 채널의 1이라는 값을 입력해 주겠습니다 286 00:16:20.359 --> 00:16:25.200 실제로 Vector3의 값이 x, y, 0이고 287 00:16:25.200 --> 00:16:30.239 z만 1인 것은 실제 노멀 값의 가장 기본 값입니다 288 00:16:30.239 --> 00:16:32.719 이런 식으로 노멀의 가장 기본 값 289 00:16:32.719 --> 00:16:35.760 그래서 우리가 이 표면이 있다고 하면 290 00:16:35.760 --> 00:16:38.119 주황색의 표면이 있다라고 하면 291 00:16:38.119 --> 00:16:41.579 완전히 평평한 상태의 노멀 값은 292 00:16:41.579 --> 00:16:44.440 블루가 1인 상황입니다 293 00:16:44.440 --> 00:16:48.119 이 Vector의 길이는 기본적으로 단위 유닛을 사용하는 294 00:16:48.119 --> 00:16:50.320 1 유닛짜리 Vector겠죠 295 00:16:50.320 --> 00:16:55.679 여기에서 만약에 면이 어느 방향으로든 기울어졌다면 296 00:16:55.679 --> 00:16:58.159 블루의 성분은 살짝 줄어들고 297 00:16:58.159 --> 00:17:01.200 x, y의 성분이 늘어나면서 298 00:17:01.200 --> 00:17:03.840 기울어진 정도의 Vector의 길이가 늘어나면서 299 00:17:03.840 --> 00:17:06.379 이런 식으로 기울어졌다는 300 00:17:06.379 --> 00:17:09.160 면에는 여전히 수직이겠죠 301 00:17:09.160 --> 00:17:11.839 이러한 Vector의 크기가 나오게 될 겁니다 302 00:17:11.839 --> 00:17:13.800 당연히 길이는 1이고요 303 00:17:13.800 --> 00:17:16.000 노멀 맵이라고 하는 건 기본적으로 304 00:17:16.000 --> 00:17:19.800 블루가 1인 상태에서 블루 값을 낮추면서 305 00:17:19.800 --> 00:17:21.359 레드든 그린이든 306 00:17:21.360 --> 00:17:24.149 레드에는 좌우의 기울기 307 00:17:24.149 --> 00:17:29.359 그린에는 위, 아래의 기울기를 묘사를 해서 308 00:17:29.359 --> 00:17:32.599 마치 입체적인 것처럼 나타내죠 309 00:17:32.599 --> 00:17:37.359 그래서 결과적으로는 기울어진 면이라고 하는 것은 310 00:17:37.359 --> 00:17:42.520 상대적으로 왼쪽처럼 조금 더 알록달록한 형태를 띄게 될 거고요 311 00:17:42.520 --> 00:17:48.479 평평하다는 것은 단일의 블루 값을 가진 이미지를 보여주게 될 겁니다 312 00:17:48.479 --> 00:17:51.060 이제는 원래 Cobblestone이 갖고 있는 313 00:17:51.061 --> 00:17:54.171 노멀 맵을 Dry한 상태로 314 00:17:54.171 --> 00:17:59.159 그리고 우리가 임의로 만들어 준 파란색 Vector를 B에 315 00:17:59.159 --> 00:18:01.320 젖어있는 상태로 정하고요 316 00:18:01.320 --> 00:18:04.160 이 두 가지를 믹싱을 해 보겠습니다 317 00:18:04.160 --> 00:18:07.560 노멀 맵을 믹싱할 때는 여러분들이 하나 주의하셔야 될 게 318 00:18:07.560 --> 00:18:12.760 숫자가 아닌 기울기로 생각하시는 게 조금 더 이해하시기가 편합니다 319 00:18:12.760 --> 00:18:13.839 무슨 얘기냐면 320 00:18:13.839 --> 00:18:16.719 기본적으로 이 안에 담겨 있는 데이터들은 321 00:18:16.719 --> 00:18:19.359 원래 수직으로 뻗어 올라간 것들은 322 00:18:19.359 --> 00:18:22.079 기울어져서 뽑아 올라간 것들은 323 00:18:22.079 --> 00:18:25.160 결국에는 기울기를 나타내고 있는데요 324 00:18:25.160 --> 00:18:29.839 그래서 3D 폴리곤으로 이 기울기를 표현하려고 하면 325 00:18:29.839 --> 00:18:34.040 원래는 굉장히 많은 수의 Vertex들을 이용해 가지고 326 00:18:34.040 --> 00:18:40.280 점점점 이렇게 찍어 가지고 연결해서 표면을 묘사해 줘야겠죠 327 00:18:40.280 --> 00:18:44.459 하지만 우리가 현재 사용하고 있는 기본 메시들은 328 00:18:44.459 --> 00:18:46.560 평면 메시를 기준으로 볼게요 329 00:18:46.560 --> 00:18:51.239 기본 메시들은 굉장히 평평한 상태의 메시입니다 330 00:18:51.239 --> 00:18:55.559 그래서 각각의 기울어진 정보들을 전부 다 이런 식으로 331 00:18:55.799 --> 00:18:59.520 픽셀에다가 Vector 값을 저장을 해가지고 332 00:18:59.520 --> 00:19:03.560 이런 식으로 이미지화 시켜서 만든 게 노멀 맵이거든요 333 00:19:03.560 --> 00:19:08.800 그래서 현재 우리는 텍스처를 이용한 RGB 데이터를 이용하고 있지만 334 00:19:08.800 --> 00:19:11.719 현재 좌표 값으로 쓰이고 있다 335 00:19:11.719 --> 00:19:17.380 좌표는 X, Y, Z로 이루어진 좌표 값으로 쓰이고 있다고 336 00:19:17.380 --> 00:19:19.047 이해하고 계시면 됩니다 337 00:19:19.047 --> 00:19:22.900 일반적인 노멀 맵에서의 믹싱은 좌표값 중에 338 00:19:22.900 --> 00:19:25.199 Red채널 좌우의 기울기 339 00:19:25.199 --> 00:19:27.879 Green채널 위아래의 기울기 340 00:19:27.879 --> 00:19:29.420 평면을 기준으로 했을 때 341 00:19:29.420 --> 00:19:32.359 이런 기울기 값에 대한 정보를 가지고 있고 342 00:19:32.359 --> 00:19:35.319 Blue채널은 통상적으로 쓰이지는 않습니다 343 00:19:35.319 --> 00:19:39.360 실제 노멀 맵을 Shader 단에서 계산할 때 쓰이지는 않지만 344 00:19:39.360 --> 00:19:43.239 현재 저장되어 있는 건 Vector 데이터를 기준으로 하기 때문에 345 00:19:43.239 --> 00:19:46.640 이 Vector의 길이를 1로 만들기 위해서 346 00:19:46.640 --> 00:19:48.160 Red그림만 가지고는 안 돼서 347 00:19:48.160 --> 00:19:52.439 블루에는 일반적으로 나머지 길이를 1로 만들기 위한 348 00:19:52.439 --> 00:19:56.359 나머지 Vector 값이 블루 채널에 들어가 있게 되는데요 349 00:19:56.359 --> 00:19:58.880 우리가 표현하고자 하는 대상은 350 00:19:58.880 --> 00:20:02.160 물이 서서히 높게 차오르기는 하지만 351 00:20:02.160 --> 00:20:05.479 실제 높이가 변하는 건 아닙니다 352 00:20:05.479 --> 00:20:09.040 평면 상에서 이렇게 기울기 값이 있던 것을 353 00:20:09.040 --> 00:20:11.439 물이 차올랐을 때의 Vector 값처럼 354 00:20:11.439 --> 00:20:13.160 이렇게 기울어져 있는 것을 355 00:20:13.161 --> 00:20:18.358 서서히 면에 수직이 되게끔 세우는 방향 쪽으로 흘러가게 될 겁니다 356 00:20:18.479 --> 00:20:21.479 그러다 보니 현재 우리에게 필요한 값은 357 00:20:21.479 --> 00:20:26.800 기울어진 값들에 대해서 Red Green 채널이 되겠죠 358 00:20:26.800 --> 00:20:29.239 기울어진 값들에 대한 정보만 담고 있는건 359 00:20:29.239 --> 00:20:34.839 이 정보에 대한 것만 믹싱을 해서 표현을 하는 것이 일반적입니다 360 00:20:34.839 --> 00:20:39.959 그래서 Red,Green,Blue에서 Red Green 값만 가지고 올 수 있게 361 00:20:39.959 --> 00:20:43.640 Component Mask라고 검색을 해보시면 362 00:20:43.640 --> 00:20:45.600 Component Mask가 나오고 363 00:20:45.600 --> 00:20:51.199 기본적으로 Red,Green 값만 뽑아올 수 있게끔 활성화 되어 있죠 364 00:20:51.199 --> 00:20:54.920 실제로 리얼타임 쉐이딩에서 365 00:20:54.920 --> 00:20:58.359 굉장히 많이 Red,Green값만 갖고 오는 경우들이 있어서 366 00:20:58.359 --> 00:21:01.239 이게 기본 값으로 설정이 되어 있는 겁니다 367 00:21:01.239 --> 00:21:03.760 이것을 두 가지 벡터 모두에게 368 00:21:03.760 --> 00:21:07.400 Red,Green값만 가지고 올 수 있게끔 해주고요 369 00:21:07.400 --> 00:21:11.479 이것을 가장 단순하게 섞는 방법 중에는 370 00:21:11.479 --> 00:21:13.359 Multiply가 있습니다 371 00:21:13.359 --> 00:21:14.560 곱해 주는 거죠 372 00:21:14.560 --> 00:21:19.180 하지만 지금 우리가 갖고 있는 Vector 같은 경우에는 0.0.0 이기 때문에 373 00:21:19.180 --> 00:21:21.479 사실상 곱해 주는 것은 의미는 없습니다 374 00:21:21.479 --> 00:21:25.199 만약에 이걸 여러분들이 곱한다고 하면 375 00:21:25.199 --> 00:21:27.760 여기 있는 기본 노멀에다가 376 00:21:27.760 --> 00:21:31.479 자잘자잘한 이런 질감 같은 것들을 섞어 주기 위해서 377 00:21:31.479 --> 00:21:35.280 0.0.0 벡터 대신에 이것을 약간 옆으로 치우겠습니다 378 00:21:35.280 --> 00:21:39.479 이것의 효과를 실제로 언리얼에서 어떻게 믹싱이 되는지 379 00:21:39.479 --> 00:21:41.800 결과를 보여드리기 위한 거니까 380 00:21:41.800 --> 00:21:43.520 Multiply를 하고요 381 00:21:43.520 --> 00:21:46.640 나중에 Append Vector를 해 가지고 382 00:21:46.640 --> 00:21:49.640 현재 Red,Green 성분만 있으니까 383 00:21:49.640 --> 00:21:51.680 이것은 Vector2겠죠 384 00:21:51.680 --> 00:21:54.800 Multiply된 결과도 Vector2입니다 385 00:21:54.820 --> 00:21:56.581 그런데 우리가 노멀 맵에는 386 00:21:56.581 --> 00:22:00.316 X, Y, Z로 된 Vector3가 필요하기 때문에 387 00:22:00.316 --> 00:22:01.616 여기에서 Blue값을 388 00:22:01.616 --> 00:22:04.720 오리지널 데이터를 가지고 오게 되는 겁니다 389 00:22:04.720 --> 00:22:06.359 그래서 Blue값을 가지고 오고 390 00:22:06.359 --> 00:22:08.119 여기에 Multiply 되거나 391 00:22:08.119 --> 00:22:11.439 혹은 Add 되거나 했을 때 392 00:22:11.439 --> 00:22:15.239 이건 섞어 주는 방식들이 여러 가지 공식들이 있습니다 393 00:22:15.239 --> 00:22:17.280 Add 가 되건, Multiply가 되건 394 00:22:17.280 --> 00:22:19.880 이 두 개의 값이 섞이게 되는 거고 395 00:22:19.880 --> 00:22:22.100 거기에 Bue성분을 섞게 되면 396 00:22:22.100 --> 00:22:27.119 길이가 1보다 줄어들거나 커지거나 할 수가 있기 때문에 397 00:22:27.119 --> 00:22:30.359 여기에서 노멀라이즈를 해 가지고 398 00:22:30.359 --> 00:22:34.640 길이를 1로 정리를 해주는 과정을 거쳐야 됩니다 399 00:22:34.640 --> 00:22:38.079 이렇게 정리가 된 Vector를 노멀에 끼워 넣으면 400 00:22:38.079 --> 00:22:41.880 이런 식으로 기본 질감 위에 더 디테일한 401 00:22:41.880 --> 00:22:43.159 자글자글한 402 00:22:43.160 --> 00:22:46.920 돌의 아래쪽에 집어넣은 돌의 느낌이 403 00:22:46.920 --> 00:22:49.199 추가된 것을 확인할 수가 있습니다 404 00:22:49.199 --> 00:22:52.160 이런 식으로 표면이 상당히 다르죠 405 00:22:52.160 --> 00:22:55.160 그냥 노멀만 꼈을 때랑 한 번 비교해 보겠습니다 406 00:22:55.160 --> 00:22:58.520 이렇게 매끈했던 돌에서 자글자글한 돌로 바뀌죠 407 00:22:58.520 --> 00:23:01.560 이런 식으로 일반적으로 믹싱을 합니다 408 00:23:01.560 --> 00:23:04.439 그래서 경우에 따라서는 Add를 써 가지고 409 00:23:04.439 --> 00:23:06.660 더 강하게 표현해 줄 수도 있고요 410 00:23:06.660 --> 00:23:09.419 이 베이스로 쌓는 것들을 보통 411 00:23:09.419 --> 00:23:12.520 형태 노멀 혹은 베이스 노멀이라고 하고 412 00:23:12.520 --> 00:23:16.400 베이스 혹은 기본 형태를 가지고 있다고 하고 413 00:23:16.400 --> 00:23:20.680 추가로 섞이는 것들은 디테일 노멀이라고 많이 표현을 합니다 414 00:23:20.680 --> 00:23:23.959 베이스에다가 디테일을 얹는 구조인 거죠 415 00:23:23.959 --> 00:23:26.800 그래서 이 베이스와 디테일의 차이는 416 00:23:26.800 --> 00:23:29.719 Blue채널의 값을 어디에서 갖고 오느냐 417 00:23:29.719 --> 00:23:32.760 여기에 따라서 바뀐다고 보시면 됩니다 418 00:23:32.760 --> 00:23:36.920 이런 식으로 일반적으로는 이미지와 이미지끼리 섞어 주는데 419 00:23:36.920 --> 00:23:39.800 현재 우리가 만약에 하게 된다면 420 00:23:39.800 --> 00:23:42.040 Multiply를 하면 0이기 때문에 421 00:23:42.040 --> 00:23:43.920 Multiply를 하는 의미가 없죠 422 00:23:43.920 --> 00:23:49.400 그래서 만약에 기본 Vector값을 가지고 활용을 한다면 423 00:23:49.400 --> 00:23:52.199 Add를 시켜 주는 게 훨씬 더 맞을 겁니다 424 00:23:52.199 --> 00:23:56.800 혹은 아예 처음부터 Component Mask에서 425 00:23:56.800 --> 00:24:00.500 애초부터 Lerp를 시켜 버리는 거죠 426 00:24:00.500 --> 00:24:05.600 그래서 컬러를 믹싱 할 때는 실제로 가장 많이 쓰이는 노드들이 427 00:24:05.600 --> 00:24:07.839 바로 이 Multiply 428 00:24:07.839 --> 00:24:09.439 가장 빈도가 높고요 429 00:24:09.439 --> 00:24:10.839 그 다음에 Add 430 00:24:10.840 --> 00:24:13.150 마지막으로 Lerp가 됩니다 431 00:24:13.150 --> 00:24:17.520 그 중에서도 우리는 이 Lerp에 조금 더 집중해서 표현을 하는 거고요 432 00:24:17.520 --> 00:24:20.359 여기에서 Alpha값만 가지고 와서 433 00:24:20.359 --> 00:24:23.560 Append Vector의 A에 다시 넣어 줍니다 434 00:24:23.560 --> 00:24:25.199 다시 한 번 말씀드리지만 435 00:24:25.199 --> 00:24:29.520 이 Lerp가 될 때까지 혹은 Multiply든 Add가 될 때까지는 436 00:24:29.520 --> 00:24:32.640 기본적으로 Vertor2의 상태다 437 00:24:32.640 --> 00:24:35.839 그리고 Append에서 Vertor3로 만들어서 438 00:24:35.839 --> 00:24:41.479 길이를 1로 만드는 단위 Vertor로 만드는 과정을 거치게 된다 439 00:24:41.479 --> 00:24:44.640 여기까지 여러분들이 기억해 두시면 됩니다 440 00:24:44.640 --> 00:24:50.079 이제 우리가 믹싱이 되는 결과를 눈으로 보려고 하는 건데 441 00:24:50.079 --> 00:24:53.280 여기에서 Lerp에 들어가는 값 자체를 442 00:24:53.280 --> 00:24:58.359 우리가 계속해서 0.1, 0.2 이런 식으로 하면 443 00:24:58.359 --> 00:25:00.760 잠깐 잠깐 체크무늬가 나오면서 444 00:25:00.760 --> 00:25:04.760 바로바로 눈으로 확인하기가 힘들어지죠 445 00:25:04.760 --> 00:25:08.040 그래서 여러분들이 446 00:25:08.040 --> 00:25:12.119 값이 스무스하게 바뀌는 것들을 확인하고 싶으시다면 447 00:25:12.119 --> 00:25:14.800 이런 것들을 머티리얼에서 확인하지 마시고 448 00:25:14.800 --> 00:25:18.359 머티리얼 인스턴스를 만들어서 확인하시는 게 좋은데 449 00:25:18.359 --> 00:25:23.520 여기에다가 Scalar Parameter라는 노드를 하나 만들어 가지고요 450 00:25:23.520 --> 00:25:27.040 이 Parameter의 이름은 LerpVal라고 451 00:25:27.040 --> 00:25:29.160 이렇게 간단하게만 짓겠습니다 452 00:25:29.160 --> 00:25:31.400 기본 값이 0이라고 되어 있으면 453 00:25:31.400 --> 00:25:35.119 0 이하는 Black, 0 이상은 White니까 454 00:25:35.119 --> 00:25:37.760 전부 다 White겠죠, 0 이상인 값 455 00:25:37.760 --> 00:25:40.359 여긴 어쨌든 어떠한 데이터든 들어가 있으니까 456 00:25:40.359 --> 00:25:43.719 그래서 기본 값을 일단 0.5로 두고요 457 00:25:43.719 --> 00:25:44.959 Save를 합니다 458 00:25:44.959 --> 00:25:48.119 Apply and Save를 먼저 눌러 주시고 459 00:25:48.119 --> 00:25:50.160 컨텐츠 브라우저 창으로 가서 460 00:25:50.160 --> 00:25:52.319 이 WetFloor을 선택한 다음에 461 00:25:52.319 --> 00:25:55.040 WetFloor 오른쪽 클릭해 가지고 462 00:25:55.040 --> 00:25:58.040 Material Instance를 생성해 줍니다 463 00:25:58.040 --> 00:26:00.359 더블 클릭해서 열도록 하겠습니다 464 00:26:00.359 --> 00:26:05.479 이런 식으로 기본 Step값이 0.5인 상태에서 465 00:26:05.479 --> 00:26:08.479 적용이 되어 있는 머티리얼을 보실 수가 있는데요 466 00:26:08.479 --> 00:26:12.899 여기 글로벌 Scalar Parameter 항목에서 열어 467 00:26:12.899 --> 00:26:17.000 LerpValue를 체크해 주시고 값을 바꿔보시면 468 00:26:17.000 --> 00:26:21.079 이제는 자연스럽게 연속적으로 값이 바뀌면서 469 00:26:21.079 --> 00:26:25.820 어떻게 적용되는지를 쉽게 눈으로 보실 수가 있습니다 470 00:26:25.960 --> 00:26:28.960 변화되는 것이 지금 보시는 것처럼 471 00:26:28.960 --> 00:26:33.040 0에서부터 1까지로 서서히 바뀌는 것이 보이죠 472 00:26:33.040 --> 00:26:37.020 이런 식으로 여러분들이 연속되는 결과물을 보고 싶다면 473 00:26:37.020 --> 00:26:38.660 변화들을 보고 싶다면 474 00:26:38.660 --> 00:26:40.732 머티리얼 상태에서 바꾸실 게 아니고 475 00:26:40.732 --> 00:26:43.599 이런 식의 머티리얼 인스턴스를 하나 만들어서 476 00:26:43.599 --> 00:26:46.680 값을 변화시키면서 체크해 보셔야 되고 477 00:26:46.680 --> 00:26:49.760 기본적으로 여러분들이 머티리얼과 478 00:26:49.760 --> 00:26:53.580 머티리얼 인스턴스의 관계에 대해서 아셔야 되는데요 479 00:26:53.800 --> 00:26:57.280 머티리얼이라고 하는 건 다른 프로그램을 기준으로 하자면 480 00:26:57.280 --> 00:26:59.680 사실 셰이더에 가깝습니다 481 00:26:59.680 --> 00:27:04.319 색을 어떻게 표현할지 프로그래밍하는 셰이더에 가깝고요 482 00:27:04.319 --> 00:27:08.880 그리고 셰이더를 바탕으로 만들어진 머티리얼을 483 00:27:08.880 --> 00:27:12.560 머티리얼 인스턴스라고 생각하시는 게 조금 더 484 00:27:12.560 --> 00:27:16.079 여러분들이 이 값의 변화를 바꿔가면서 확인하는 게 485 00:27:16.079 --> 00:27:17.494 이해가 되실 텐데요 486 00:27:17.494 --> 00:27:20.680 셰이더라는 걸 계속해서 프로그래밍을 하면 487 00:27:20.680 --> 00:27:24.239 결국에는 컴퓨터는 이걸 인식하기 위해서 488 00:27:24.239 --> 00:27:26.880 컴파일이라는 과정을 거치게 됩니다 489 00:27:26.880 --> 00:27:30.119 그래서 우리가 숫자를 조금만 바꾸더라도 490 00:27:30.119 --> 00:27:32.100 컴파일을 다시 걸어줘야 되고 491 00:27:32.100 --> 00:27:33.160 다시 걸어줘야 되고 492 00:27:33.160 --> 00:27:36.820 그러다 보니까 값이 연속해서 보이지 않는 거죠 493 00:27:36.820 --> 00:27:39.839 반면에 머티리얼 인스턴스를 만들었다는 얘기는 494 00:27:39.839 --> 00:27:45.280 이미 우리가 짜놓은 머티리얼이 컴파일이 전부 다 끝났다 495 00:27:45.280 --> 00:27:48.000 끝났기 때문에 우리는 계속해서 496 00:27:48.000 --> 00:27:51.680 결과값만 바로바로 업데이트하면 되기 때문에 497 00:27:51.680 --> 00:27:54.160 셰이더 컴파일하는 과정이 생략되면서 498 00:27:54.160 --> 00:27:58.439 머티리얼 인스턴스는 결과값을 바로바로 볼 수 있는 것이죠 499 00:27:58.439 --> 00:28:04.719 실제로 셰이더 컴파일하는 과정 중에 컴퓨터가 굉장히 느려질 수가 있는데요 500 00:28:04.719 --> 00:28:08.000 여러분들의 컴퓨터가 고사양이 아니라고 한다면 501 00:28:08.000 --> 00:28:11.680 이것보다 조금만 더 복잡한 머티리얼을 짜시려고 하면 502 00:28:11.680 --> 00:28:15.079 Parameter 하나 바꾸고 갑자기 1분 정도 기다리거나 503 00:28:15.079 --> 00:28:16.959 한 2분 3분 기다리거나 504 00:28:16.959 --> 00:28:18.959 이런 일들이 발생을 합니다 505 00:28:18.959 --> 00:28:25.040 현재 제가 사용하는 컴퓨터는 i9-3080을 사용하고 있습니다 506 00:28:25.040 --> 00:28:26.160 64GB의 컴퓨터입니다 507 00:28:26.160 --> 00:28:32.479 일반적으로는 그래픽카드가 고성능일수록 컴파일 과정이 굉장히 짧아져서 508 00:28:32.479 --> 00:28:37.040 머티리얼상으로도 값의 변화를 바로 확인할 수가 있는 편인데요 509 00:28:37.040 --> 00:28:39.400 그래도 방금 전에 확인하신 것처럼 510 00:28:39.400 --> 00:28:42.340 머티리얼 에디터 상에서 값을 바꾸게 되면 511 00:28:42.340 --> 00:28:45.959 약간의 체크무늬 패턴이 보이면서 512 00:28:45.959 --> 00:28:48.640 바로 연속해서 보기는 좀 어려웠죠 513 00:28:48.640 --> 00:28:53.119 그래서 이런 식으로 여러분들이 가능하다면 514 00:28:53.119 --> 00:28:54.880 중간중간 값을 체크하실 때 515 00:28:54.880 --> 00:28:59.479 표현이 제대로 올바르게 믹싱이 되고 있는지 아닌지를 보실 때는 516 00:28:59.479 --> 00:29:02.760 머티리얼 인스턴스를 사용해 주시는 것이 좋습니다 517 00:29:02.760 --> 00:29:07.199 이제 평면으로 봐서 노멀 맵의 변화도 한 번 보겠습니다 518 00:29:07.739 --> 00:29:10.520 지금은 반사되는 이미지가 많은 상태죠 519 00:29:10.520 --> 00:29:13.959 그래서 이 Parameter 값을 높이게 되면 520 00:29:13.959 --> 00:29:19.439 평평할 때 L 누르고 왼쪽 클릭해서 빛의 변화를 보게 되면 521 00:29:19.439 --> 00:29:21.079 빛이 굉장히 평면적으로 522 00:29:21.079 --> 00:29:24.040 이렇게 하이라이트 되는 부분을 보면 523 00:29:24.040 --> 00:29:26.800 평면적으로 흘러간다는 걸 알 수가 있습니다 524 00:29:26.800 --> 00:29:29.280 반면에 값을 조금 높여서 525 00:29:29.280 --> 00:29:31.560 돌이 좀 드러나게 된다면 526 00:29:31.560 --> 00:29:33.880 상대적으로 이 빛이 흘러가는 부분이 527 00:29:33.880 --> 00:29:37.640 Roughness 때문에 약해지면서 가려지죠 528 00:29:37.640 --> 00:29:40.640 그리고 실제로 밝고 어두운 영역이 529 00:29:40.640 --> 00:29:45.739 이렇게 음영이 더 또렷해지는 것을 확인하실 수가 있습니다 530 00:29:45.959 --> 00:29:49.000 그래서 물이 더 내려간다면 531 00:29:49.000 --> 00:29:55.239 이런 식으로 음영 자체가 훨씬 더 또렷해지는 것을 확인하실 수가 있죠 532 00:29:55.239 --> 00:29:57.040 여기서 음영이 진다고 해서 533 00:29:57.040 --> 00:30:00.839 실제로 평면에 굴곡의 변화가 생긴 건 아닙니다 534 00:30:00.839 --> 00:30:03.280 평면은 아직도 평면 그 자체지만 535 00:30:03.280 --> 00:30:05.319 이런 식으로 왔다 갔다 하면서 536 00:30:05.319 --> 00:30:06.880 여러분들이 빛의 변화를 537 00:30:06.880 --> 00:30:11.400 Lerp Value의 변화와 함께 확인해 보시면 됩니다 538 00:30:11.400 --> 00:30:13.000 마무리하는 과정에서 539 00:30:13.000 --> 00:30:17.160 한번 이 효과를 조금 더 그럴듯하게 바꿔 보겠습니다 540 00:30:17.160 --> 00:30:21.280 우선 현재 상태에 문제점을 살펴보면 541 00:30:21.280 --> 00:30:24.920 어느 정도 이렇게 물이 차있다고 가정을 해 보면요 542 00:30:24.920 --> 00:30:26.860 돌의 단면들 중에 543 00:30:26.860 --> 00:30:31.880 이런식으로 아직 충분히 물이 높게 올라오지 않은 것 같은데 544 00:30:31.880 --> 00:30:35.079 이렇게 중간중간 마치 물에 찬 것처럼 545 00:30:35.079 --> 00:30:39.520 뜬금없이 물이 고인 것 같이 보이는 이런 경우가 있습니다 546 00:30:39.520 --> 00:30:44.119 만약에 정상적으로 이렇게 돌들이 있다 라고 가정을 해보면 547 00:30:44.119 --> 00:30:47.199 이게 물이 서서히 올라와야 되는 거잖아요 548 00:30:47.199 --> 00:30:47.760 그렇죠 549 00:30:47.760 --> 00:30:50.619 이런 식으로 서서히 물이 차올라서 550 00:30:50.620 --> 00:30:52.887 위에까지 가득 차야 되는데 551 00:30:52.887 --> 00:30:55.040 지금은 어떤 상황이냐면 552 00:30:55.040 --> 00:30:57.800 이렇게 돌들이 있다고 가정을 했을 때 553 00:30:57.800 --> 00:31:01.160 물이 이렇게 차다가 여기도 차다가 554 00:31:01.160 --> 00:31:03.280 여기도 차고 여기도 차고 555 00:31:03.280 --> 00:31:07.000 높낮이가 서로 다른 데도 이렇게 차오르는 것 같은 이유는 556 00:31:07.000 --> 00:31:12.520 기본적으로 컬러가 믹싱이 될 때 높낮이가 고려되지 않은 상태에서 557 00:31:12.520 --> 00:31:17.400 단순히 노이즈 맵의 패턴에 의해서만 차오르기 때문인데요 558 00:31:17.400 --> 00:31:20.680 이것을 조금 그럴듯하게 바꿔 보겠습니다 559 00:31:20.680 --> 00:31:23.560 우선 노이즈 텍스처를 뒤로 빼고요 560 00:31:23.560 --> 00:31:27.300 여러분들이 Cobblestone이 있는 Start Content의 561 00:31:27.301 --> 00:31:29.518 텍스처 폴더로 가보시면 562 00:31:29.518 --> 00:31:32.520 원래 이런 목적의 텍스처는 아닌데 563 00:31:32.520 --> 00:31:34.160 메탈릭에 사용하라고 있는 564 00:31:34.160 --> 00:31:39.160 Cobblestone_M 이라고 하는 텍스처가 있습니다 565 00:31:39.160 --> 00:31:42.160 이것을 실제로 더블 클릭해서 보면 566 00:31:42.160 --> 00:31:45.239 이런 식으로 굉장히 뿌옇게 보이죠 567 00:31:45.239 --> 00:31:49.880 이렇게 보이는데 이 맵에서 조금 재밌는 특징이 있습니다 568 00:31:49.880 --> 00:31:52.280 이 단면을 그려 보도록 할게요 569 00:31:52.280 --> 00:31:55.119 화이트를 높다고 가정을 하고 570 00:31:55.119 --> 00:31:58.400 블랙을 낮다고 가정을 하고 보겠습니다 571 00:31:58.400 --> 00:32:00.319 어두울수록 낮은 거예요 572 00:32:00.319 --> 00:32:02.839 그럼 중간 톤보다 조금 어두운 회색은 573 00:32:02.839 --> 00:32:04.800 블랙과 가까운 중간쯤에 높이가 있을 거고 574 00:32:04.800 --> 00:32:07.839 시작을 A에서 B 까지라고 가정했을 때 575 00:32:07.839 --> 00:32:11.760 흰색으로 갈수록 점점 화이트가 되겠죠 576 00:32:11.760 --> 00:32:13.359 다시 낮아졌다가 577 00:32:13.360 --> 00:32:15.320 지금 이렇게 온 겁니다 578 00:32:15.320 --> 00:32:18.179 낮아졌다가 다시 높아졌다가 579 00:32:18.179 --> 00:32:20.599 낮아졌다가 높아졌다가 낮아졌다가 580 00:32:20.599 --> 00:32:25.640 그래서 중간에 있는 회색들은 대체로 다 톤이 비슷하니까 581 00:32:25.640 --> 00:32:28.880 높이가 어느 정도 일정할 거고요 582 00:32:28.880 --> 00:32:32.400 화이트로 갈수록 높아졌다가 낮아지는 583 00:32:32.400 --> 00:32:34.199 높아졌다가 낮아지는 584 00:32:34.199 --> 00:32:37.319 이런 식의 형태를 시각화해 볼 수 있을 겁니다 585 00:32:37.319 --> 00:32:41.640 그래서 사실 이러한 목적을 가진 텍스처는 586 00:32:41.640 --> 00:32:43.119 Height Map 이라고 해서 587 00:32:43.119 --> 00:32:46.800 높이 값을 나타내는 텍스처가 있을 때도 있고요 588 00:32:46.800 --> 00:32:48.199 없을 때도 있습니다 589 00:32:48.199 --> 00:32:51.639 원래는 블랙과 화이트로 높낮이 값을 나타내는 590 00:32:51.639 --> 00:32:54.019 Height Map이라는 텍스처가 있는데 591 00:32:54.019 --> 00:32:57.719 현재 우리는 Height Map을 가지고 있지 않으니까 592 00:32:57.719 --> 00:33:00.959 대체할 수 있는 다른 방법을 찾아보는 거죠 593 00:33:00.959 --> 00:33:04.280 그러면 여기에서 중간에 그레이로 보이는 것을 594 00:33:04.280 --> 00:33:09.280 이것을 블랙 혹은 화이트로 컬러 톤을 맞출 수만 있다면 595 00:33:09.280 --> 00:33:11.399 조금 더 그럴듯한 596 00:33:11.399 --> 00:33:14.160 차오르는 듯한 효과를 만들어낼 수가 있을 겁니다 597 00:33:14.280 --> 00:33:17.199 Cobblestone_M 을 598 00:33:17.199 --> 00:33:20.079 얘도 마찬가지로 Red채널에서 가지고 올 겁니다 599 00:33:20.079 --> 00:33:23.239 이 두 가지를 Multiply 시킵니다 600 00:33:23.239 --> 00:33:27.520 이걸로는 사실 부족한데 그냥 그대로 꽂아서 연결을 해 보죠 601 00:33:27.520 --> 00:33:32.359 이렇게 0.5일 때 하얀 부분들만 먼저 드러나 있죠 602 00:33:32.359 --> 00:33:36.400 그리고 0.1이 되면 화이트가 되고요 603 00:33:36.400 --> 00:33:40.439 0.9가 되면 거의 블랙에 가까운 상태 604 00:33:40.439 --> 00:33:44.839 0.2가 되면 조금 더 화이트가 잘 드러나게 되는데 605 00:33:44.839 --> 00:33:49.679 여기에서 이 중간의 톤이 너무 밋밋하다 보니까 606 00:33:49.679 --> 00:33:53.239 음영의 변화를 Multiply를 이용해서 607 00:33:53.239 --> 00:33:58.040 베이스 컬러에 해줬던 것과 똑같이 Multiply를 같은 걸로 해 줬죠 608 00:33:58.040 --> 00:33:59.719 이렇게 한번 해 줘 보겠습니다 609 00:33:59.719 --> 00:34:01.920 그리고 나서 이걸 연결을 해 보면 610 00:34:01.920 --> 00:34:05.280 조금 더 그 차이가 명확하게 드러나죠 611 00:34:05.280 --> 00:34:10.080 다만 현재 보면 0.2에서 0.5로 가고 612 00:34:10.080 --> 00:34:14.439 다시 0.3, 0.1 이런 식으로 되면 613 00:34:14.439 --> 00:34:20.120 틈새보다도 오히려 위에 표면이 더 빨리 차오르는 걸 볼 수가 있습니다 614 00:34:20.120 --> 00:34:22.800 한마디로 값을 뒤집어줘야겠죠 615 00:34:22.800 --> 00:34:26.199 그래서 OneMinus 노드를 이용해서 616 00:34:26.199 --> 00:34:30.479 노드는 OneMinus라고 검색을 하시면 617 00:34:30.479 --> 00:34:34.600 이렇게 1-x 라고 되어 있는 노드가 나옵니다 618 00:34:34.600 --> 00:34:36.560 이걸 이렇게 꽂아 주게 되면 619 00:34:36.560 --> 00:34:39.520 한 번 인스턴스에서 확인해 보겠습니다 620 00:34:39.520 --> 00:34:42.239 LerpValue가 0 이라는 얘기는 621 00:34:42.239 --> 00:34:44.760 좀 더 정확하게는 LerpValue가 아니라 622 00:34:44.760 --> 00:34:49.919 Step의 값이 0 이상은 무조건 화이트로 해라 623 00:34:49.919 --> 00:34:54.019 그 기준값을 정해 주는 게 우리가 파라미터로 정한 거였죠 624 00:34:54.919 --> 00:34:58.360 그래서 0일 때는 0 이상이 전부 다 화이트가 되라니까 625 00:34:58.360 --> 00:34:59.879 물이 차오른 거고요 626 00:34:59.879 --> 00:35:03.000 여기서 서서히 물을 한 번 빼보겠습니다 627 00:35:03.000 --> 00:35:04.360 천천히 한 번 빼 볼게요 628 00:35:04.360 --> 00:35:08.559 돌의 높은 부분들이 먼저 드러나고 있죠 629 00:35:08.559 --> 00:35:13.039 서서히 높은 부분들 위주로 드러나다가 630 00:35:13.039 --> 00:35:16.900 점점 값이 더해질수록 바닥을 향해서 631 00:35:16.900 --> 00:35:19.360 이렇게 마치 물이 빠지는 것처럼 632 00:35:19.360 --> 00:35:21.560 다시 차오르게 만들려면 633 00:35:21.560 --> 00:35:24.299 이런 식으로 쓱 하고 줄이면 634 00:35:24.679 --> 00:35:26.320 정확하진 않지만 635 00:35:26.320 --> 00:35:30.959 상대적으로 틈새들 위주로 먼저 차오르기 시작해서 636 00:35:30.959 --> 00:35:37.779 점점 위로 돌 중앙부를 향해서 올라오는 것들을 볼 수가 있죠 637 00:35:38.619 --> 00:35:40.819 이런 식으로 정확하진 않지만 638 00:35:40.819 --> 00:35:45.199 비슷하게 흉내 내는 정도의 효과는 만들어 볼 수가 있을 겁니다 639 00:35:45.199 --> 00:35:47.840 이 상태에서 LerpValue가 640 00:35:47.840 --> 00:35:51.439 우리가 앞서서 Lerp에 대해서 배울 때 641 00:35:51.439 --> 00:35:55.719 밸류 값이 1이면 b의 성분이 100%고 642 00:35:55.719 --> 00:35:59.280 밸류 값이 0.7이면 b의 성분이 70%다 643 00:35:59.280 --> 00:36:00.919 이런 식으로 얘기를 했는데 644 00:36:00.919 --> 00:36:03.560 실제로 b를 100% 보여주고 싶으면 645 00:36:03.560 --> 00:36:09.159 현재 파라미터를 Step에서 0 이상은 무조건 white로 해라 646 00:36:09.159 --> 00:36:10.000 이렇게 되어 있죠 647 00:36:10.000 --> 00:36:13.679 한마디로 Alpha에 들어가야 되는 값과 648 00:36:13.679 --> 00:36:16.040 우리가 정해줘야 되는 밸류 값이 649 00:36:16.040 --> 00:36:18.679 파라미터 값이 반대 관계가 있죠 650 00:36:18.679 --> 00:36:21.520 그래서 이것을 마찬가지 맥락으로 651 00:36:21.520 --> 00:36:26.479 OneMinus 노드를 이용해서 연결을 해주게 되면 652 00:36:26.479 --> 00:36:29.120 앞서서 우리가 여기 썼었죠 653 00:36:29.120 --> 00:36:31.360 그대로 한 번 Apply 해보겠습니다 654 00:36:31.360 --> 00:36:32.919 그러면 이제 1이 됐을 때 655 00:36:32.919 --> 00:36:37.280 LerpValue가 1이 됐을 때는 b의 이미지가 Lerp값 그대로 656 00:36:37.280 --> 00:36:40.759 Alpha값이 1일 때와 똑같은 상황을 만들어 줄 수가 있고요 657 00:36:40.879 --> 00:36:44.199 0.7일 때는 b가 70% 658 00:36:44.199 --> 00:36:48.000 0.5, 0.3, 마지막 0까지 659 00:36:48.000 --> 00:36:51.280 Lerp값이 0일 때는 a의 이미지 660 00:36:51.280 --> 00:36:53.560 드라이한 이미지가 보여지게 되는 거죠 661 00:36:53.560 --> 00:36:58.080 OneMinus 노드라는 게 기본적으로 1 빼기 X라는 얘기인데 662 00:36:58.080 --> 00:37:00.840 이 X에 우리가 값을 정해주는 겁니다 663 00:37:00.840 --> 00:37:03.461 그러면 만약에 이것을 그대로 664 00:37:03.461 --> 00:37:07.781 0, 0.3, 0.7, 1을 넣었다고 665 00:37:07.781 --> 00:37:11.239 이 X에 값을 넣었을 때 어떻게 되겠어요 666 00:37:11.239 --> 00:37:13.959 1 빼기 0이 되니까 667 00:37:13.960 --> 00:37:16.060 결과 값은 1이 나오겠죠 668 00:37:16.259 --> 00:37:20.219 1 빼기 0.3이 되니까 0.7이 될 거고요 669 00:37:20.219 --> 00:37:21.939 1 빼기 0.7 670 00:37:21.940 --> 00:37:23.580 결과는 0.3 671 00:37:23.580 --> 00:37:26.279 1 빼기 1은 0이 되겠죠 672 00:37:26.279 --> 00:37:31.840 그러면서 자연스럽게 이 값이 반전이 일어난 것을 볼 수가 있습니다 673 00:37:32.040 --> 00:37:34.499 그래서 OneMinus 노드도 마찬가지로 674 00:37:34.499 --> 00:37:36.439 컬러 믹싱을 하거나 675 00:37:36.440 --> 00:37:38.260 여러 가지 쉐이더를 짜는 상황에서 676 00:37:38.260 --> 00:37:41.560 굉장히 빈번하게 쓰이는 노드 중에 하나입니다 677 00:37:41.560 --> 00:37:45.800 이런 식으로 기본적인 질감에 대한 표현을 해봤고요 678 00:37:45.800 --> 00:37:49.000 이번엔 조금 더 다른 방식으로 679 00:37:49.240 --> 00:37:53.719 이 텍스쳐들이 지금은 딱 이렇게 한 세트가 680 00:37:53.719 --> 00:37:55.760 한 장의 이미지만 보여지고 있는데 681 00:37:55.760 --> 00:38:00.479 여기에서 Texture Coordinate라고 하는 노드를 이용해서 682 00:38:00.479 --> 00:38:03.319 텍스쳐가 반복되는 횟수를 이런식으로 683 00:38:03.319 --> 00:38:06.120 여기 보면 U 타일링, V 타일링으로 되어있는데 684 00:38:06.120 --> 00:38:09.360 U 타일링의 수치를 높여주게 되면 685 00:38:09.360 --> 00:38:14.480 좌우의 이미지가 반복되는 횟수가 늘어나게 됩니다 686 00:38:14.480 --> 00:38:16.760 그래서 이 UV라고 687 00:38:16.760 --> 00:38:20.920 우리가 흔히 텍스쳐에서 얘기하는 게 X,Y축이기 때문에 688 00:38:20.920 --> 00:38:24.280 X는 좌우, Y는 위아래죠 689 00:38:24.280 --> 00:38:27.879 그러다 보니까 U 타일링의 수치를 높이면 690 00:38:27.879 --> 00:38:30.479 3D 메시가 지금 평면으로 있죠 691 00:38:30.479 --> 00:38:34.439 여기에 원래는 한 장을 보여주는 게 기본 값인데 692 00:38:34.439 --> 00:38:36.279 여기에 3이 되면서 693 00:38:36.280 --> 00:38:39.745 총 가로로만 세 장의 이미지를 694 00:38:39.745 --> 00:38:44.399 하나, 둘, 세 장의 이미지를 보여주는 상태가 된 겁니다 695 00:38:44.399 --> 00:38:46.360 그래서 이러한 성질을 이용해서 696 00:38:46.360 --> 00:38:50.000 Texture Coord에다가 Multiply를 해 줘 가지고요 697 00:38:50.000 --> 00:38:52.639 여기에 B에다 곱해지는 값을 698 00:38:52.639 --> 00:38:55.360 Scalar Parameter로 해서 699 00:38:55.360 --> 00:39:00.320 Parameter의 값의 이름은 tilling이라고 지어 주겠습니다 700 00:39:00.320 --> 00:39:02.280 기본 값은 1이 될 거고요 701 00:39:02.280 --> 00:39:05.479 Texture Coordinate에서의 U 타일링 값도 702 00:39:05.479 --> 00:39:08.719 1로 다시 원상복구 해놓도록 하겠습니다 703 00:39:08.719 --> 00:39:10.439 이런 식으로 연결해 주면 704 00:39:10.439 --> 00:39:16.060 이제는 Texture Coordinate에 있는 값을 수정하지 않고도 705 00:39:16.060 --> 00:39:19.360 반복되는 횟수를 우리가 임의로 정할 수가 있죠 706 00:39:19.360 --> 00:39:23.360 다만 이렇게 Texture Coordinate를 정할 때에는 707 00:39:23.360 --> 00:39:25.840 우리가 사용하는 텍스쳐들 중에서도 708 00:39:25.840 --> 00:39:29.360 같은 질감을 가지고 있는 Cobblestone_M 709 00:39:29.361 --> 00:39:31.317 그리고 노멀맵 710 00:39:31.317 --> 00:39:35.000 여기에도 모두 동일하게 적용이 되어야 711 00:39:35.000 --> 00:39:40.360 노멀맵까지 어긋나지 않게 깔끔하게 정리돼서 표현이 되죠 712 00:39:40.360 --> 00:39:42.120 만약에 이걸 빼버리면 713 00:39:42.120 --> 00:39:45.599 지금 보는 것처럼 노멀맵은 한 장만 714 00:39:45.599 --> 00:39:48.639 기본 값인 한 장만 반복되고 있는데 715 00:39:48.639 --> 00:39:53.000 베이스 컬러가 두 장 혹은 세 장씩 반복되면 이상하겠죠 716 00:39:53.000 --> 00:39:55.120 그래서 이런 식으로 하는 거고요 717 00:39:55.780 --> 00:40:01.479 노이즈 같은 경우에는 일부러 패턴을 얼기설기 보여주기 위해서 718 00:40:01.479 --> 00:40:06.080 일부러 tilling 값을 다르게 가지고 가는 경우들이 있습니다 719 00:40:06.080 --> 00:40:08.800 경우에 따라서는 tilling 값이 몇이든 720 00:40:08.800 --> 00:40:11.520 그거의 절반만 tilling 값에다가 721 00:40:11.520 --> 00:40:13.719 Multiply 같은 것들을 해서 722 00:40:13.719 --> 00:40:17.679 만약에 내가 세 장을 반복하는 것의 절반만 따라 하게 하고 싶다면 723 00:40:17.679 --> 00:40:21.439 Multiply를 0.5로 곱해 주게 되면 724 00:40:21.439 --> 00:40:24.239 3 곱하기 0.5가 되면서 725 00:40:24.239 --> 00:40:27.479 1.5회만 반복하게끔 만든다던가 726 00:40:27.479 --> 00:40:30.399 혹은 0.3333 해서 727 00:40:30.399 --> 00:40:33.600 3분의 1만 반복하게 한다던가 하는 식으로 728 00:40:33.600 --> 00:40:37.520 별도의 Multiply 되는 수치를 조절할 수가 있겠죠 729 00:40:37.520 --> 00:40:41.439 당연히 이것도 당장 꽂으면 되는 게 아니라 730 00:40:41.439 --> 00:40:47.980 Texture Coordinate랑 Multiply를 하고 나서 그 결과를 꽂아 줘야겠죠 731 00:40:47.980 --> 00:40:49.560 그래서 적용을 해 보면 732 00:40:49.560 --> 00:40:53.320 실제 머티리얼 인스턴스에서 733 00:40:53.320 --> 00:40:56.440 tilling 숫자도 놓겠습니다 734 00:40:56.440 --> 00:41:01.840 서서히 물이 군데군데 차오르는 정도를 표현할 수가 있고 735 00:41:01.840 --> 00:41:07.800 tilling되는 횟수에 따라서 텍스쳐도 일정하게 적용되는 걸 확인할 수가 있죠 736 00:41:07.800 --> 00:41:11.000 그래서 여러분들이 이런 식으로 기본적인 737 00:41:11.000 --> 00:41:12.479 우리가 현재 사용한 건 738 00:41:12.520 --> 00:41:14.360 Lerp라는 Node도 사실상 739 00:41:14.360 --> 00:41:17.639 그 안에 내부적으로 보면 다 곱하기하고 덧셈이고 740 00:41:17.639 --> 00:41:21.259 Multiply 혹은 Add를 이용해서 741 00:41:21.259 --> 00:41:26.320 우리가 조금 더 원하는 표현들을 복잡한 수식 없이 742 00:41:26.320 --> 00:41:32.979 곱셈과 덧셈 같은 단순한 수식들만을 이용해 가지고 표현해 봤습니다 743 00:41:33.719 --> 00:41:38.479 이번 시간에는 Multiply와 Lerp를 활용해서 744 00:41:38.479 --> 00:41:43.020 메마른 땅에서 젖어있는 땅으로 서서히 물이 차오르게끔 745 00:41:43.020 --> 00:41:45.019 표현해 보았습니다 746 00:41:45.399 --> 00:41:50.240 덧셈과 곱셈 같은 단순한 수식만으로도 변화를 만들어 747 00:41:50.240 --> 00:41:53.780 자연스러운 시각 효과를 만들 수 있었습니다 748 00:41:53.780 --> 00:41:58.280 그럼 이번 시간 학습한 내용을 정리하면서 마무리하겠습니다 749 00:41:58.281 --> 00:41:59.800 감사합니다 750 00:42:00.242 --> 00:42:01.059 WetFloor 머티리얼 생성 751 00:42:01.059 --> 00:42:01.781 머티리얼 생성 Content 폴더에 WetFloor 폴더 만든 후 M_WetFloor 머티리얼 생성 752 00:42:01.781 --> 00:42:02.565 Texture Sample 노드 생성 후 T_CobbleStone_Pebble_D 텍스쳐연결 RGB에서 핀을 뽑아 Multiply 노드 생성 753 00:42:02.565 --> 00:42:03.425 Multiply A,B 모두 RGB에서 연결 (젖은 표면) 754 00:42:03.425 --> 00:42:04.127 마른 땅과 젖은 땅이 공존하는 질감 제작 Lerp (Linear Interpolate)노드 생성 Lerp A에 텍스쳐 (마른 땅), Lerp B에 Multiply(젖은 땅) 연결 755 00:42:04.127 --> 00:42:05.127 텍스쳐 샘플 생성 후 T_Perlin_Noise_M 선택 노이즈 텍스쳐 R채널과 Lerp Alpha 연결 Lerp A에 1, Lerp B에 0 입력 후 Roughness에 연결 756 00:42:05.127 --> 00:42:06.126 물이 차오르는 연출을 위한 효과 노멀 맵 연결 및 노멀 믹싱 Texture Sample 생성 후 T_CobbleStone_Pebble_N을연결 757 00:42:06.127 --> 00:42:06.928 T_CobbleStone_Pebble_N의 RGB채널을 Component Mask에 연결 (Component Mask는 RG) 758 00:42:06.928 --> 00:42:07.791 Constnat3Vector 노드 생성 후 (0,0,1)입력 Component Mask(R,G)에 연결 Lerp A 텍스쳐에 연결된 컴포넌트 마스크 759 00:42:07.791 --> 00:42:08.610 Lerp B Constnat3Vector에 연결된 컴포넌트 마스크 Lerp Alpha Step 아웃풋 760 00:42:08.610 --> 00:42:09.191 Append Vector 노드 생성 후 R,G채널만 사용하는 Lerp 데이터를 RGB형태로 확장 Append A Lerp 아웃풋 /Append B 노멀 텍스쳐의 블루 채널 761 00:42:09.191 --> 00:42:09.972 Nomalize한 결과를 마스터노드의 Normal에 연결 762 00:42:09.972 --> 00:42:10.732 머티리얼 인스턴스 생성 ScalarParameter 노드 생성 후 LerpVal로 이름 설정 763 00:42:10.732 --> 00:42:11.273 M_WetFloor 마우스 우클릭해 Create Material Instance 생성 후 열기 764 00:42:11.273 --> 00:42:12.214 Global Scalar Parameter Values항목 LerpVal 체크 시 결과값에 대한 연속적 변화를 확인할 수 있음 765 00:42:12.214 --> 00:42:12.895 Height Map효과 제작 T_Cobblestone_Pebble_M 텍스쳐 가져온 후 R채널을 Multiply하여 대비를 강하게 함 766 00:42:12.895 --> 00:42:13.656 OneMinus 노드를 사용하여 Black과 White값을 뒤집어 줌 노이즈 텍스쳐와 멀티플라이한 결과를 Step노드에 연결 767 00:42:13.656 --> 00:42:14.156 T_Cobblestone_Pebble_M 텍스쳐 가져온 후 R채널을 Multiply하여 대비를 강하게 함 OneMinus 노드를 사용하여 Black과 White값을 뒤집어 줌 768 00:42:14.156 --> 00:42:15.196 노이즈 텍스쳐와 멀티플라이한 결과를 Step노드에 연결 769 00:42:15.196 --> 00:42:17.233 물이 차오르는 연출을 위한 효과 타일맵 제작 Texture Coordinate 노드 생성 ScalarParameter 노드 생성(tilling) 770 00:42:17.233 --> 00:42:18.874 두 노드를 멀티 플라이로 연산한 결과를 각 텍스쳐 UV노드에 연결 (베이스 컬러,노멀) 771 00:42:18.874 --> 00:42:19.915 Tilling 파라미터에 Multiply를 추가해서 다시 한 번 위에서 Multiply한 결과와 연산함 노이즈 텍스쳐 UV에 연결