SSUNBORI Archive

3d Generalist를 꿈꾸는 Modeler ssunbori 입니다. 생성형 ai, 모델링 툴, 게임 엔진을 주로 공부하고 있습니다.

Artstation 자세히보기

SubstancePainter/STUDY

[Substance Painter] Blender에서 모델 준비하기 & 파일 내보내기

ssunbori 2023. 10. 2. 12:00

목차

    먼저 섭스턴스 페인터로 파일을 내보내기 전에 블렌더에서 어떻게 파일을 정리하고 내보내야 할지를 정리

     

    모델 준비하기

    먼저 블렌더 내에서 모델링한 파일을 불러와준다.

    이제 이 모델을 섭스턴스 페인터에서 쉽게 작업할 수 있도록 3가지 방법으로 묶어줄 수 있다.

    Textrue Sets, Geometry Masks, ID Maps

    모델을 정리하는 3가지 방법

    Texture Sets

    • 블렌더에서 섭스턴스 페인터로 파일을 불러오면 블렌더 내에서 지정한 재질에 기반해서 섭스턴스 페인터에서 자동으로 Texture Set들을 생성해준다. 
    • 블렌더 내 재질 이름이 섭스턴스 페인터 내 Texture Set의 이름으로 지정된다.
    • Substance Painter에서 모델을 정리하는 주요한 방법으로 사용된다.
    • Texture Set는 각각 여러 레이어를 가진 텍스쳐로 사용되고, 내보낼 때도 각 Texture Set별로 Diffuse,Normal,Height맵등이 따로 저장된다.
    • 각 Texture Set별로 UV를 따로 정리해주는 게 좋다.(재질별로 따로따로 한 UV 평면에 저장)

    Geometry Masks

    • 블렌더 내에서 각 부분으로 나뉘어 있는 부분을 Geometry Mask로 활용할 수 있다.
    • 여러 부분으로 나뉜 모델이 있으면 한 레이어에서 부분들을 묶어서 한꺼번에 Paint할 수 있다.

    ID Maps

    • ID Map은 베이크된 텍스쳐로, 각 재질을 더 쉽게 할당할 수 있도록 도와준다.
    • 모델링 프로그램에서 각각 부분별로 다른 Vertex Color를 지정해주거나, 하이폴리 메시에 각 색을 지정해 Bake하는 방식으로 생성할 수 있다.

    섭스턴스 페인터의 자동 UV Unwrap 기능

    섭스턴스 페인터에서 자동으로 UV Unwrap을 해주는 기능을 제공해주기 때문에 굳이 모델링 프로그램에서 UV Unwrap을 해서 넘기지 않아도 된다. 섭스턴스 페인터에서는 ① UV Seam을 자르고, ②UV Island들을 평평하게 만들고, ③UV Island들을 효율적으로 Pack하는 과정을 통해 자동으로 UV Unwrap해준다. 3D 프로그램에서 각 과정을 (Seam을 지정하거나, UV를 평평하게 만들거나, Pack하는 과정) 거친 뒤에 모델을 Import해도 섭스턴스 페인터에서 그 데이터를 활용할 수 있다.

     

    예를 들어, 3d 프로그램에서 모든 재질의 UV를 한 평면에 Pack한 뒤 섭스턴스 페인터에서 모델을 불러와도, 섭스턴스 페인터가 자동으로 재질별로 UV Island들을 Pack해줄 수 있다.

    모든 재질의 UV를 한 평면에 Pack > 섭스턴스 페인터가 자동으로 재질별로 UV Island들을 Pack해줄 수 있다.

    Texture Set을 이용해 블렌더에서 파일 내보내기

    각 부위별로 다른 재질 적용하기

    만약 블렌더에서 각 모델이 부위별로 분리되 어 있다면, 부위별로 Paint할 재질을 다르게 지정해 주면 된다.

    Solid Viewport상에서 재질별로 색상을 다르게 표시하고 싶다면 Material Properties > Viewport Display에서 원하는 색으로 바꿔주면 된다.

    UV맵 Pack하기

    블렌더에서 UV맵 Pack 하기

    1. 전체 메쉬 선택 후 Tab을 눌러 Edit Mode 켜기
    2. (UV 정리를 안했을경우) A를 눌러 전체 선택 후 3D Viewport에 커서를 두고 U > Smart UV Project 클릭
    3. UV 편집 패널에서 전체 선택 후 UV > Pack UV Island를 선택하면 UV들을 Pack할 수 있다.

    섭스턴스 페인터에서 UV맵 Pack하기

    1. Blender에서 메쉬를 FBX 파일로 내보내기
    2. Substance Painter를 열고, 새 프로젝트 생성하기
    3. 파일 선택 후 자동 언랩핑 우측에 [옵션] 버튼 클릭
    4. 시퀀스 언랩에서 원하는 옵션 조절
      (Seam부터 다시 계산해서 Unwrap하고 싶으면 이음새를 모두 다시 계산, Seam은 두고 UV 아일랜드만 다시 펴고 싶으면 UV 아일랜드부터 다시 계산 선택, 패킹도 마찬가지)
    5. 나머지 옵션 선택 후 확인 누르기

    블렌더 VS 섭스턴스 페인터 UV 패킹 비교

    섭스턴스 페인터와 블렌더의 UV 패킹 결과물이 같은지 궁금해서,

    1. Smart UV Project로 UV를 편 뒤, Substance Painter 불러오기
    2. 자동 언랩핑 > 패킹에서 누락된 데이터만 생성 vs 모두 다시 계산

    2가지로 나눠 테스트해봤다.

    패킹 > 누락된 데이터만 생성한 경우

    패킹된 Texture Set끼리 겹치는 부분이 생겼다.
    한 UV Atlas 안에 모든 Texture Set를 넣다 보니 한 Texture당 낭비되는 공간이 많았다.

    패킹 > 모두 다시 계산한 경우

    한 Texture Set의 UV 공간을 잘 활용했고, 각 오브젝트의 크기에 맞게 UV들이 Pack되었다.

    ID Map을 이용해 블렌더에서 파일 내보내기

    한 Texture Set안에 여러 재질을 적용하고 싶다면 ID Map을 이용해 모델을 내보내야 한다.

    이 경우, 블렌더의 Vertex Color를 이용하면 된다.
    예를 들어, 내가 만든 캐릭터의 피부에 한 재질을 적용했는데, 피부 재질이 적용된 부분들 중 머리는 따로 분리해서 재질을 넣고 싶다면, 원하는 부위에 Vertex Color를 입혀주면 된다.

    1. 모델 선택 > Edit Mode로 들어가기
    2. Edit Mode에서 원하는 부위 선택
    3. Ctrl+Tab을 눌러 모드를 Vertex Paint 모드로 변경
    4. 좌측 상단의 Vertex Paint 모드 버튼 오른쪽에 있는 Paint Mask 옵션 활성화
    5. 좌측 상단에서 원하는 색상 지정 후 Paint>Set Vertex Color(단축키Shift+K)를 눌러 해당 부위의 Vertex Color 지정

    원하는 대로 Vertex Color 지정 후 FBX 파일로 내보내고 섭스턴스 페인터에서 불러온다.

    텍스쳐 세트 설정의 메시 맵 베이킹 버튼을 누르고, ID > 색상 소스를 꼭짓점 색상(vertex Color)로 선택해준 뒤 Bake 하면 된다.

    Geometry를 이용해 Substance Painter의 Mask 생성하기

    필요한 재질별로 메쉬가 나뉘어 있다면 그대로 FBX로 내보내고, 그렇지 않은 경우에는

    1. 분리할 메쉬 선택 후 Tab을 눌러 Edit Mode 들어가기
    2. 분리할 메쉬 선택(여러 메쉬가 합쳐져 있을 경우 한 점 선택 후 Ctrl+L을 눌러 연결된 메쉬 한꺼번에 선택 가능) 후 P를 눌러 선택한 메쉬를 분리해준다.
    3. 재질별로 Mesh 들을 분리해준 뒤 FBX 형식으로 Export한다.

    섭스턴스 페인터에서 메쉬를 불러오면, 분리한 메쉬별로 레이어가 생성된다.