얼굴 SDF와 Face SDF Studio
이 페이지는 SDF 얼굴 그림자 사용을 처음 켜 보는 분을 위한 것입니다. 광원이 돌 때 얼굴 그림자가 애니메이션처럼 넘어가게 만듭니다. 약 7분 걸립니다.
이게 뭔가요
SDF는 얼굴 그림자가 움직이는 순서를 미리 그려 둔 이미지입니다. 광원이 옆으로 돌면 코 옆부터 순서대로 덮이게 됩니다. 얼굴 굴곡을 그대로 쓰는 것보다 훨씬 깔끔한 전환이 나옵니다.
세 가지를 먼저 구분하세요.
| 기능 | 하는 일 | 필요한 것 |
|---|---|---|
| 페이스 셰이딩 모듈 | 얼굴 영역을 몸과 다른 규칙으로 처리 | 얼굴 마스크 또는 프록시 |
| SDF 얼굴 그림자 사용 | 광원 방향에 따라 덮이는 순서를 제어 | 얼굴 SDF 맵 |
| Face SDF Studio | 맵을 만드는 별도 애드온 | 미출시. 이 페이지에 필요 없음 |
언제 쓰나요
- VRChat 월드를 돌아다녀 조명 방향이 예측 불가능할 때.
- Warudo 방송에서 조명 방향을 바꿔 가며 쓸 때.
- 코 그림자가 정면에서는 괜찮은데 측면에서 무너질 때.
30초 만에 켜 보기
- 얼굴 재질을 고르고 페이스 셰이딩 모듈 을 켭니다.
- SDF 얼굴 그림자 사용 을 켭니다.
- 얼굴 SDF 맵 에 준비한 텍스처를 넣습니다.
- 경계 부드러움 을 0.04로 둡니다.
광원을 좌우로 돌렸을 때 그림자가 순서대로 넘어가면 성공입니다. 아무 변화가 없으면 문제 해결로 가세요.
맵을 어디서 구하나요
MingToon은 맵을 만들어 주지 않습니다. 세 가지 경로가 있습니다.
| 경로 | 설명 |
|---|---|
| 외부 제작 | 얼굴 정면 그레이스케일 맵을 직접 그리거나 외주로 만듭니다 |
| 기존 SDF 전용 | 다른 툰 셰이더용 단일 채널 SDF를 그대로 가져옵니다 |
| Face SDF Studio | 별도 미출시 애드온입니다. 나오기 전에는 위 두 경로를 쓰세요 |
SDF 맵 형식
맵 형식 에서 두 방식 중 하나를 고릅니다. 기본값은 Packed RGBA 입니다.
| 형식 | 채널 | 권장 상황 |
|---|---|---|
| Packed RGBA | R은 왼쪽, G는 오른쪽, B는 위, A는 아래 | 상하 조명까지 쓰는 기본 방식 |
| Single Channel Mirrored U | R 한 장. 반대쪽은 좌우를 뒤집어 씁니다 | 기존 단일 채널 SDF를 가져올 때 |
Single Channel Mirrored U 는 상하 방향을 쓰지 않습니다. 위아래 조명 변화까지 필요하면 Packed RGBA 를 고르세요.
준비한 맵을 Inspector에 연결하기
- 페이스 셰이딩 모듈 을 켭니다.
- SDF 얼굴 그림자 사용 을 켭니다.
- 맵 형식 을 준비한 맵에 맞춰 고릅니다.
- 얼굴 SDF 맵 에 텍스처를 할당합니다.
- SDF 좌표 를 고릅니다. UV7을 따로 준비하지 않았다면 Base Texture UV (Legacy) 입니다.
- 좌우 영향 · 상하 영향 · SDF 그림자 양 을 조정합니다.
- 경계 이동 과 경계 부드러움 을 실제 아바타 조명에서 맞춥니다.
맵과 함께 정면 투영 데이터를 준비하지 않았다면 이 값이 좌표를 잘못 읽습니다. 그럴 때는 Base Texture UV (Legacy) 로 바꾸세요.
네 방향 확인하기
맵의 방향이 뒤바뀌면 그림자가 반대로 움직입니다. 조명을 네 방향으로 옮기며 한 번씩 확인하세요.
- 광원을 얼굴 왼쪽에 둡니다. 오른쪽부터 어두워져야 합니다.
- 광원을 얼굴 오른쪽에 둡니다. 왼쪽부터 어두워져야 합니다.
- 광원을 위로 올립니다. 턱 아래부터 어두워져야 합니다.
- 광원을 아래로 내립니다. 이마부터 어두워져야 합니다.
SDF 테스트 표시 를 켜면 조명을 무시하고 맵 자체를 흑백으로 봅니다. 테스트 표시 채널 의 Maximum 이 네 채널의 정렬을 한 번에 보여 줍니다.
자주 만지는 값
| 인스펙터 라벨 | 뭘 바꾸는지 | 추천 시작값 | 올리면 / 내리면 |
|---|---|---|---|
| 경계 부드러움 | 밝음과 그림자가 넘어가는 폭 | 기본값 그대로(0.04) | 올리면 부드럽고, 너무 내리면 압축 노이즈가 드러납니다 |
| 경계 이동 | 그림자가 시작되는 시점 | 기본값 그대로(0) | 올리면 일찍 어두워지고, 내리면 늦게 어두워집니다 |
| 좌우 영향 | 좌우 조명에 반응하는 양 | 기본값 그대로(1) | 0이면 좌우 변화가 사라집니다 |
| 상하 영향 | 상하 조명에 반응하는 양 | 기본값 그대로(1) | 단일 채널 형식에서는 쓰이지 않습니다 |
| SDF 그림자 양 | SDF 어두운 영역의 최종 강도 | 기본값 그대로(1) | 0이면 SDF 그림자가 숨겨집니다 |
| 공용 가로 스케일 | 맵의 가로 크기 | 기본값 그대로(0.5) | 눈과 코의 좌우 폭을 맞출 때 씁니다 |
| SDF 마스크 강도 | 귀·뒤통수를 제외하는 정도 | 기본값 그대로(1) | 0이면 마스크를 무시합니다 |
흔한 문제
좌우가 반대로 움직여요
Packed RGBA 의 R과 G 배치를 확인하세요. R이 왼쪽, G가 오른쪽입니다. 얼굴 정면 방향 (오브젝트 공간) 이 아바타와 맞는지도 확인하세요.
타일링처럼 같은 얼굴이 반복돼요
맵 텍스처의 Wrap Mode가 Repeat입니다. 임포트 설정에서 Clamp로 바꾸세요.
UV7을 골랐더니 좌표가 엉켜요
같은 Renderer의 UV7은 하나만 쓸 수 있습니다. 얼굴 SDF가 UV7을 쓰면 얼굴 노멀 베이크는 그 Renderer를 건너뜁니다. 예전 데이터가 남았다면 밍툰 매니저의 구운 얼굴 노멀 해제 를 실행하세요.
더 자세히
- 얼굴 영역과 프록시 먼저 잡기: 캐릭터 표현
- UV7 소유권 규칙: 메시 UV 베이크
- 얼굴 그림자 방식 고르기: 캐릭터 표현
- 전체 항목과 범위: 캐릭터 표현 레퍼런스