이번 튜토리얼에서는 Substance Painter에서 오브젝트 표면에 로고 또는 보다 일반적으로 데칼이라고 불리는 장식 요소를 적용하는 방법을 살펴보겠습니다.
이 튜토리얼의 동영상 버전은 현재 이 언어로 제공되지 않습니다. 아래에서 자막이 포함된 영어 버전을 시청할 수 있으며, 동영상 아래에는 한국어로 번역된 스크립트가 있습니다.
영상 자막 텍스트
안녕하세요, 여러분! 이번 튜토리얼에서는 Substance Painter에서 오브젝트 표면에 로고 또는 보다 일반적으로 데칼이라고 불리는 장식 요소를 적용하는 방법을 살펴보겠습니다. 구체적으로는 Layer에 브러시를 사용하는 방법을 다룰 예정이지만, 그것만이 전부는 아닙니다. 장식 요소에 Material을 할당하기 위해 지금까지 제 영상 튜토리얼에서 다루지 않았던 Substance 기능인 Anchor를 사용해 보겠습니다.
먼저 제가 구현하려는 결과를 바로 보여드리겠습니다. 현재 화면에 보이는 3D 모델에 몇 개의 로고를 적용하고 싶지만, 동시에 그 로고들에 Material도 할당하고 싶습니다. 따라서 Texture를 사용해 Layer에 페인팅하면서도, 물론 Base Color는 제외하고, 해당 Texture가 정의하는 영역에만 다른 Material을 적용할 수 있는 방법이 필요합니다.

저는 File → Import Resources를 사용하여 Textures 섹션에 투명도가 포함된 컬러 PNG 이미지 형태로 로고를 가져왔습니다. 별도의 opacity mask는 가지고 있지 않으며, 이미지 편집 프로그램에서 직접 만들 생각도 없습니다. 잠시 후 보시겠지만, 이를 Substance 내부에서 바로 생성할 수 있기 때문입니다.

모델에는 이미 기본 Material이 적용되어 있지만, 로고에는 다른 Material을 사용해야 하며 Roughness 효과 등도 달라야 합니다. 따라서 단순히 Layer를 추가하고 브러시를 선택한 다음 브러시의 Base Color에 Texture를 할당하고 오브젝트 표면을 클릭하는 것만으로는 충분하지 않습니다. 그렇게 하면 이미지는 Base Color에만 적용되고, 나머지 모든 속성은 아래쪽 Material의 값을 그대로 유지하게 됩니다. 또한 보시는 것처럼 브러시는 로고 주변에 후광 같은 영역을 남기는데, 이는 opacity가 균일하기 때문입니다.

같은 로고 이미지를 브러시의 Opacity 채널에도 할당해 보더라도 상황은 크게 나아지지 않습니다. Opacity는 이미지의 색상을 그레이스케일 값으로 사용하며, 이는 3D 뷰를 Opacity 표시 모드로 전환하면 확인할 수 있습니다.

따라서 브러시 스트로크가 정의하는 영역에만 Material을 적용하면서, 동시에 브러시 로고를 Material의 Base Color로 사용하는 방법이 필요합니다. 다시 말해, Material이 Layer 안의 브러시 스트로크를 opacity mask로 사용해야 합니다. 바로 이때 Anchor가 필요합니다.
Anchor는 기본적으로 참조 역할을 하는 Substance 기능입니다. Layer Mask, Filter 또는 Generator와 같은 객체는, 해당 객체에 Anchor가 추가되어 있다면, 참조 대상으로 지정된 다른 객체의 정보를 사용할 수 있습니다.
이번 예제에서는 다음과 같이 진행할 수 있습니다. 먼저 로고에 사용할 Material을 추가합니다. 저는 금속성 Material을 사용하고 있습니다. 장식용으로는 가장 적절한 선택은 아니지만, Roughness, Metallic 등의 다양한 채널 효과를 보여드리기 위해 선택했습니다. 그런 다음 여기에 완전히 검은색 Layer Mask를 할당하고 Color 채널은 비활성화합니다. 색상은 브러시 스트로크의 Texture를 사용할 것이기 때문입니다.

다음으로 브러시를 사용해 로고를 배치할 빈 Layer를 추가합니다. 제 경우에는 가장자리가 흐려지지 않도록 Basic Hard 브러시를 사용합니다. 또한 브러시에서는 Color 채널만 활성화되어 있는지 확인합니다.

사용하는 모델에 따라서는 Symmetry 기능을 활성화하는 것이 도움이 될 수 있습니다. 이렇게 하면 오브젝트 한쪽을 클릭했을 때 선택한 대칭 축을 기준으로 반대편에도 자동으로 브러시 스트로크가 생성됩니다.

이제 Layer를 마우스 오른쪽 버튼으로 클릭한 뒤 "Add Anchor Point"를 선택합니다. Anchor 아이콘과 함께 Layer와 동일한 이름을 가진 새 항목이 생성됩니다. 물론 이름은 변경할 수 있습니다.


이제 이 Layer는 다른 객체에서 사용할 수 있으며, 심지어 다른 Material에 속해 있어도 참조가 가능합니다.
이제 금속성 Material로 이동합니다. Material의 검은색 Layer Mask를 마우스 오른쪽 버튼으로 클릭한 뒤 "Add Fill"을 선택하여 Fill Layer를 추가합니다. 처음에는 Properties - Grayscale 섹션에 보이는 것처럼 균일한 회색 값을 가집니다. 따라서 금속성 Material이 오브젝트 전체 표면에 중간 강도로 적용됩니다.

Properties - Grayscale을 클릭한 뒤 "Anchor Points"를 클릭해 보겠습니다. 그런데 문제가 있습니다. 해당 영역을 클릭할 수가 없습니다!
이 실수는 중요한 점을 설명하기 위해 일부러 만든 것입니다. Anchor Point는 그것을 사용하는 객체보다 Layer 스택에서 아래에 위치해야 합니다. 저는 사용할 Material보다 나중에 브러시 스트로크 Layer를 추가했기 때문에, 이제 해당 Layer를 Material 아래로 드래그해야 합니다.

그렇게 하면 Material 마스크의 Fill Layer 안에서 Anchor Point를 선택할 수 있게 됩니다.

보시는 것처럼 이제 금속성 Material은 Metallic, Roughness, Normal 등의 속성을 포함하여, 아래쪽 Layer에 그려진 브러시 스트로크가 정의하는 영역에만 적용됩니다. 더욱 중요한 점은 Base Color가 금속성 Material에서 오는 것이 아니라 페인팅 Layer 자체에서 가져온다는 것입니다.

하지만 아직 설정이 끝난 것은 아닙니다.
Metallic 표시 모드로 전환해 보면 로고의 흰색 영역에만 금속성이 적용된 것을 확인할 수 있습니다. 이는 Material이 적용되는 동시에 Texture 자체도 opacity mask로 사용되고 있다는 의미이며, 우리가 원하는 결과는 아닙니다.

이를 해결하려면 Material 마스크 안의 Fill Layer를 선택한 뒤 Anchor의 "Alpha Behavior" 설정을 기본값인 "Keep alpha"에서 "Extract Alpha"로 변경합니다. 완료되었습니다!

이제 Material이 올바르게 적용되며, 이미지의 투명도에 비례하여, 그리고 아래 Layer에 페인팅된 Texture가 위치한 정확한 영역에만 적용됩니다.

Anchor는 페인팅 Layer 전체에 영향을 주므로, 브러시 Texture를 변경하거나 모델에 추가 이미지나 로고를 더 배치하더라도, 해당 Layer의 Anchor에 연결된 Material이 자동으로 새 이미지에도 적용됩니다.
깃발 이미지가 일부만 표시되는 이유는 Texture로 사용한 이미지가 직사각형인데 브러시는 원형이기 때문입니다. Substance로 가져오기 전에 이미지 편집 프로그램에서 부족한 영역에 투명도를 추가하여 이미지를 정사각형으로 만드는 것이 좋습니다.

지금까지는 Texture를 완전히 칠하기 위해 Basic Hard를 사용했지만, 물론 다른 브러시를 사용할 수도 있습니다. 예를 들어 손으로 그린 듯한 효과를 만들거나, 마모로 인해 일부가 지워진 손상된 로고 표현 등을 만들 수 있습니다.
정리해 보겠습니다. Anchor는 Layer의 속성을 다른 Material, Filter 또는 Generator의 마스크로 사용할 수 있게 해줍니다. 이미지를 브러시 스트로크로 적용하면서 원래의 Base Color는 유지하고, 동시에 특정 Material도 부여하고 싶다면, 먼저 Color 채널만 사용하여 Layer에 이미지를 페인팅하고, 해당 Layer에 Anchor를 추가한 뒤, 원하는 Material을 추가하고 Material의 Layer Mask에서 Fill → Grayscale을 통해 Anchor를 참조로 사용하면 됩니다. 필요하다면 Keep Alpha를 Extract Alpha로 변경하는 것도 잊지 마세요.
자, 이번 튜토리얼은 여기까지입니다! 언제나처럼 질문이나 의견, 또는 추가 설명이 필요한 부분이 있다면 영상 댓글에 자유롭게 남겨 주세요. 다음에 또 뵙겠습니다!