콘텐츠로 이동

캐릭터별 효과

NiloToon의 캐릭터별 효과 기능을 설명해요. BaseMap Override, Dissolve, Dither Fade, Shading Grade Map 등을 다루고 있어요.


BaseMap Override (캐릭터별)

BaseMap Override 설정 BaseMap Override 결과

캐릭터 전체에 BaseMap Stacking Layer를 적용하는 것과 유사하며, 일반적으로 다음을 제어해요.

  • Overlay Map
  • UV
  • Tiling

Dissolve (캐릭터별)

Play Mode에서 각 캐릭터 루트의 NiloToonPerCharacterRenderController를 찾고, Dissolve Amount를 0에서 1로 드래그하면 Dissolve 효과를 확인할 수 있어요.

Dissolve 설정

권장 Mode

다양한 Mode를 시도하여 용도에 맞는 Dissolve 스타일을 찾는 것을 강력히 권장해요. 예를 들어 3D Live 무대에서 새 캐릭터나 새 의상을 소개할 때 다음 Mode를 사용할 수 있어요.

  • World Space Vertical Upward
  • World Space Vertical Downward

Dissolve Mode 선택


Dither Fade (캐릭터별)

Play Mode에서 각 캐릭터 루트의 NiloToonPerCharacterRenderController를 찾고, Dither Fadeout의 Opacity를 0으로 드래그하면 Dither 투명 효과를 확인할 수 있어요.

Dither Fade 설정

요구 사항

Dither 효과의 구멍을 블러 처리하려면 높은 RenderScaleTAA/DLSS가 필요해요.


Dissolve/Dither 대상 Renderer/Material 지정

특정 Renderer 또는 Material만 Dissolve해야 하는 경우 (예: 의상 변경 시 특정 부위만 Dissolve하는 경우) 다음 방법을 사용해 보세요.

Material의 Dissolve 그룹

먼저 NiloToon Material 내부의 Dissolve 그룹을 사용해 보세요. NiloToonPerCharacterRenderController의 설정 없이도 사용 가능해요. 선택한 UV 기준으로 Dissolve하며, 더 쉽게 사용할 수 있고 Material별 애니메이션 결과와 Dissolve Edge 패턴(원하는 패턴 텍스처 자유 사용)을 더 잘 만들어 낼 수 있어요.

Material Dissolve 그룹

이 Material별 Dissolve는 캐릭터가 다른 의상으로 변환될 때 의상 부위/부착물을 하나씩 Dissolve하거나, 전환 가능한 무기를 들고 있는 캐릭터의 무기를 Dissolve하는 데 적합해요.

해결 방법 A (권장)

추가 NiloToonPerCharacterRenderController를 추가하지 않는 방법이에요. NiloToon 캐릭터 Material의 Allow Dissolve?를 마스크로 사용하여 어떤 Material을 Dissolve할 수 있는지 제어해요. 이 Toggle(float)을 런타임에서 커스텀 C# 스크립트로 제어하거나 Material Inspector에서 수동으로 설정할 수 있어요.

예를 들어 재킷 Material만 Dissolve하려면 Play Mode에서 C#으로 다음을 수행해 주세요.

  1. 캐릭터의 모든 Material을 순회하여 Material의 _AllowPerCharacterDissolve를 0으로 설정
  2. 재킷 Material만 _AllowPerCharacterDissolve를 1로 설정
  3. NiloToonPerCharacterRenderController의 Dissolve 슬라이더를 평소처럼 사용 - 1, 2단계 덕분에 재킷 Material만 캐릭터별 Dissolve 효과를 받음

Allow Dissolve 설정

예시 코드

using System.Collections;
using NiloToon.NiloToonURP;
using UnityEngine;

public class DissolveTargetMatExample : MonoBehaviour
{
    public NiloToonPerCharacterRenderController charaScript;

    IEnumerator Start()
    {
        // NiloToon이 Material 인스턴스를 초기화할 때까지 1프레임 대기
        yield return null;

        // 다음 프레임에서 _AllowPerCharacterDissolve 설정
        foreach (var renderer in charaScript.allRenderers)
        {
            foreach (var mat in renderer.materials)
            {
                if (mat.name.Contains("jacket"))
                {
                    mat.SetFloat("_AllowPerCharacterDissolve", 1);
                }
                else
                {
                    mat.SetFloat("_AllowPerCharacterDissolve", 0);
                }
            }
        }
    }

    void Update()
    {
        // 이 줄을 제거하고 평소처럼 Dissolve를 제어할 수도 있어요
        charaScript.dissolveAmount = Mathf.Sin(Time.time * 5f) * 0.5f + 0.5f;
    }
}

이 방법은 Material별 제어가 가능하며 여러 NiloToonPerCharacterRenderController를 사용할 필요가 없으므로 권장되는 방법이에요.

해결 방법 B

이 방법은 Renderer별 제어만 가능하며, 여러 NiloToonPerCharacterRenderController가 필요해요. 실수하기 쉬우므로 권장되지 않아요.

  1. 루트 NiloToonPerCharacterRenderController 스크립트를 복사해 주세요
  2. 대상 Renderer(예: 재킷 Renderer)에 붙여넣어 주세요
  3. 루트 NiloToonPerCharacterRenderController에서 'Auto refill AllRenderers list' 버튼을 클릭해 주세요
  4. 새로 붙여넣은 NiloToonPerCharacterRenderController에서 Character Renderers > All Renderers에 대상 Renderer만 있는지 확인해 주세요
  5. 원래 루트 NiloToonPerCharacterRenderController에서 All Renderers에 재킷을 제외한 모든 자식 Renderer가 포함되어 있는지 확인해 주세요
  6. Play Mode에 진입하면 해당 특정 Renderer에만 개별적으로 컨트롤을 적용할 수 있어요 (예: 재킷만 Dissolve/Dither/Color Tint)

주의

두 NiloToonPerCharacterRenderController의 컨트롤은 서로 독립적이에요. 위 설정 후, 루트 NiloToonPerCharacterRenderController의 Tint Color 컨트롤은 해당 특정 자식 Renderer(예: 재킷)를 더 이상 제어하지 않아요.


Shading Grade Map

Occlusion Map과 유사하지만 동일하지는 않은 Map으로, 유일한 목적은 "Shading Grade Map"으로 Lighting Style의 "Mid Point"를 Offset하는 거예요.

Map 색상 효과
Gray (Linear Gray) 변화 없음
검은색에 가까운 영역 Mid Point를 Offset하여 그림자가 나타나기 어렵게
흰색에 가까운 영역 Mid Point를 Offset하여 그림자가 나타나기 쉽게 함 (Occlusion 효과와 유사)

Shading Grade Map 설정 Shading Grade Map 효과

아래는 Shading Grade Map의 예시예요. NiloToon의 기본 설정은 반전된 색상 Map을 기대하며, Material 내부의 Invert Toggle로 자유롭게 제어할 수 있어요.

Shading Grade Map 예시