Unity는 모델을 임포트할 때 베이크된 라이트맵에 대한 UV를 계산할 수 있으며 직접 데이터를 제공할 수도 있습니다.
이 페이지는 다음에 관한 정보를 제공합니다.
선택한 컨텐츠 생성 소프트웨어에서 직접 라이트맵 UV를 작성할 수 있습니다. Unity는 이 UV를 소프트웨어의 계산을 위한 입력으로 사용합니다.
이 데이터를 입력하는 위치는 베이크된 라이트맵이나 실시간 라이트맵 또는 둘 모두에 대해 UV를 제공하는지에 따라 다릅니다.
Mesh.uv2
에 베이크된 라이트맵 UV가 있고 실시간 라이트맵에 대한 입력으로 동일한 UV를 사용하려는 경우 어떤 행동도 할 필요가 없습니다. Unity는 베이크된 라이트맵 UV 공유로 폴백합니다.Mesh.uv2
에 베이크된 라이트맵 UV가 있고 실시간 라이트맵에 대한 입력으로 다른 UV를 제공하려는 경우 실시간 라이트맵 UV를 “UV2”라고도 하는 Mesh.uv3을 배치합니다.Mesh.uv2
를 사용할지 또는 Mesh.uv3
을 사용할지 선택합니다.라이트맵에 적합한 UV 세트는 다음 규칙을 준수해야 합니다.
모델 임포트 설정을 사용하여 Unity가 모델용 라이트맵 UV를 자동으로 생성하도록 설정할 수 있습니다.
Generate Lightmap UVs 를 활성화하면 모델 임포트 설정의 Model 탭에 나타나는 설정입니다.
프로퍼티: | 기능: | |
---|---|---|
Hard Angle | 인접 삼각형 사이의 각도(도 단위)가 이 값을 초과하면 삼각형이 하드 에지로 간주되어 경계 부분이 생성됩니다. 0과 180 사이의 값으로 설정할 수 있습니다. 기본값은 88도로 설정되어 있습니다. 180도로 설정하면 모든 에지가 부드러운 에지로 간주됩니다. 이러한 방식은 유기체 모델을 사실적으로 표현하기에 적합하며, 기계적 모델에는 기본값(88도)이 적합합니다. |
|
Angle Error | UV 각도와 소스 지오메트리 각도의 최대 편차(0에서 100까지의 백분율)입니다. 기본값은 8%로 설정되어 있습니다. UV 공간의 삼각형이 원래 지오메트리의 삼각형과 얼마나 다를 수 있는지 설정합니다. 라이트맵에 적용하는 경우 결함을 방지하려면 일반적으로 매우 낮게 설정해야 합니다. |
|
Area Error | UV 영역과 소스 지오메트리 영역 간 차이의 최대값(0에서 100까지의 백분율)을 설정합니다. 기본값은 15%로 설정되어 있습니다. Unity가 삼각형의 면적율을 보존하는 정도를 설정합니다. 값을 높게 설정하면 차트를 더 적게 생성해도 됩니다. 하지만 값을 높게 설정하면 삼각형의 해상도가 변경될 수 있으므로 높은 값으로 인해 발생하는 왜곡 때문에 라이트맵 품질이 저하되지 않는지 확인하십시오. |
|
Margin Method | 팩 마진을 수동으로 지정할지, Unity가 자동으로 계산하도록 지정할지 여부입니다. | |
Manual | 팩 마진을 수동으로 지정합니다. | |
Calculate | 예상되는 라이트맵 해상도 및 오브젝트 스케일에 따라 Unity가 UV 오버랩을 피할 만큼 충분히 큰 팩 마진을 계산합니다. | |
Pack Margin | 메시가 1024x1024 라이트맵 전체를 차지한다는 가정 하에 인접하는 차트 간 마진(픽셀 단위)입니다. 1과 64 사이의 값으로 설정할 수 있습니다. 값이 클수록 마진이 커지지만 차트에 필요한 공간도 커집니다. 기본값은 4픽셀로 설정되어 있습니다. 자세한 내용은 아래의 팩 마진을 참조하십시오. 이 프로퍼티는 Margin Method 를 Manual 로 설정한 경우에만 표시됩니다. |
|
Min Lightmap Resolution | 전체 씬에서 이 메시를 사용하는 메시 렌더러의 최소 라이트맵 해상도(단위당 텍셀 수)입니다. 메시 렌더러의 라이트맵 해상도는 메시 렌더러의 Scale in Lightmap 프로퍼티와 메시 렌더러가 나타나는 씬에 대한 조명 설정 에셋의 Lightmap Resolution 프로퍼티의 조합입니다.자세한 내용은 최소 라이트맵 해상도와 최소 오브젝트 스케일을 참조하십시오. Unity는 이 정보를 사용하여 팩 마진을 계산합니다. 이 프로퍼티는 Margin Method 를 Calculate 로 설정한 경우에만 표시됩니다. |
|
Min Object Scale | 전체 씬에서 이 메시를 사용하는 게임 오브젝트의 최소 변환 스케일입니다. 자세한 내용은 최소 라이트맵 해상도와 최소 오브젝트 스케일을 참조하십시오. Unity는 이 정보를 사용하여 팩 마진을 계산합니다. 이 프로퍼티는 Margin Method 를 Calculate 로 설정한 경우에만 표시됩니다. |
필터링을 허용하기 위해, 라이트맵은 조명 정보를 차트 경계 부근의 텍셀에 포함하므로 라이트맵을 적용하는 경우 조명이 새어나가지 않도록 항상 차트 사이에 어느 정도의 마진을 적용해야 합니다.
라이트맵 해상도에 따라 라이트맵 텍셀 해상도가 정의됩니다. 라이트매퍼는 검정색 에지가 발생하지 않도록 라이트맵의 차트 텍셀 일부를 팽창시키므로, 메시의 UV 차트가 서로 2텍셀 이상 떨어져 있어야만 조명이 새어나가지 않습니다. 팩 마진(Pack Margin) 설정을 사용하여 지오메트리의 UV 차트 사이에 마진을 충분히 확보해야 합니다.
라이트맵 UV 공간에서는 차트 간 패딩이 2텍셀 이상이어야만 UV 오버래핑 및 의도하지 않은 빛샘 현상을 방지할 수 있습니다. 이 그림에서 검정색 공간은 차트 사이의 공간을 나타냅니다.
UV 차트를 너무 가깝게 배치하면 최종 라이트맵에서 크로스 차트 텍셀 블리딩이 발생할 수 있습니다. 차트를 서로 너무 멀리 배치하면 메모리 낭비가 발생합니다. 오브젝트의 이상적인 팩 마진은 할당된 라이트맵 텍셀 수에 따라 다릅니다.
Unity가 메시 렌더러에 사용하는 텍셀 수는 메시 렌더러의 라이트맵 해상도와 변환 스케일에 따라 다릅니다. 적합한 마진을 계산하기 위해 Unity는 이러한 프로퍼티에 대한 예상 최소값을 알아야 합니다.
메시 렌더러의 라이트맵 해상도는 메시 렌더러가 나타나는 씬에 대한 조명 설정 에셋의 Lightmap Resolution
프로퍼티와 메시 렌더러의 Scale in Lightmap
프로퍼티의 조합입니다. 즉 동일한 메시 렌더러가 다른 씬에서 다른 라이트맵 해상도를 사용할 수 있습니다.
다음 단계에 따라 인스펙터를 사용하여 특정 씬에서 메시 렌더러의 라이트맵 해상도를 확인할 수 있습니다.
아래 스크린샷은 해상도가 같지만 UV가 서로 다릅니다. 첫 번째 예시에서는 각도 오차(Angle Error) 가 크고 결과물에 의도하지 않은 결함이 포함되어 있습니다. 두 번째 예시에서는 기본적인 각도 오차(Angle Error)(8%)가 적용되어 있습니다. 메시에 삼각형이 더 많은 경우 각도 오차로 인해 형태가 크게 왜곡될 수 있습니다.
아래 그림에서는 파라미터가 같은 스폿 광원 2개가 실린더 면에 조명을 비춥니다. 오른쪽 실린더 면의 영역 오차(Area Error) 값이 더 커지기 때문에 삼각형이 왜곡되고 해상도가 더 낮아져 조명에 결함이 생깁니다.