콘텐츠로 이동

3D Live/MV 제작 도구

3D Live/Concert MV 프로젝트에서 사용할 수 있는 도구 목록이에요.

DLSS4.5 - AA / 4K Upscale

GPU bound 상태라면, NVIDIA RTX GPU를 사용하는 경우 DLSS4.5를 강력히 권장해요. RenderScale 0.333 ~ 1 범위에서 최고의 upscale + anti-aliasing 도구이며, URP의 Camera AA(FXAA/SMAA/TAA)를 대체해요:

  • Upscaling 없이 사용 시 (RenderScale = 1): DLSS.NativeAA를 '훨씬 나은 TAA'로 사용할 수 있어요
  • Upscaling과 함께 사용 시 (RenderScale = 0.333 ~ 0.833): 주로 4K/8K Game Window로 upscale할 때 사용하며, RenderScale을 낮춰 GPU 성능을 향상시킬 수 있어요
  • MSAADLSS4.5와 함께 사용하여 캐릭터의 Classic Outline을 더 안정적으로 만들 수 있지만, 일반적으로 DLSS4.5 사용 시 MSAA는 불필요해요 (VRAM 부담이 크고 품질 향상은 적음)

추천 에셋

에셋 설명
DLSS4.5 최고 그래픽 결과, RenderScale=1에서 최고 AA. NVIDIA RTX GPU 전용
XeSS2 FSR3보다 나은 시각적 품질, 모든 GPU(Windows x64, DX12 필요)
FSR 3 괜찮은 품질, 모든 GPU 및 플랫폼 (VR & WebGL 제외)
SGSR2 Mobile 모바일용 upscale 도구

Planar Reflection

3D Live 콘서트 스테이지 바닥의 거울과 같은 선명한 반사 렌더링에 주로 사용돼요.

장점:

  • 완벽하게 선명한 반사를 생성할 수 있어요
  • Screen space reflection의 아티팩트가 없어요

단점:

  • 각 평면 표면에 추가 카메라가 필요하여 CPUGPU 성능 비용이 높아요
  • 반사를 흐리게 하면 추가 GPU 성능 비용이 발생해요

추천 에셋:

Screen Space Reflection

3D Live 스테이지 바닥의 거칠거나 흐린 반사 렌더링에 사용돼요. 단일 평면 표면에 국한되지 않으며, 모든 형태의 오브젝트에 사용할 수 있어요.

장점:

  • 낮은 CPU 성능 비용
  • 확장 가능한 GPU 성능 비용
  • 흐린 바닥 반사 생성 가능

단점:

  • 화면에 누락/차단된 정보가 있을 때 반사 아티팩트 발생 (screen space 방식의 한계)
  • 결과가 상당히 노이즈할 수 있음
  • Forward/Forward+에서 Deferred보다 렌더링 비용이 높음

추천 에셋:

Volumetric Light & Fog

3DLive 스포트라이트용 volumetric fog/light가 필요한 경우 사용할 수 있는 솔루션이에요:

에셋 설명
Volumetric Light Beam 스포트라이트에 간단한 cone 효과 메시 추가. 제어가 쉽고 빠른 렌더링. 권장
Volumetric Fog & Mist 2 모든 스포트라이트에 자동으로 volumetric fog 추가. 캐릭터가 스포트라이트를 가릴 때 그림자 효과
Volumetric Lights 2 Volumetric Light Beam과 유사하지만 더 복잡한 옵션 제공
Buto URP용 Volumetric Fog 및 Volumetric Lighting
Lux URP Essentials 가장 빠른 fog shape shader (box/sphere). 배경 gradient fog/light에 사용

캐릭터 픽셀에 대한 additive 효과 제어

NiloToon 캐릭터 픽셀에 대한 additive 효과만 줄이고 싶다면 캐릭터 마스크 섹션을 참조해 주세요.

VFX Graph - 6-way Lighting

콘서트에서 조명에 반응하는 연기 VFX를 만드는 데 매우 강력한 도구이에요.

Light Beam / Laser Performance System

Timeline에서 스포트라이트 회전과 조명 색상 애니메이션을 제어하는 시스템이에요.

Light Timeline Track

간단한 조명 색상 Timeline track만 필요한 경우:

  • Default Playables (무료. 자체 Timeline 도구를 작성하기 위한 좋은 예제 코드)

Material Timeline Track

머티리얼 속성(예: emission)의 Timeline track이 필요한 경우:

LaserLightShader

3DLive 스테이지 조명에 유용해요:

Skylight Window LightShaft Shader

3DLive 스테이지 조명에 유용해요:

Motion Blur

NiloToonMotionBlur Volume은 Unity6의 URP motion blur보다 높은 품질의 대안이에요.

  • 실시간 사용 시, NiloToonMotionBlur Volume이 더 나은 결과를 제공하지만 GPU 비용이 훨씬 높아요
  • 오프라인 영상 렌더링 시, Windows/NiloToon/MotionBlurBaker도 함께 사용하면 완벽한 품질의 motion blur를 생성해요

자세한 내용은 NiloToon Motion Blur 도구를 참조해 주세요.

Utility PostProcess

에셋 설명
Beautify 3 수평 플레어 형태의 bloom 등
SC postprocess 다양한 포스트 프로세스 효과

Beautify 3 효과

Beautify 설정 주의

  • Beautify는 NiloToon의 renderer feature 아래에 배치해야 해요. 그렇지 않으면 extra thick outline 같은 NiloToon 기능이 작동하지 않아요 (Beautify가 stencil buffer 값을 클리어할 수 있기 때문)
  • Beautify는 renderer feature를 추가하는 것만으로도 기본적으로 채도가 약간 증가해요

Bloom with Shape

Glare가 있는 Bloom (예: X 형태 / * Sharp / Star 형태). 스타일라이즈드 광원 bloom과 specular reflection bloom에 적합해요:

World Space GI

HTrace WSGI는 URP에서 가장 안정적인 실시간 GI 솔루션이에요. Screen space GI의 한계가 없으며, 작거나 화면 밖의 emissive 오브젝트도 노이즈/고스팅 없이 정확하게 광원으로 캡처해요.

더 빠른 대안:

  • LUMINA GI (더 빠름. 사실적 스타일이 아닌 GI, 초기 설정이 어려울 수 있음)
  • AdaptiveGI (가장 빠름. 모바일 타겟 시 사용. 성능 중심이지만 GI 품질은 낮음)

Screen Space GI

주로 emissive 머티리얼, directional light, skybox가 있는 씬의 실시간 GI에 사용돼요.

Radiant GI 설정

Radiant Global Illumination을 사용할 경우, Radiant Renderer FeatureNiloToon All In One Renderer feature 위에 배치하여 NiloToonTonemap 순서를 올바르게 유지해 주세요.

Ambient Occlusion

URP SSAO의 대안으로, 느리지만 훨씬 좋은 결과를 제공해요. 캐릭터의 간접 그림자에 적합해요.

  • HTrace: Ambient Occlusion URP (권장. 합리적인 GPU 비용으로 고품질 실시간 AO)
  • NiloToon 캐릭터 픽셀은 AO를 받지/표시하지 않지만, AO를 캐스팅해요
  • 아티팩트 없는 AO가 필요하면 RTAO 옵션을 사용해 주세요 (RTX 카드 필요)

Cloth, Hair, Breast Physics

Mouth AIUEO Animation

노래 오디오(bake) 또는 마이크(실시간)에서 AIUEO 입 모양 애니메이션을 생성해요:

Performant Video Player

Timeline preview + Recorder와 함께 작동하는 영상 플레이어이에요. 주로 3D Live 스테이지 뒤의 대형 스크린에 영상을 재생하는 데 사용돼요.

  • KlakHap (무료. HAP .mov 영상만 지원)

자세한 내용은 VideoPlayer & Recorder 동기화 문제를 참조해 주세요.

UniVRM

.vrm을 캐릭터 prefab으로 가져오는 도구이에요. VRM/MToon shader와 VRM BlendShapeProxy 스크립트를 포함해요.

  • UniVRM (무료, vrm 0.x 및 vrm 1.0 모두 지원)

기타 유용한 도구

카테고리 에셋 설명
테스트 애니메이션 Anime Girl Idle Animations Free 무료 캐릭터 아이들 애니메이션
Lightmap Baking Bakery GPU Lightmapper
IK Animation Final IK 런타임 IK 애니메이션 생성
스테이지 Prefab Stage Constructor 콘서트 스테이지 제작용
Skybox Fantasy Skybox FREE 무료 Skybox
동적 Skybox Enviro 3 런타임 동적 Skybox
FPS Counter Advanced FPS Counter FPS 오버레이
Shader Graph 대안 Amplify Shader Editor Shader Graph에 없는 기능 보완
유리 굴절 Reflect It! URP Glass & Refraction Shader
Hierarchy UI vHierarchy 2 복잡한 씬 정리용
PMX 변환 MMD4Mecanim .pmx를 .fbx prefab으로 변환
Volume 애니메이션 AnimatableVolumeComponent Animation clip으로 Volume profile 제어
아웃라인 대안 Pencil+ for Unity 더 2D/애니메 스타일의 아웃라인 (CPU 솔루션, 실시간 부적합)

캐릭터 마스크 Shader 적용

이 섹션은 HLSL / CG shader 프로그래밍에 대한 기본 지식이 필요해요.

전제 조건

NiloToonBloom 또는 NiloToonTonemapping이 활성화되어 있거나, NiloToonRendererFeature에서 Force Prepass가 활성화되어 있어야 해요.

Force Prepass 설정

그렇지 않으면 NiloToon이 편집하려는 shader용 global RenderTexture _NiloToonPrepassBufferTex를 렌더링하지 않아요.

다른 에셋의 특정 additive 효과가 NiloToon 캐릭터 픽셀에 적용되지 않도록 해야 하는 상황이 있어요. 이러한 효과는 캐릭터를 과도하게 밝게 만들어 좋지 않은 결과를 초래해요.

예를 들어:

  • Volumetric Light Beam / Volumetric Light의 additive lighting이 캐릭터 픽셀에 적용되지 않도록
  • Screen Space / World Space GI의 additive lighting이 캐릭터 픽셀에 적용되지 않도록
  • AmbientOcclusion의 색상 변경이 캐릭터 픽셀에 적용되지 않도록
  • 캐릭터 픽셀에 대한 효과 적용 강도를 제어 (0%~100%)

대상 에셋(NiloToon이 아닌)의 shader 소스 코드를 수정해야 해요. 다음 HLSL 코드를 대상 에셋의 shader에 추가해 주세요:

// 대상 shader의 fragment shader 위 아무 곳에나 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);

// 대상 shader의 fragment shader 내부에 추가
// NiloToon 캐릭터 마스크 RenderTexture 샘플링
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, uv).g;

// 캐릭터 마스크를 사용하여 캐릭터 픽셀에 대한 원치 않는 효과 제거/감소
half NiloToonCharacterAreaReceiveEffectStrength = 0; // 0~1 (0% ~ 100%)
anyAdditiveEffect.rgb *= lerp(1, NiloToonCharacterAreaReceiveEffectStrength, characterArea);

VolumetricLightBeam 수정 예시

Volumetric Light Beam의 경우:

VolumetricLightBeam\Shaders\VolumetricLightBeamSharedHD.cginc > fragShared 함수에서:

// fragment shader 위에 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);

// "return color;" 바로 위에 추가
float2 uv = i.projPos.xy / i.projPos.w;
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, uv).g;
half NiloToonCharacterAreaReceiveEffectStrength = 0; // 0~1 (0% ~ 100%)
color *= lerp(1, NiloToonCharacterAreaReceiveEffectStrength, characterArea);

HTrace SSGI/WSGI 수정 예시

ColorComposeURP.hlsl > "Final Output" pass > FragmentStage 함수에서:

// fragment shader 위에 추가
TEXTURE2D_X(_NiloToonPrepassBufferTex);

// "float3 FinalIndirectLighting = ..." 바로 위에 추가
half characterArea = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_LinearClamp, input.TexCoord).g;
half characterAreaReceiveGIStrength = 0; // 0~1 (0% ~ 100%)
IndirectLighting.rgb *= lerp(1, characterAreaReceiveGIStrength, characterArea);

캐릭터/환경 조명 분리

URP의 Main Light 설계로 인해, 캐릭터와 환경에 단일 Main Light (Directional light)를 사용해야 해요 (분리된 레이어로 2개의 directional light를 사용하지 마세요). 이렇게 해야 환경 오브젝트(예: 바닥)에 올바른 캐릭터 그림자가 캐스팅돼요.

Sun 설정

URP에서:

  1. SunLight(RenderSettings.sun)이 있으면, URP의 Main Light로 사용돼요
  2. SunLight가 없으면, 가장 밝은 directional light가 URP의 Main Light로 처리돼요

Sun Light 설정

NiloToon은 캐릭터를 올바르게 라이팅하기 위해 URP의 Main Light 정보가 필요해요.

NiloVolume을 통한 오버라이드

캐릭터 전용 조명 방향 오버라이드가 필요한 경우, NiloToonCharRenderingControlVolumeOverrideMain Light Direction 섹션에서:

  • Strength를 1로 설정해요
  • UpDownAngle을 다른 값으로 설정해요 (선택)

Override 설정 Override 결과

이렇게 하면 캐릭터에만 조명 방향이 오버라이드되며, 조명 방향은 카메라에 상대적이에요. 카메라 트랜스폼의 자식인 directional light를 상상하면 돼요.

이 설정은 고정된 world space 조명 방향을 원하지 않을 때 유용해요. 예를 들어 게임 실내 환경, VTuber 3D Live, MV에서 캐릭터 조명을 모든 카메라 앵글에서 안정적이고 좋게 유지하고, 얼굴 그림자를 방지하는 데 적합해요.

MainLightOverrider

NiloToonCharacterMainLightOverrider 스크립트는 URP의 directional light를 편집하지 않고도, 게임 오브젝트를 통해 캐릭터의 main light 색상과 방향을 오버라이드할 수 있어요.

MainLightOverrider 설정 MainLightOverrider 결과

NiloToonCharacterMainLightOverrider 게임 오브젝트를 NiloToon 캐릭터에만 영향을 미치는 Directional Light로 취급할 수 있어요.

스크립트가 작동하지 않으면, 다른 Override Timing을 사용해 보세요.

Override Timing 설정

조명 오버라이드 전후 비교 1 조명 오버라이드 전후 비교 2

위 이미지는 NiloToonCharacterMainLightOverrider가 캐릭터의 조명 색상조명 방향만 오버라이드하고, 환경이나 다른 non-NiloToon shader에는 영향을 미치지 않는 것을 보여줘요.