1 Substance Designer

substance는 '디자이너(2D)'와 '페인터(3D)' 2개로 나뉜다. '서브스탠스 디자이너'는 주로 쉐이더와 텍스처 제작에 사용하며, '페인터'는 뷰포트에서 3D 오브젝트를 직접 텍스처를 적용할 수 있다. 즉, 「디자이너 = 쉐이더 제작」, 「페인터 = 쉐이더 사용」정도로 생각하면 될 듯하다.

 

 

 

벽돌 쉐이더를 제작하기 위해 사용할 툴은 'substance designer'이며, 우선 아래와 같이 '새로운 substance'를 실행해준다. 

 

 

'새로 만들기' 도구상자에는 기본적인 여러 쉐이딩 방식을 선택할 수 있다. 만일, 사람의 피부를 제작한다면 빛의 투과가 가능한 'SSS(Sub Stance Scatter)'쉐이더 방식이 적당하며, 실시간 랜더링을 구현하려면 PBR계통이 (작업에) 편리하다.

 

 

PBR Metallic을 선택한다면 아래와 같이 6가지 텍스처를 조합한 기본 쉐이더가 자동으로 생성된다.

 

6가지 텍스처에는 'Base Color', 'Normal'이 기본이며, 'Roughness(표면의 거친 정도)', 'Ambient Occlusion(음양 세기)', 'Metallic(금속성)', 'Height(높낮이)' 4가지 맵이 추가된다. 여기서 Height맵은 디스맵, Metallic과 Roughness는 Specular맵 정도로 이해하면 될 듯하다.

 

 

 

 

 


2 Tile맵 제작

벽돌 제작에 적합한 패턴은 'Tile 문양'이다. Tile 패턴은 뷰포트에서 'Tap키'를 선택한 뒤 'Tile Generator'를 입력하는 것으로 불러올 수 있다. 그래프 뷰포트는 전형적인 노드 방식으로써 탭키를 통해 각종 노드들을 쉽게 불러올 수 있으며, 상단의 아이콘을 클릭하는 방식으로 각 노드를 생성할 수도 있다.

 

 

Tile Generator에 input노드를 연결해보면, 아래와 같은 타일 모양을 확인할 수 있다.

 

input노드에는 각 Shape노드 뿐 아니라 이미지 파일도 불러올 수 있는데, 단순한 벽돌패턴은 'shape노드'와 input만으로 어느정도 형태를 생성할 수 있다. 또, input을 비롯한 노드의 설정은 아래와 같이 (우측)속성 에디터에서 각 수치를 조절할 수 있다.

 

 

Shape노드를 Tile Generator노드에 연결했다면, Shape노드의 Scale을 조절해보자. 아래와 같이 Tile의 크기가 변하는 모습을 실시간으로 확인할 수 있는데, 이와 같이 Shape을 변경함으로써 여러 문양을 쉽게 생성할 수 있다.

 

 

벽돌 크기가 잘 맞는지 확인하려면, Base Color 쉐이더에 텍스처 노드를 연결하면 된다. 만일, 벽돌 문양을 랜덤으로 표현하고 싶다면, Tile Generator에서 'offset'을 조절하며 벽돌의 상하 간격을 조절한다.

 

 

참고로, 'bevel'노드를 사용한다면, 아래와 같이 한꺼번에 '흰색'부분의 사이즈를 조절할 수 있다.(벽돌 크기 조절)

 

 

 

 

 

 


3 균열 만들기

텍스처에 '균열', '갈라짐'(크랙), '부숴짐', 등..과 같은 효과는 서브스탠스 디자이너의 가장 주된 기능이다. 이같은 효과는 사실상 'blend', 'slope blur grayscale', 'perlin noise(기타 노이즈)'노드 조합으로 제작할 수 있으며, 이 중에서 'slope blur grayscale'노드는 ' 세월의 흔적에 따라 뭉개진 표면'을 표현하기에 적절하다.

 

 

slope blur grayscale노드는 'GrayScale', 'Slope' 2개의 input노드가 있으며, 'Grayscale'에는 'Bevel' 그리고 'Slope'에 'Perlin Noise'노드를 연결한다. 여기서 벽돌 가장자리의 균열을 잘 표현할 수 있는 필터라면 어떤 노이즈건 상관없다. Noise노드는 거의 속성이 비슷하기 때문이다. 또, 'scale'을 줄여 균열의 크기를 대략적으로 맞춰준다.

 

 

노이즈 노드에서 Scale세팅이 끝났다면, 이제 Slope Blur GrayScale노드의 역할이 중요하다. 우측 하단의 속성창에서 'Sample'값과 'Intensity'값의 조절을 통해 노이즈를 적당하게(?) 뭉개보자.  

 

 

노이즈는 여러 노드가 조합될 때, 좀더 실감나게 표현된다. 그러므로 'Perlin Noise'혹은 '기타 노이즈'노드와 'Slope Blur Grayscale'노드를 다시 한번 섞어준다. 한편, 이렇게 제작된 '노이즈 + Blur'노드의 조합은 Blend노드와 합쳐질 예정이다.

 

 

이제 'blend노드'를 생성한 뒤, 위의 2개 input에 'Slope Blur Grayscale노드'를 연결한다. 참고로 'Blend노드'는 서브스탠스에서 가장 많이 사용되는 노드 중의 하나이므로 상단 아이콘 두 번째에 있으며, 1, 2번째 input은 칼라와 그레이 노드를 연결할 수 있으며 마지막 input은 opacity(마스킹 목적) 노드를 연결할 수 있다.

 

 

"Slope blur grayscale노드" 2개를 연결한 "blend노드"를 노멀맵에 연결해 보면, 아래와 같이 3D뷰에서 '미세 균열'을 확인할 수 있다. 현재 'Base Color'쉐이더가 공백이므로 검은색으로 표현되고 있는데, Base칼라는 후반부에 설정해주는 편이 좋다.(노멀맵에서 제작한 노드를 활용해야 하므로)

 

 

서브스탠스는 'Nuke'의  노드 기능과 꽤 비슷하다. 그래서 아래와 같이 '프레임'을 만들어 노드를 정리할 수 있으며, 한글로 제목을 변경할 수 있다.(색상 변경도 가능) 이와 같은 프레임 기능은 꽤 유용한데, 작업 후반부로 갈수록 노드들이 얽히고 설킬 가능성이 높으므로 제작 초기부터 프레임 기능을 적극 활용하는 편이 좋다.