Version: 2020.2
Generating lightmap UVs
라이트맵 경계 부분 꿰매기

UV overlap

각 라이트맵에는 많은 차트(charts) 가 포함되어 있습니다. 런타임 시점에서 Unity는 이러한 차트를 메시 면에 매핑하고, 차트의 조명 데이터를 사용하여 최종 형상을 계산합니다. GPU 샘플링의 동작 방식 때문에 두 차트가 너무 인접해 있으면 한 차트의 데이터가 다른 차트로 흘러 들어갈 수 있습니다. 이런 경우 대개 의도치 않은 앨리어싱, 픽셀레이션 또는 기타 그래픽 결과물(결함)이 발생합니다.

차트 블리딩으로 인한 그래픽 결함 예제
차트 블리딩으로 인한 그래픽 결함 예제

광원 블리딩 현상을 피하려면 차트 사이에 충분한 공간을 두어야 합니다. GPU가 라이트맵을 샘플링할 때 광원 시스템은 샘플링된 지점에서 가장 가까이 있는 텍셀 4개의 최종 샘플 값을 계산합니다(바이리니어 필터링을 사용한다고 가정함). 이 4개의 텍셀은 샘플링된 지점의 바이리니어 “이웃(neighborhood)”이라고 부릅니다. 두 차트가 너무 가까이 붙어 있으면 오버랩이 발생합니다. 즉, 차트 내 한 이웃 지점이 다른 차트의 이웃 지점과 겹치게 됩니다. 아래 이미지에서 흰색 픽셀은 차트 이웃을 표시하고, 빨간색 픽셀은 겹치는 이웃을 표시합니다.

겹치는 차트 이웃을 표시하는 빨간색 픽셀
겹치는 차트 이웃을 표시하는 빨간색 픽셀

여러 파라미터(예: 라이트맵 해상도, 메시 UV, 임포터 설정 등)가 존재하기 때문에 최적의 차트 배치 및 간격을 결정하기가 어려울 수 있습니다. 따라서 Unity는 다음 섹션에 설명된 것처럼 이러한 문제들을 쉽게 식별할 수 있는 기능을 제공합니다.

식별

There are three ways to identify overlaps:

  • Unity의 콘솔을 주시하십시오. Unity가 겹치는 UV를 감지하면 경고 메시지를 출력하고 영향을 받는 게임 오브젝트 리스트를 표시합니다.

  • 씬(Scene) 뷰에서 UV Overlap 드로우 모드를 사용하십시오(자세한 내용은 씬(Scene) 뷰의 GI 시각화 참조). 이 모드를 활성화한 경우 Unity는 다른 차트의 텍셀과 매우 인접한 차트 텍셀에 빨간색 하이라이트를 추가합니다. 이 기능은 씬 뷰에서 결함을 찾거나 UV 오버랩이 결함을 일으키는지 빠르게 조사해야 할 때 특히 유용합니다.

UV 오버랩 드로우 모드를 사용하는 씬 뷰(왼쪽 상단 드롭다운 참조)
UV 오버랩 드로우 모드를 사용하는 씬 뷰(왼쪽 상단 드롭다운 참조)
  • Use Baked Lightmaps Preview. Select a GameObject and go to the Lighting window and then choose the Baked Lightmaps tab. Double-click the highlighted lightmap, navigate to the Preview window, and select Baked UV Overlap (see dropdown in upper right corner). The Preview window colours problematic texels red in this view.
Lighting 창의 Baked Lightmaps 탭에 있는 Baked Lightmaps Preview
Lighting 창의 Baked Lightmaps 탭에 있는 Baked Lightmaps Preview

해결책

UV 오버랩은 매우 많은 요소로 인해 발생하므로 완전한 한 가지 해결책은 없습니다. 다음은 가장 일반적으로 사용되는 몇 가지 해결책입니다.

  • If you provide lightmap UVs yourself, add margins using your modelling package.
  • If Unity automatically generates the lightmap UVs for a Model, you can tell Unity to increase the pack margin. The simplest way to do this is to set the Margin Method to Calculate, and set an appropriate Min Lightmap Resolution and Min Object Scale. If you prefer to set Margin Method to Manual, you can adjust the Pack Margin value directly. For more information on these settings, see documentation on Generating lightmapping UVs.
  • 전체 라이트맵의 해상도를 높이십시오. 이렇게 하면 차트 간 픽셀 수가 증가하여 블리딩이 발생할 확률이 감소합니다. 단점은 라이트맵이 지나치게 커질 수 있다는 것입니다. 이 작업은 Lightmapper SettingsLighting 탭에서 수행할 수 있습니다.
  • 단일 게임 오브젝트의 해상도를 높이십시오. 이를 통해 겹치는 UV가 있는 게임 오브젝트의 라이트맵 해상도만 높일 수 있습니다. 단, 가능성은 낮지만 이로 인해 라이트맵 크기가 커질 수 있습니다. 게임 오브젝트의 라이트맵 해상도는 Lightmap Settings 의 해당 메시 렌더러에서 변경할 수 있습니다.
이전과 동일한 메시이지만 블리딩 결함이 발생하지 않음
이전과 동일한 메시이지만 블리딩 결함이 발생하지 않음

2018.1에서 프로그레시브 라이트매퍼 추가됨 NewIn20181

Calculate Pack Margin added in 2020.1 NewIn20201

Generating lightmap UVs
라이트맵 경계 부분 꿰매기