본문으로 건너뛰기

얼굴 SDF와 Face SDF Studio

이 페이지는 SDF 얼굴 그림자 사용을 처음 켜 보는 분을 위한 것입니다. 광원이 돌 때 얼굴 그림자가 애니메이션처럼 넘어가게 만듭니다. 약 7분 걸립니다.

이게 뭔가요​

SDF는 얼굴 그림자가 움직이는 순서를 미리 그려 둔 이미지입니다. 광원이 옆으로 돌면 코 옆부터 순서대로 덮이게 됩니다. 얼굴 굴곡을 그대로 쓰는 것보다 훨씬 깔끔한 전환이 나옵니다.

광원을 옆으로 돌렸을 때 SDF를 끈 얼굴과 켠 얼굴 비교

세 가지를 먼저 구분하세요.

기능하는 일필요한 것
페이스 셰이딩 모듈얼굴 영역을 몸과 다른 규칙으로 처리얼굴 마스크 또는 프록시
SDF 얼굴 그림자 사용광원 방향에 따라 덮이는 순서를 제어얼굴 SDF 맵
Face SDF Studio맵을 만드는 별도 애드온미출시. 이 페이지에 필요 없음

언제 쓰나요​

  • VRChat 월드를 돌아다녀 조명 방향이 예측 불가능할 때.
  • Warudo 방송에서 조명 방향을 바꿔 가며 쓸 때.
  • 코 그림자가 정면에서는 괜찮은데 측면에서 무너질 때.

30초 만에 켜 보기​

  1. 얼굴 재질을 고르고 페이스 셰이딩 모듈 을 켭니다.
  2. SDF 얼굴 그림자 사용 을 켭니다.
  3. 얼굴 SDF 맵 에 준비한 텍스처를 넣습니다.
  4. 경계 부드러움 을 0.04로 둡니다.

광원을 좌우로 돌렸을 때 그림자가 순서대로 넘어가면 성공입니다. 아무 변화가 없으면 문제 해결로 가세요.

맵을 어디서 구하나요​

MingToon은 맵을 만들어 주지 않습니다. 세 가지 경로가 있습니다.

경로설명
외부 제작얼굴 정면 그레이스케일 맵을 직접 그리거나 외주로 만듭니다
기존 SDF 전용다른 툰 셰이더용 단일 채널 SDF를 그대로 가져옵니다
Face SDF Studio별도 미출시 애드온입니다. 나오기 전에는 위 두 경로를 쓰세요

SDF 맵 형식​

맵 형식 에서 두 방식 중 하나를 고릅니다. 기본값은 Packed RGBA 입니다.

형식채널권장 상황
Packed RGBAR은 왼쪽, G는 오른쪽, B는 위, A는 아래상하 조명까지 쓰는 기본 방식
Single Channel Mirrored UR 한 장. 반대쪽은 좌우를 뒤집어 씁니다기존 단일 채널 SDF를 가져올 때

Single Channel Mirrored U 는 상하 방향을 쓰지 않습니다. 위아래 조명 변화까지 필요하면 Packed RGBA 를 고르세요.

준비한 맵을 Inspector에 연결하기​

  1. 페이스 셰이딩 모듈 을 켭니다.
  2. SDF 얼굴 그림자 사용 을 켭니다.
  3. 맵 형식 을 준비한 맵에 맞춰 고릅니다.
  4. 얼굴 SDF 맵 에 텍스처를 할당합니다.
  5. SDF 좌표 를 고릅니다. UV7을 따로 준비하지 않았다면 Base Texture UV (Legacy) 입니다.
  6. 좌우 영향 · 상하 영향 · SDF 그림자 양 을 조정합니다.
  7. 경계 이동 과 경계 부드러움 을 실제 아바타 조명에서 맞춥니다.
SDF 좌표의 기본값은 Baked Front UV7입니다

맵과 함께 정면 투영 데이터를 준비하지 않았다면 이 값이 좌표를 잘못 읽습니다. 그럴 때는 Base Texture UV (Legacy) 로 바꾸세요.

네 방향 확인하기​

맵의 방향이 뒤바뀌면 그림자가 반대로 움직입니다. 조명을 네 방향으로 옮기며 한 번씩 확인하세요.

  1. 광원을 얼굴 왼쪽에 둡니다. 오른쪽부터 어두워져야 합니다.
  2. 광원을 얼굴 오른쪽에 둡니다. 왼쪽부터 어두워져야 합니다.
  3. 광원을 위로 올립니다. 턱 아래부터 어두워져야 합니다.
  4. 광원을 아래로 내립니다. 이마부터 어두워져야 합니다.

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를 건너뜁니다. 예전 데이터가 남았다면 밍툰 매니저의 구운 얼굴 노멀 해제 를 실행하세요.

더 자세히​