각 라이트맵에는 많은 차트(charts) 가 포함되어 있습니다. 런타임 시점에서 Unity는 이러한 차트를 메시 면에 매핑하고, 차트의 조명 데이터를 사용하여 최종 형상을 계산합니다. GPU 샘플링의 동작 방식 때문에 두 차트가 너무 인접해 있으면 한 차트의 데이터가 다른 차트로 흘러 들어갈 수 있습니다. 이런 경우 대개 의도치 않은 앨리어싱, 픽셀레이션 또는 기타 그래픽 결과물(결함)이 발생합니다.
광원 블리딩 현상을 피하려면 차트 사이에 충분한 공간을 두어야 합니다. GPU가 라이트맵을 샘플링할 때 광원 시스템은 샘플링된 지점에서 가장 가까이 있는 텍셀 4개의 최종 샘플 값을 계산합니다(바이리니어 필터링을 사용한다고 가정함). 이 4개의 텍셀은 샘플링된 지점의 바이리니어 “이웃(neighborhood)”이라고 부릅니다. 두 차트가 너무 가까이 붙어 있으면 오버랩이 발생합니다. 즉, 차트 내 한 이웃 지점이 다른 차트의 이웃 지점과 겹치게 됩니다. 아래 이미지에서 흰색 픽셀은 차트 이웃을 표시하고, 빨간색 픽셀은 겹치는 이웃을 표시합니다.
여러 파라미터(예: 라이트맵 해상도, 메시 UV, 임포터 설정 등)가 존재하기 때문에 최적의 차트 배치 및 간격을 결정하기가 어려울 수 있습니다. 따라서 Unity는 다음 섹션에 설명된 것처럼 이러한 문제들을 쉽게 식별할 수 있는 기능을 제공합니다.
오버랩은 세 가지 방식으로 식별할 수 있습니다.
Unity의 콘솔을 주시하십시오. Unity가 겹치는 UV를 감지하면 경고 메시지를 출력하고 영향을 받는 게임 오브젝트 리스트를 표시합니다.
씬(Scene) 뷰에서 UV Overlap 드로우 모드를 사용하십시오(자세한 내용은 씬(Scene) 뷰의 GI 시각화 참조). 이 모드를 활성화한 경우 Unity는 다른 차트의 텍셀과 매우 인접한 차트 텍셀에 빨간색 하이라이트를 추가합니다. 이 기능은 씬 뷰에서 결함을 찾거나 UV 오버랩이 결함을 일으키는지 빠르게 조사해야 할 때 특히 유용합니다.
UV 오버랩은 매우 많은 요소로 인해 발생하므로 완전한 한 가지 해결책은 없습니다. 다음은 가장 일반적으로 사용되는 몇 가지 해결책입니다.
Unity가 자동으로 라이트맵 UV를 생성하는 경우 팩 마진(Pack Margin) 을 높일 수 있습니다. 이렇게 하려면 메시의 임포트 설정에서 Model 탭으로 이동합니다. 이때 Generate Lightmap UVs 을 활성화하고 Advanced 옵션을 펼친 후 Pack Margin 슬라이더를 사용하여 값을 높여야 합니다. 이렇게 하면 차트 간 거리가 증가하여 오버랩이 발생할 확률이 줄어듭니다. 하지만 이로 인해 라이트맵의 총 공간 요구 사항이 증가할 수 있으므로 결함을 피할 만큼의 공간만 늘리는 것이 좋습니다. Unity가 자동으로 생성하는 라이트맵 UV에 대한 자세한 내용은 라이트맵 UV 생성에 관한 문서를 참조하십시오.
라이트맵 UV를 직접 제공하는 경우 모델링 패키지를 사용하여 마진을 추가할 수 있습니다.
전체 라이트맵의 해상도를 높이십시오. 이렇게 하면 차트 간 픽셀 수가 증가하여 블리딩이 발생할 확률이 감소합니다. 단점은 라이트맵이 지나치게 커질 수 있다는 것입니다. 이 작업은 Lightmapper Settings 의 Lighting 탭에서 수행할 수 있습니다.
단일 게임 오브젝트의 해상도를 높이십시오. 이를 통해 겹치는 UV가 있는 게임 오브젝트의 라이트맵 해상도만 높일 수 있습니다. 단, 가능성은 낮지만 이로 인해 라이트맵 크기가 커질 수 있습니다. 게임 오브젝트의 라이트맵 해상도는 Lightmap Settings 의 해당 메시 렌더러에서 변경할 수 있습니다.
2018.1에서 프로그레시브 라이트매퍼 추가됨 NewIn20181
2018–03–28 페이지 게시됨