Unity 라이트맵 UV 오버랩 해결
개요
Unity에서 라이트맵 UV는 다양한 차트로 나누어져 있으며, 이러한 차트는 메시 표면에 매핑되어 최종 렌더링을 계산하는 데 사용됩니다. 그러나 차트가 너무 가깝게 배치될 경우, 데이터가 서로 침범하게 되어 그래픽 결함을 일으킬 수 있습니다. 이 문서에서는 UV 오버랩을 식별하고 해결하는 방법에 대해 설명합니다.
UV 오버랩이란?
UV 오버랩은 서로 인접한 두 차트가 데이터로 인해 겹치는 현상을 말합니다. GPU가 샘플링할 때, 가장 가까운 텍셀 4개의 값을 사용하여 최종 색상을 계산하게 됩니다. 이 과정에서 차트가 너무 가까워지면, 한 차트의 텍셀 데이터가 다른 차트로 흘러 들어가게 되며, 이는 일반적으로 픽셀화나 앨리어싱과 같은 결함을 발생시킵니다.
이미지 설명
아래의 이미지에서 흰색 픽셀은 차트 이웃을 나타내며, 빨간색 픽셀은 겹치는 이웃을 표시합니다.
| 차트 이웃 | 겹치는 이웃 |
|---|---|
| 흰색 픽셀 | 빨간색 픽셀 |
UV 오버랩 식별 방법
Unity에서는 UV 오버랩을 식별하기 위해 다음과 같은 방법을 제공합니다:
- Unity 콘솔 경고: 겹치는 UV가 감지되면 Unity 콘솔에 경고 메시지를 출력합니다. 영향을 받는 게임 오브젝트 리스트를 확인할 수 있습니다.
- 씬 뷰에서의 UV Overlap 드로우 모드: 씬 뷰에서 해당 모드를 활성화하면, UV 텍셀에 빨간색 하이라이트가 추가되어 겹치는 것을 쉽게 시각화할 수 있습니다.
- Baked Lightmaps Preview 사용: 게임 오브젝트를 선택하고 라이팅 창의 Baked Lightmaps 탭에서 미리보기 창을 통해 문제 있는 텍셀을 확인할 수 있습니다.
UV 오버랩 해결 방법
존재하는 UV 오버랩 문제를 해결하기 위해 다양한 접근 방법이 있습니다:
- 모델링 패키지에서 마진 추가: 직접 라이트맵 UV를 제공하는 경우, 모델링 도구를 사용하여 마진을 추가합니다.
- Unity 설정 조정: Unity가 자동으로 생성하는 경우, Margin Method를 'Calculate'로 설정 및 Min Lightmap Resolution과 Min Object Scale을 적절히 조정합니다.
- 전체 라이트맵 해상도 증가: 전체 라이트맵의 해상도를 증가시켜 차트 간 픽셀 수를 늘려 블리딩 가능성을 낮추는 방법입니다.
- 단일 게임 오브젝트의 해상도 증가: 특정 게임 오브젝트의 라이트맵 해상도를 높여 겹치는 UV 문제를 해결할 수 있습니다.
활용 및 응용 예제
- 게임 환경 설계: 3D 환경을 설계할 때, 오버랩을 방지하기 위해 각 차트 사이의 간격을 충분히 두어야 합니다.
- 성능 최적화: 라이트맵 해상도를 조정하여 성능을 최적화할 수 있으며, 필요에 따라 예를 들어 복잡한 오브젝트만 개별적으로 조정합니다.
- 시각적 품질 향상: 화면에 나타나는 그래픽 결함을 줄여 게임의 시각적 품질을 향상시킵니다.
이러한 방법들을 활용하여 Unity의 라이트맵 UV를 효과적으로 관리하고, 품질 높은 렌더링을 구현해보세요.