본문으로 건너뛰기

컴바이너

이 문서를 읽으면 마스크 여러 장을 한 장으로 줄이는 법과, 아바타 전체를 스캔해 팩을 만드는 자동 최적화를 알 수 있습니다. 팩을 가리키도록 머티리얼을 다시 쓰는 것까지 맡길 수도 있는데, 그건 선택입니다.

만드는 것: 채널이 패킹된 텍스처. 원하면 그것을 가리키도록 머티리얼을 다시 쓰는 것까지

세 가지 수동 기능​

기능하는 일
채널 패킹마스크 4장을 R/G/B/A 채널에 하나씩 담아 한 장으로 만듭니다
마스크 합치기여러 마스크의 흰 영역을 더해 한 장으로 만듭니다
채널 분리패킹된 텍스처를 채널별 그레이스케일 PNG로 풀어냅니다

수동 저장 시 저장 위치 라벨로 어디에 저장되는지 미리 확인할 수 있고, 저장 전 덮어쓰기 확인 옵션으로 매번 물어보게 할 수 있습니다.

→ 채널과 패킹

자동 최적화​

아바타의 마스크를 전부 스캔해 4장씩 묶고 팩 텍스처를 저장합니다. 이어서 각 머티리얼의 슬롯과 채널을 팩에 맞춰 다시 쓸 수도 있는데, 그 단계는 실행 전에 항상 계획을 보여주고 Ctrl+Z 한 번으로 되돌아갑니다.

1. 스캔​

아바타(또는 헤어) 오브젝트를 선택합니다.

참조 머티리얼 수동작
50개 이하선택이 바뀔 때마다 자동 스캔
50개 초과스캔 버튼을 직접 눌러야 합니다

셰이더별 프로파일로 마스크 슬롯을 수집합니다.

프로파일슬롯 수채널 방식
NiloToon35채널 벡터 — 자유 배치
Poiyomi29채널 인덱스 — 자유 배치
lilToon6R 고정 + 알파 베이크

2. 제외​

이미 최적화된 텍스처는 자동으로 제외되고, 목록에 제외 사유가 표시됩니다.

제외 사유설명
채널 패킹됨채널마다 다른 데이터가 들어 있음
비그레이스케일색 정보를 쓰는 텍스처
다중 채널 참조한 텍스처가 여러 채널로 참조되고 있음

필요하면 제외 목록에서 포함을 눌러 다시 넣을 수 있습니다.

3. 그룹 편집​

4장씩 자동 그룹이 제안됩니다. 썸네일과 채널 배지로 확인합니다.

상황처리
해상도가 다름큰 쪽 기준으로 자동 리사이즈
종횡비가 섞임경고 표시
내용이 완전히 같은 중복 파일자동으로 한 장으로 통합 (색상 바리에이션 머티리얼에 효과적)

행을 다른 그룹 카드나 '새 그룹'으로 드래그하거나, 드롭다운으로 옮길 수 있습니다.

4. 실행 계획​

합치기 + 재배정 전에 실행 계획 카드에서 생성될 팩 파일과 덮어쓰기 배지를 확인합니다. 계획을 보지 않고 실행되는 일은 없습니다.

5. 합치기 + 재배정​

팩 텍스처를 저장하고, 각 머티리얼의 텍스처 슬롯 · 채널(R/G/B/A) · 활성화 토글 · 셰이더 키워드를 그 팩에 맞춰 다시 씁니다. 머티리얼을 건드리는 단계지만 한 번의 Ctrl+Z 로 통째로 되돌아갑니다. 팩 텍스처만 받고 연결은 직접 하고 싶다면 수동 채널 패킹을 쓰세요.

결과는 핑 버튼과 함께 화면에 남고, 다시 스캔으로 처음부터 시작할 수 있습니다.

원본 마스크 파일은 삭제되지 않습니다

결과를 확인한 뒤 직접 정리하세요. 툴이 지우지 않는 이유는, 되돌릴 필요가 생겼을 때 원본이 없으면 복구가 불가능하기 때문입니다.

셰이더별 처리 차이​

셰이더처리
NiloToon채널 벡터를 가진 마스크 슬롯 스캔 → RGBA 팩 + 채널 자동 재배정
Poiyomi 9.x…Channel 인덱스를 가진 마스크 슬롯 스캔 → 팩 + 채널 인덱스 재배정
lilToonR 고정 샘플링이라 팩의 R 자리에 우선 배치. 알파 베이크 옵션으로 _AlphaMask를 MainTex 알파에 구워 슬롯을 비웁니다 (lilToon 공식 방식)

셰이더 프로파일 (JSON)​

빌트인 3종(NiloToon · Poiyomi · lilToon) 외의 셰이더를 쓰거나, 빌트인이 놓친 슬롯을 추가하고 싶을 때 씁니다.

항목값
폴더<프로젝트>/MaskMakerProfiles/*.json — Assets 바깥이라 패키지 업데이트에 지워지지 않습니다
빌트인 내보내기NiloToon/Poiyomi/lilToon 기본 프로파일을 JSON 템플릿으로 저장합니다. 복사해서 편집하세요
다시 불러오기폴더를 재스캔합니다
이름 충돌같은 이름의 사용자 프로파일이 빌트인을 그 자리에서 덮어씁니다 (매칭 우선순위 유지). 경고 행으로 표시됩니다

파일 읽기는 최초 스캔 1회 또는 버튼을 누를 때만 일어납니다.

스키마​

{
"name": "MyToon",
"shaderNameContains": "MyToon",
"caseInsensitiveMatch": true,
"enableLilAlphaBake": false,
"slots": [
{
"texProp": "_MyMaskTex",
"channelProp": "_MyMaskChannel",
"kind": "FloatIndex"
},
{
"texProp": "_MyRimMask",
"channelProp": "_MyRimMaskChannelVector",
"kind": "Vector4Dot"
},
{
"texProp": "_MyFixedMask",
"channelProp": null,
"kind": "FixedR"
}
]
}
필드뜻
name프로파일 이름. 빌트인과 같은 이름이면 덮어씁니다
shaderNameContains머티리얼의 셰이더 이름에 이 문자열이 들어 있으면 이 프로파일을 적용합니다
caseInsensitiveMatch대소문자를 무시하고 비교할지
enableLilAlphaBaketrue면 이 프로파일에 매칭된 머티리얼도 lilToon 알파 베이크 후보로 수집합니다
slots[].texProp마스크 텍스처 프로퍼티 이름 (예: _EmissionMask)
slots[].channelProp채널을 고르는 프로퍼티 이름. kind가 FixedR이면 쓰지 않습니다
slots[].kind"Vector4Dot" / "FloatIndex" / "FixedR" 셋 중 하나 (문자열)
프로퍼티 이름은 도움말에서 복사하세요

툴 헤더의 ? 버튼 → 셰이더별 연결표에서 프로퍼티 이름을 클릭하면 선택되어 복사할 수 있습니다. 이 사이트의 셰이더 연결 표에도 같은 이름이 있습니다.

저장​

  • 같은 이름의 파일이 있으면 덮어쓰기 / 새 이름 / 취소를 묻습니다.
  • 결과는 핑 버튼과 함께 화면에 남습니다.