캐릭터 Material 개선하기¶
NiloToon의 자동 Material 변환 후에도 결과가 항상 완벽하지는 않아요. 이 페이지에서는 캐릭터 Material의 주요 속성들을 수동으로 편집하여 개선하는 방법을 설명해요.
기본적인 Material UI 옵션에 대해서는 Material UI 옵션을, Surface Type 설정에 대해서는 Surface Type을 참조해 주세요.
Render Face(Cull)¶

URP Lit Shader의 Render Face와 동일하게, NiloToon_Character Shader에도 Render Face 설정이 있어요. 기본 프리셋은 Front이므로, Material의 앞면만 Color Buffer 렌더링에 포함되고, 뒷면만 NiloToon Self Shadow Map 렌더링에 포함돼요.
단면 Mesh이지만 양면 렌더링을 원하는 Material의 경우 (예: 양면으로 렌더링해야 하는 단면 스커트나 의상), Render Face 프리셋을 Both로 변경할 수 있어요.
주의
스커트나 의상 Material의 NiloToon Self Shadow Map이 깨져 보이거나 불완전한 경우 (그림자 영역에 큰 구멍이 있거나 그림자가 완전히 보이지 않는 경우), Render Face = Both로 설정해 보세요. 이렇게 하면 완전한 그림자가 렌더링되어 대부분의 NiloToon Self Shadow Map 문제가 해결돼요. 이는 NiloToon Self Shadow Map이 Shadow Acne을 줄이기 위해 기본적으로 뒷면만 렌더링하기 때문이며, Mesh가 폐쇄형 3D Mesh라는 가정이 있으므로 스커트 같은 단면 Mesh에서는 수동으로 RenderFace를 Both로 편집해야 해요.
수정 전: RenderFace Preset = Front (스커트 그림자 및 뒷면이 올바르게 렌더링되지 않음)

수정 후: RenderFace Preset = Both (스커트 그림자 및 뒷면이 올바르게 렌더링됨)

Classic Outline¶
중요한 옵션이에요. 최소한 Width는 설정해 주세요!
Width¶
Outline이 보이지 않는 경우, 모든 Material의 Classic Outline 섹션에서 Width(extra)가 충분히 큰지 확인해 주세요. Width(_OutlineWidth)는 이전 Shader에서 Material에 저장된 값을 유지하므로, 다른 Toon Shader (예: RealToon/Poiyomi)에서 NiloToon Shader로 전환할 때 유지된 Width 값이 직접 사용할 수 없는 경우가 있어요.

텍스처로도 Width를 제어할 수 있어요.

특정 영역의 Outline을 숨기거나 줄이는 것이 중요해요:
| 영역 | 권장 Width |
|---|---|
| 눈 | 0% - 절대로 눈에 Outline을 표시하지 마세요! |
| 입과 이빨 | 0~20% |
| 머리카락 Outline 아티팩트 | 0% (3D 모델러의 머리카락 제작 방식에 크게 의존) |
| 손가락 | 50% |
| 앞머리 | 50% |
| 작은 액세서리 | 더 작은 Width |
ZOffset¶
보기 싫은 Outline 아티팩트를 숨기고 싶다면, Classic Outline의 Maskable ZOffset을 증가시켜 볼 수 있어요. Mask Map을 사용하여 ZOffset을 적용할 위치를 제어할 수 있어요.

Material에 이상한 Rim Light 선이 보이는 경우:

Rim Light fix dotted line artifacts를 활성화할 수 있어요. 렌더링이 느려지지만 문제를 해결할 수 있어요.

Continuous Outline¶
Outline 문제가 계속 있다면, High Quality Continuous Outline(_OutlineUseBakedSmoothNormal)을 비활성화해 볼 수 있어요.

이 옵션을 끄면 Outline이 항상 올바르게 렌더링되지만, 폴리곤 모서리에서 보기 싫은 끊어진 Outline이 나타날 수 있어요 (예: 끄면 cube2와 같이 표시됨).

GuiltyGear CEDEC2024 참고사항¶
CEDEC 2024에서 Outline 개선에 관한 발표가 있었어요. Outline Material을 설정할 때 유용할 수 있어요. NiloToon은 이 발표의 모든 기능을 Material의 Classic Outline 그룹에서 지원해요.
요약:
- NiloToon_Character Shader는 카메라까지의 거리에 따라 Outline Width를 자동 조정해요 (특정 거리에서 클램핑되어 너무 두꺼운 Outline을 방지)
- NiloToon_Character Shader는 FOV에 따라 Outline Width를 자동 조정해요
- Vertex Color나 텍스처의 0~1 값으로 Material Outline Width를 조정할 수 있어요 (눈/이빨/작은 오브젝트 Outline 숨기기에 적합)
- Vertex Color나 텍스처의 0~1 값으로 Material Outline ZOffset을 조정할 수 있어요 (머리카락, 입, 팔/다리 스킨, 동적 애니메이션 의상의 나쁜 Outline 숨기기에 적합)
참고
슬라이드 끝부분의 "closing outline" 방법은 특정 Vertex에서 Outline Width를 수동으로 줄여 Outline을 "닫아" 떠다니는 Outline을 방지하는 거예요. 시간이 많이 걸리고 기술이 필요하지만, Classic Outline의 최상의 결과를 만들 수 있어요. 실무에서는 쉽지 않아 매우 소수만 이 작업을 하지만, 최고 품질의 Outline을 목표로 한다면 보이는 떠다니는 Outline에 대해 이 작업을 할 수 있어요.
Eyeglasses¶
Eyeglasses Material은 기본 그림자 렌더링이 안경에 이상적이지 않기 때문에 NiloToon에서 특별한 관리가 필요해요.
2D Shadow¶
안경의 경우, NiloToon은 기본적으로 얼굴에 2D Shadow를 드리워요.

대부분의 경우 안경에 의한 이 2D Shadow가 얼굴에 렌더링되는 것을 원하지 않아요. 시청자는 Live2D 이미지와 비교할 때 얼굴의 비정상적인 그림자에 매우 민감해요.
안경에 의해 드리워지는 2D Shadow를 줄이거나 제거하려면 안경 Material (얼굴 Material이 아님)에서 다음을 설정하세요:
- Is Face? 활성화
- Is Face? > Face Normal fix를 0으로 편집

그러면 안경에 의한 2D Shadow가 제거되거나 크게 감소해요.

참고
위 안경 Material 설정은 안경 Material을 얼굴의 일부로 취급하지만, Is Face? > Face Normal fix가 0이므로 NiloToon은 안경의 조명 법선을 편집하지 않아요. 따라서 안경은 2D Shadow를 적게 또는 전혀 투사하지 않으면서도 법선 수정 없이 평소처럼 셰이딩을 렌더링해요.
Classic Outline (안경)¶
안경 Material에 Classic Outline이 활성화된 경우, 안경 Material이 이제 IsFace로 간주되므로 Classic Outline의 기본 ZOffset이 더 커져 일부 Outline이 보이지 않게 돼요.

이 경우 안경 Material의 Classic Outline > Maskable Z Offset > Z Offset (Face)을 0.02에서 0.0001로 편집하면 안경 Outline이 다시 표시돼요.

실무 팁
실무에서는 안경 Material의 Classic Outline을 비활성화하거나 매우 작고 보수적인 Outline Width를 사용하는 것이 좋아요. 시청자는 Live2D 이미지와 비교할 때 얼굴의 비정상적인 Outline에 매우 민감해요.
| 설정 | 결과 |
|---|---|
| Outline Width 0.1 (위험할 수 있음) | ![]() |
| Outline Width 0.05 (더 안전함) | ![]() |
| Outline 없음 (100% 안전) | ![]() |
RimLight+Shadow 2D¶
손과 손가락, 장갑, 작은 액세서리와 같은 오브젝트의 경우 2D Rim Light가 적합하지 않을 수 있어요.

더 얇고 불균일한 Width의 Rim Light가 선호되는 Material, 특히 손, 손가락, 장갑에 대해서는 3D Rim masks를 활성화하는 것을 강력히 권장해요:
- RimLight+shadow2D > Rim Light 2D > Setting > Advanced > Rim Light 3D Rim mask

이 설정은 대부분의 경우 더 자연스러운 Rim Light를 생성해요. 보통 최소한 손, 손가락, 장갑에 대해 활성화해요.

Alpha Clipping¶
BaseMap에 Alpha Clipping용 Alpha 데이터가 포함된 경우, Alpha Clipping 토글을 활성화할 수 있어요.

또는 (Cutout) 접미사가 있는 새로운 Surface Type을 선택할 수 있어요.

Z Offset (눈썹)¶
참고
이 단계는 선택 사항이며, 원하는 아트 스타일에 따라 달라요.
Material이 눈썹 Material인 경우 ZOffset을 약 -0.03 이상으로 드래그하면 눈썹이 머리카락 위에 렌더링돼요.

Shadow Color¶
중요한 설정이에요!
기본 그림자 색상이 마음에 들지 않는 경우, Shadow Color 그룹에서 그림자 색상을 제어할 수 있어요.
비스킨 및 비얼굴 영역의 경우:
| 파라미터 | 설명 |
|---|---|
| Tint Color | 그림자 색조 색상 |
| HSV Strength | HSV 조정 강도 |
| H | 색상 (Hue) |
| S | 채도 (Saturation) |
| V | 명도 (Value) |
스킨 및 얼굴 영역의 경우 (빨간색으로 강조된 설정):
| 파라미터 | 설명 |
|---|---|
| Color Preset | 색상 프리셋 |
| Brightness (Skin Override) | 스킨 밝기 오버라이드 |
| Brightness (Face Override) | 얼굴 밝기 오버라이드 |
참고
- 캐릭터의 2D 아트를 색상 참조로 사용하여 적합한 스킨 그림자 색상을 선택하는 것을 강력히 권장해요
- 빨간색으로 강조된 설정은 스킨 및 얼굴 그림자 색상 오버라이드 전용이에요
- Brightness의 일반적인 범위는 0.8~1이에요

보통 Lighting Style과 함께 사용해요. Skin 렌더링 예시와 Shadow Control Volume도 참조해 주세요.
Lighting Style¶
중요한 설정이에요!
기본 Cel 스타일의 그림자가 마음에 들지 않는 경우, Lighting Style 그룹에서 그림자 스타일/부드러움을 제어할 수 있어요. 프리셋을 선택하여 그림자 부드러움을 제어할 수 있어요 (예: 더 많은 그라데이션이 있는 부드러운 그림자를 원하면 더 높은 softness의 프리셋을 선택).
Lighting Style은 Material의 외관을 더 부드럽게 만들고 싶을 때 중요한 기능이에요 (예: 더 부드러운 머리카락 / 스킨 / 모피 / 의상).
기본 Lighting Style (Cel shade):

약간 더 부드러운 Lighting Style (Softness-4):

매우 부드러운 Lighting Style (Softness-9):

참고
Lighting Style의 더 부드러운 그림자 프리셋은 더 사실적인 Material을 만들 때에도 중요해요.
보통 Shadow Color와 함께 사용해요. Skin 렌더링 예시도 참조해 주세요.
Skin 렌더링 예시¶
다양한 Lighting Style과 Shadow Color 조합이 스킨 렌더링에 미치는 영향을 보여줘요.
주의
부드러운 스킨 Lighting Style과 어두운 스킨 Shadow Color를 함께 사용할 때는 매우 주의하세요! 이 조합은 매우 "3D"적이고 때로는 "색상이 지저분한" 결과를 만들어내요. 이는 보통 카와이 / 아이돌 / 애니메이션 스타일 캐릭터와 잘 어울리지 않아요.
| 스킨 시각적 결과 | 시각적으로 안전한가? | 설명 |
|---|---|---|
| 밝은 Shadow Color + Cel Lighting Style | 매우 안전해요. 기본 NiloToon 설정이며, 카와이 / 아이돌 / 애니메이션 스타일 여성 스킨에 매우 잘 작동해요. 남성의 경우 더 어둡고 낮은 채도의 Shadow Color가 선호돼요. | 다양한 프로젝트에서 활용되고 있어요. |
| 밝은 Shadow Color + 부드러운 Lighting Style | 안전하지만 덜 일반적이에요. 비Cel 스타일의 약간 섹시한 매력이 필요한 상황에 적합해요. Shadow Control Volume의 Shadow Tint Color 사용 시 주의가 필요해요. | 다양한 프로젝트에서 활용되고 있어요. |
| 어두운 Shadow Color + Cel Lighting Style | 매우 안전해요. 어두운 환경의 MV와 콘서트에서 매우 일반적이며, 쿨한 테마나 높은 대비가 필요할 때 유용해요. 보통 NiloToonShadowControlVolume의 Shadow Tint Color를 사용하여 캐릭터를 다양한 환경에 맞춰요. | 다양한 프로젝트에서 활용되고 있어요. |
| 어두운 Shadow Color + 부드러운 Lighting Style | 위험! 확신이 없다면 피하세요. 주의 깊게 제어하지 않으면 보통 좋지 않은 결과를 만들어내요. | 일반적으로 나쁜 결과를 만듦 |
용어 참조:
- 밝은 Shadow Color = 스킨 Shadow Tint Color의 HSV에서 Value(V)가 0.8-1, 매우 밝음. 보통 Hue(H)는 빨간색(0) 근처, Saturation(S)은 10-25
- 어두운 Shadow Color = 스킨 Shadow Tint Color의 HSV에서 V가 0.8 미만, 또는 다른 NiloToonShadowControlVolume의 어두운 Shadow Tint Color로 색조가 적용된 경우
- Cel Lighting Style = Softness 프리셋 0-4
- 부드러운 Lighting Style = Softness 프리셋 5-9
2-Pass Transparent¶
단일 Material에 불투명 부분과 Alpha Blending 부분이 함께 있는 경우 (예: 의상, 안경, 머리카락 등):

삼각형 순서에 따라 그리기 결과가 달라져 카메라 시점 각도에 따라 결과가 무작위가 될 수 있어, 특별한 처리 없이는 이 Material을 올바르게 그리기 어려울 수 있어요.
lilToon의 2-pass transparent와 유사한 결과를 만들려면 NiloToonRendererRedrawer 또는 수동 Material 추가를 사용할 수 있어요.
해결 방법¶
-
원본 Material에서 설정:
- SurfaceType = Opaque(Alpha)/Outline 또는 Transparent(ZWrite)/Outline
-
(1단계) Material의 새 Material Variant를 생성하고 설정:
- SurfaceType = Opaque/Outline (Cutout)
- Alpha Clipping의 threshold = 0.99~1
- 1단계의 원본 Material보다 더 이른(더 작은/낮은) Render Queue 편집
-
두 가지 방법 중 선택:
- NiloToonRendererRedrawer를 Renderer에 연결하여 2단계의 Material Variant를 다시 그립니다
- 또는 2단계의 Material Variant를 Renderer의 Material 목록에 수동으로 추가해요
-
완료! lilToon의 2-pass transparent와 유사한 결과가 만들어져요.
원리
[먼저 불투명 부분만 그리기] 2단계의 Material Variant가 alpha ~= 1인 픽셀만 먼저 그리고, alpha < 1인 픽셀은 Alpha Cutout으로 제거해요.
[그런 다음 나머지 Alpha Blend 부분 그리기] 그 후 1단계의 원본 Material을 평소처럼 그려요. Depth Buffer가 이미 2단계의 Material Variant로 채워져 있으므로 올바른 Alpha Blend 그리기 확률이 훨씬 높아져요.
결과에 구멍이 있는 경우¶
렌더링 결과에 구멍이 있다면 ZFighting과 유사한 잘못된 ZTest 결과 때문일 수 있어요.
해결하려면 2단계의 Material Variant에서 ZOffset을 활성화하여 카메라에서 약간 밀어내면, Magica Cloth 같은 도구로 Mesh가 애니메이션될 때 발생하는 대부분의 잘못된 ZTest 문제를 방지할 수 있어요.
수동 Material 추가¶
NiloToonRendererRedrawer 사용 시 문제가 발생하거나 사용이 불가능한 경우, 대상 Material이 Material 목록의 마지막 항목이면 Renderer에 추가 Material을 수동으로 추가할 수 있어요.
렌더링 오류 해결¶
자동 Material 변환 후 다음 중 하나가 발생한 경우:
- 2D Rim Light가 완전히 잘못 보임 (모든 캐릭터 픽셀이 Occlusion 없이 2D Rim Light를 렌더링)
- URP Shadow Caster Pass 누락 (예: 캐릭터가 지면에 그림자를 투사하지 못함)
Material이 Unity FBX Importer나 이전 Shader에 의해 일부 Shader Pass를 자동으로 비활성화한 것일 수 있어요:
- DepthOnly Pass
- ShadowCaster Pass
Debug Mode Inspector에 들어가서 Disabled Shader Passes를 초기화해 보세요.

참고
Unity FBX Importer는 Material이 투명하다고 판단하면 Shader Pass를 비활성화할 수 있지만, 실제로는 Opaque 또는 Opaque(Cutout)로 사용하고 있어 2D Rim Light가 발생하는 경우가 있어요. 이 경우 Material에 Disabled Shader Passes가 있으므로 Debug Mode Inspector에서 수동으로 초기화해야 해요.


