라이트맵용 UV 언래핑

스태틱 메시에 대한 UV 를 올바르게 구성하는 방법 안내입니다.

Windows
MacOS
Linux

게임 애셋을 만들 때 텍스처 레이아웃을 위한 UV 구성 프로세스를 자주 거치게 됩니다. 프로젝트에 구운 (스태틱 또는 스테이셔너리) 라이팅 형태를 사용하려는 경우, 라이팅 정보를 저장하는 UV 채널을 구성해야 합니다. 이 UV 를 일컬어 Lightmap UV (라이트맵 UV)라 합니다. 이는 각 스태틱 메시에 고유하게 배치된 UV 차트 (또는 UV 아일랜드)로 구성된다는 점에서 텍스처 UV 와 비슷하지만, 구운 빛과 그림자 정보를 저장할 때 사용된다는 점이 다릅니다. 라이트매핑 프로세스는 배경 아트 제작에서 매우 힘든 영역 중 하나인데, 부작용을 피하기 위해서는 텍스처 UV 와 달리 모델의 각 면이 겹치는 면 없이 라이트맵의 고유 공간에 있으면서, UV 차트 사이에는 충분한 패딩( 또는 여백)이 있어야 하기 때문입니다.

라이트맵은 스태틱 메시의 라이팅을 구운 (또는 미리계산) 라이팅 형태로 입힐 때만 필요합니다. 게임 또는 프로젝트가 다이내믹 라이팅만 사용하는 경우, 스태틱 메시마다 라이트맵을 구성할 필요가 없습니다.

라이트맵 생성

라이트맵을 생성하는 방법은 두 가지입니다.

  • 언리얼 엔진 4 의 라이트맵 자동 생성 툴을 사용합니다.

  • UV 편집 툴을 사용해서 커스텀 UV 를 만듭니다.

라이트맵 UV 자동 생성

커스텀 라이트맵 UV 생성은 시간이 오래 걸릴 수 있으며, 애셋 수가 수천 수만 단위인 경우 특히 더 그렇습니다. 라이트맵을 자동 생성하면 라이트맵 UV 를 빠르게 패킹할 수 있어 구성과 패딩을 수동으로 올바르게 하기 위한 시간을 크게 절약해 줍니다. 이 프로세스는 저희 에픽의 워크플로에도 도입한 상태입니다.

자신의 애셋을 임포트할 때, FBX 임포트 옵션 창에서 (비활성화하지 않으면) 라이트맵 UV 가 자동 생성됩니다.

ImportOptionsGenerateLM.png

텍스처 레이아웃(UV 채널 0)의 UV 에 따라 라이트맵을 자동 생성합니다. 생성되는 라이트맵 UV 는 오류 없는 좋은 라이트맵 요구 사항을 충족하도록, 즉 아일랜드가 겹치거나 래핑되지도 않고, 아일랜드 사이 충분한 패딩을 확보하여 목표 라이트맵 해상도에서 부작용이 생기지 않도록 아일랜드를 리패킹합니다.

스태틱 메시에 대한 라이트맵 UV 가 생성되면, 스태틱 메시 에디터의 Build Settings (빌드 세팅) 중 Lightmap Generation (라이트맵 생성) 세팅으로 조정할 수 있지만, 라이트맵 UV 생성 이후에는 다시 손댈 필요가 없습니다.

StaticMeshEditorGenerateLMSettings.png

이 세팅은 라이트맵 UV 를 생성할 때나 기존 UV 를 리패킹할 때도 언제든 사용할 수 있습니다. 툴은 리패킹 알고리즘을 사용하여 Source Lightmap Index (또는 UV 채널)에 따라 라이트맵을 생성한 다음 Destination Lightmap Index 로 지정된 새 라이트맵에 저장합니다. 이 알고리즘은 지정된 소스 라이트맵 인덱스에서 UV 차트 리패킹은 하지만 프로세스에서 잘라내거나 분할하지는 않습니다. 참고로 라이트맵 UV 를 생성할 때 모델링 소프트웨어 또는 UV 편집 소프트웨어에서 약간의 선행 작업을 하면 UV 차트를 분할한 뒤 임포트하는 식으로 좋은 결과를 얻을 수 있습니다.

추가 정보는 라이트맵 UV 생성 문서를 참고하세요.

커스텀 라이트맵 UV

UE4 에 임포트하는 스태틱 메시 대다수에는 최소한의 노력으로 좋은 결과를 얻을 수 있는 자동 생성 라이트맵 UV 를 사용할 수 있을 것입니다. 그러나 자동 생성 UV 가 적합하지 않아서, 별도의 모델링 소프트웨어나 UV 편집 툴로 커스텀 라이트맵 언랩을 만드는 것이 좋은 경우가 있습니다.

UV 편집 툴의 기능과 생성하려는 애셋 유형에 따라, 다른 애셋보다 디테일에 더 세심한 주의를 기울여야 하는 경우라면 커스텀 라이트맵이 이상적일 수 있습니다. 아래 그림의 Autodesk 3ds Max 와 같은 다수의 UV 편집 툴에 제공되는 다양한 기능으로 UV 차트를 쉽게 펼치고, 모양을 변경하고, 연결하고, 분리할 수 있습니다. 이는 UE4 라이트맵 생성 기능에는 없는 기능입니다.

DCC_UEEditingTools.png

Autodesk 3ds Max UV 편집 툴.

이 글 후반부에 구체적인 결과를 얻기 위한 기본적인 UV 언래핑에 대해 다룰 것이며, 자동 생성 라이트맵 방식과도 같이 사용할 수 있습니다. 미리 확인해 보려면 인접 UV 및 패딩 부분을 참고하세요.

텍스처 UV vs 라이트맵 UV

텍스처 UV 구성은 종종 라이트맵 UV 의 경우보다 최상의 결과를 얻기 위해 다른 방식의 UV 차트 레이아웃이 필요합니다. 라이트맵 레이아웃에는 겹치는 영역이 없어야 하며, 각 UV 차트 사이 패딩이 충분해야 빛샘 현상이 발생하지 않습니다. 텍스처 UV 를 구성할 때는 텍스처를 해당 UV 차트에 매핑하는 방식만 신경쓰면 되기 때문에 이러한 규정이 없습니다. 아일랜드가 겹침이나 래핑이 있어도 상관 없는 이유는, 텍스처를 타일링할 수도 있고 지오메트리 다른 부분에 할당할 수도 있기 때문입니다.

아래 건물 외관을 예로 들어 보겠습니다. 면이 넷인데 같은 텍스처가 각기 다른 면에 매핑되어 있습니다. 각 면마다 별도의 UV 공간을 사용하는 대신, 하나의 텍스처를 만들어 각 면의 UV 차트를 서로 위에 겹쳐 놓았습니다. 그러면 텍셀 밀도를 적게 차지하므로 해상도를 높일 필요 없이 모든 면에 하나의 텍스처를 매핑시킨 효율적인 공간 활용이 되는 셈입니다.

라이트맵 레이아웃의 경우 (오른쪽), 모든 면이 별도의 UV 공간을 차지하여 라이트를 제대로 구울 수 있도록 했습니다. 일부는 분리하고 일부는 다른 차트 사이에 패딩을 충분히 둬서 부작용과 빛샘 현상을 줄였습니다.

TextureUVLayout.png

텍스처 UV 레이아웃

LightmapUVLayout.png](LightmapUVLayout.png " Lightmap UV Layout")

라이트맵 UV 레이아웃

인접 UV 및 패딩

라이트맵 UV 를 구성하는 한 가지 방법은 지오메트리 인접 (또는 연결) 그룹을 만드는 것입니다. 부드러운 라이팅 결과를 내기 위해서는, 지오메트리를 제대로 표현할 수 있는 방식으로 면을 연결하는 것이 이상적입니다.

예를 들어, 아래 UV 차트는 지오메트리 정면과 측면이 전부 하나의 UV 차트로 연결되어 있고 윗면은 별도의 아일랜드로 분리되어 있습니다.

LightmapUV_Padding.jpg

스태틱 메시 지오메트리에 대한 UV 차트입니다.

언래핑 이후, UV 차트 사이 최소한의 패딩은 있어야 빛이나 그림자가 새어나가는 부작용을 방지할 수 있습니다. DXT 텍스처 압축은 4x4 텍셀 블록 단위로 작동하므로 새어나가는 부작용 방지를 위해서는 최소 4 텍셀은 필요합니다.

커스텀 라이트맵을 만들 때 그리드에 적합한 텍셀 여백(Texel Grid Spacing)을 구하는 공식은 다음과 같습니다.

1 / Target Lightmap Texture Resolution = Texel Grid Spacing

해상도가 64 인 경우 위 공식의 예제입니다:

1 / 62 = 0.0161290323

UE4 는 패딩에 1 픽셀을 사용합니다. 즉 그리드에 UV 차트를 수동 스냅하기 위한 값을 알아낼 때는 한 쪽마다 1 씩 빼야 한다는 뜻입니다 (64 - (1 * 2) = 62). 자동 생성 UV 를 사용하면 적합한 패딩을 두고 패킹합니다.

LightmapUV_Padding_1.jpg

  1. 낭비 UV 패딩

  2. 필수 UV 패딩

라이트맵 UV 가장자리에는 패딩을 추가할 필요가 없습니다. 왜냐면 라이트매스 가 이미 레벨의 라이트맵 텍스처 아틀라스를 합칠 때 빛과 그림자가 새지 않도록 라이트맵 가장자리 주변에 패딩을 두기 때문입니다. 불필요한 패딩으로 UV 공간 낭비를 초래합니다.

UV 공간을 효율적으로 사용하려면 일부 UV 를 강제 설정한 뒤 UV 공간에 맞게 스케일을 조절하면 됩니다.

LightmapUV_Padding_2.jpg

(왼쪽에서 오른쪽으로) 언리얼 엔진의 라이팅만 뷰, 스태틱 메시와 텍스처, 텍스처 UV 레이아웃, 라이트맵 UV 레이아웃 입니다.

라이팅 결과에 영향 없는 깨끗한 인접 표면을 만드는 것이 1:1 스케일보다 중요합니다. 스케일 비율이 1:7 이라 커버 범위가 두 배인 라이트맵이 만들어내는 결과가 아일랜드 스케일이 비균등한 경우보다도 좋습니다. 1:1 비율을 유지해도 너무 얇은 영역은 좋은 결과를 캡처할 수 없어서 라이팅이 제대로 되지 않습니다. 이 예제에서 또 한가지 중요한 점은, 부정적인 내부 (빨강 강조) 부분을 분리시켜 인접 UV 차트에 빛과 그림자 정보를 공유하지 못하도록 해서 인접 부분의 부드러운 라이팅 결과를 살렸다는 점입니다.

라이트맵 UV 예제

다음 예제는 단순, 복합, 유기적 구조의 지오메트리에 대한 커스텀 라이트맵 UV 레이아웃을 보여줍니다. 부드러운 라이팅 결과를 만들고 유지하기 위한 방법을 파악할 수 있습니다.

단순 오브젝트

이 건물 외관은 간단한 모듈식 조각을 나타내며, 언래핑될 때 로우 폴리 지오메트리를 미러링하는 인접 지오메트리의 좋은 예입니다.

TextureUVLayout.png

텍스처 UV 레이아웃

LightmapUVLayout.png

라이트맵 UV 레이아웃

인접 면을 사용하면 UV 공간을 최대한 활용하는 것이 더 쉬워져, 낮은 라이트맵 해상도에서도 거의 완벽한 라이트맵을 구울 수 있습니다. 참고로 분할 UV 차트에 유발되는 이음새나 미묘한 암흑 선도 없습니다.

이미지를 클릭하면 원본을 확인합니다.

복합 오브젝트

인접 UV 관련 경험 법칙을 따르지 않는 경우, 즉 지오메트리가 많거나 부정적인 공간에 엘리먼트가 조금 있는 경우, UV 차트를 분할하고 패딩을 훨씬 더 추가해야 부작용을 방지할 수 있습니다.

스태틱 메시 및 라이트맵 UV 레이아웃

라이트 굽기 결과

난간의 라이트맵을 보면 (가운데 이미지 오른쪽) 난간을 고정하는 수직 조각에 약간의 왜곡이 보입니다. 그 조각의 양쪽 면과 가운데 부분은 강제로 합친 부분입니다. UV 에 왜곡이 있긴 하지만, 범위가 충분해서 좋은 결과를 낼 수 있습니다.

난간의 원형 조각 내부는 앞면과 뒷면이 별도의 인접 아일랜드로 나뉘었습니다. 플레이어가 볼 수 있는 면은 내부 및 외부 면을 그룹으로 묶어 그 영역의 3/4 는 라이팅 결과가 부드럽습니다. 난간 뒷면은 레벨에서 쉽게 볼 수 있는 부분이 아니라 별도의 아일랜드로 만들었습니다. 플레이어에게 보이는 부분에만 집중하는 것이 좋은 결과를 얻는 데 가장 중요합니다.

때로는 라이트맵 UV 에 그리 적합하지 않은 복합 지오메트리가 있을 수 있습니다. 애셋 크기가 중간 정도인 것에 추가로, 부정적인 공간이 많아 복잡도만 더하고 있습니다.

스태틱 메시 및 라이트맵 UV 레이아웃

라이트 굽기 결과

분리된 요소가 너무 많으면 패딩때문에 낭비되는 UV 공간이 많이 생길 수 있습니다. 이 경우 퀄리티를 유지하기 위해서는 라이트맵 해상도를 높이는 것 말고 선택의 여지가 없습니다. 이 예제에서는 약간의 고민 끝에 완벽해 보이지는 않더라도 UV 차트를 적당히 합쳐 라이트맵 해상도를 높이기로 했습니다. 새는 현상은 약간 있겠지만 라이팅 결과를 망칠 만큼 심하지는 않을 것입니다.

메모리 예산에 따라 라이트맵 해상도를 높여 부작용을 줄일 수는 있지만, 퍼포먼스와 최적화를 위해서는 최대한 해상도를 낮추는 것이 좋습니다. 디퓨즈와 노멀 텍스처가 재미난 좋은 머티리얼로도 라이트맵 문제를 숨길 수 있다는 점, 명심하세요.

유기적 오브젝트

둥근 모양이 많거나 디자인이 유기적인 지오메트리의 경우, 포면을 평평하게 투영하고 필요에 따라 UV 를 완화하는 것이 좋습니다.

스태틱 메시 라이트맵 UV 레이아웃

구운 라이팅 결과

유기적인 모양의 경우, 지오메트리를 어디서 나누는 것이 적당할지, UV 차트를 어디서 분리하는 것이 자연스러운 동작에 좋은지 살펴 봅니다. 이렇게 할 때 가장 큰 걱정은 분리된 가장자리가 부드러운 라이팅 결과를 해치지 않는가 입니다. 즉 이 분수의 경우, 분수 상단을 위 아래 두 부분으로 나누고, 중단은 그대로, 하단은 별도의 아일랜드로 만들면 구운 라이팅에 이음새가 적은 가장 적당한 모양이 됩니다. 좋은 경험 법칙이라면 움푹 패인 곳이나 틈이 있는 부분에서 라이트맵 UV 를 분리하는 것입니다.

가운데 열의 UV 차트는 메시 자체같아 보인다기 보다는, UV 공간 효율을 높이기 위해 정돈된 형태입니다. 라이트맵 UV 의 경우, 이렇게 해도 멋지고 부드러운 라이팅 결과를 낼 수 있으니 완전 괜찮습니다.

라이트맵 해상도의 중요성

효율적인 라이트맵은 대부분의 UV 공간을 최대한 효율적으로 채워야 최소한의 해상도로 좋은 라이팅 결과를 얻을 수 있습니다. UV 차트 사이 충분한 패딩은 유지하면서 UV 공간 커버 범위를 극대화하는 것으로 대부분의 라이트매핑 문제를 완화할 수 있습니다.

프로젝트가 데스크톱 플랫폼용으로 제작된 경우, 일반적으로 가용 메모리 예산이 많으므로 더 높은 해상도를 사용해도 됩니다. 그러나 콘솔 및 모바일 플랫폼의 경우, 메모리 예산을 철저히 통제해야 합니다. 예산 범위를 맞추기 위해서는 라이트맵 해상도 퀄리티를 조금 희생하는 것이 일반적입니다.

지오메트리와 그 복잡도에 따라 메시를 작은 조각으로 나누는 것이 라이트맵 고유성은 유지하고 커버하는 범위는 늘리면서 라이트맵 해상도는 낮추는 데 좋을 수 있습니다.

라이트맵 및 세팅 조사

스태틱 메시 에디터

스태틱 메시 에디터에서는 스태틱 메시에 부착된 UV 를 조사하고 별도의 라이트맵 UV 를 생성 하며 해당 메시의 라이트맵 텍스처 해상도를 설정할 수도 있습니다.

UV 오버레이 활성화

툴바의 UV 드롭다운으로 표시할 UV 채널을 선택할 수 있습니다.

SMEditor_EnablingUVView.png

선택하면 UV 채널이 스태틱 메시 에디터 뷰포트에 오버레이로 표시됩니다.

SMEditor_UVOverlay.png

현재 표시되는 UV 채널은 오버레이 위에 나타납니다.

SMEditor_UVOverlayText.png

라이트맵 좌표 인덱스 설정

Lightmap Coordinate Index (라이트맵 좌표 인덱스)는 라이트 빌드 도중 라이트매스 가 라이트맵 텍스처를 생성할 때 이 스태틱 메시에 사용할 UV 채널을 지정할 수 있습니다.

라이트맵 좌표 인덱스 위치는 스태틱 메시 에디터의 General Settings (일반 세팅) 섹션입니다.

SMEditor_LightmapCoordinateIndex.png

UE4 는 현재 라이트맵 채널(UV 채널 1)이 있는 스태틱 메시를 임포트할 때 또는 임포트 도중 라이트맵을 생성할 때 가능하면 적합한 UV 채널 할당을 시도합니다. 그러나 라이트맵 채널이 없는 스태틱 메시 임포트 이후 라이트맵 UV 를 생성하는 경우, 라이트맵 좌표 인덱스에 올바른 UV 채널을 수동 할당해야 합니다.

라이트맵 해상도 설정

Lightmap Resolution (라이트맵 해상도) 옵션으로 라이팅 빌드 도중 라이트매스 가 생성하는 구운 라이트 및 섀도 텍스처에 대한 기본 텍스처 해상도를 설정할 수 있습니다. 이 스태틱 메시의 모든 인스턴스를 레벨에 배치할 때 이 해상도를 사용합니다.

라이트맵 해상도 세팅 위치는 스태틱 메시 에디터의 General Settings (일반 세팅) 아래입니다.

SMEditor_LightmapResolution.png

레벨의 스태틱 메시 라이트맵 해상도는 Overridden Light Map Res (오버라이드된 라이트맵 해상도)를 활성화하고 해상도 값을 입력해서 오버라이드할 수도 있습니다. 이 오버라이드는 스태틱 메시 해당 인스턴스에만 적용됩니다.

StaticMeshDetails_OverrideLM.png

Light Map Resolution (라이트맵 해상도) 또는 Overridden Light Map Res (오버라이드된 라이트맵 해상도)를 생성된 라이트맵 UV 에 사용된 Min Lightmap Resolution (최소 라이트맵 해상도)보다 낮게 설정하면 라이팅 빌드 이후 이음새나 빛샘 현상이 보일 수 있습니다. Min Lightmap Resolution (최소 라이트맵 해상도)는 이 스태틱 메시의 절대 최저 해상도로 설정해야 UV 차트 사이 충분한 패딩을 유지할 수 있습니다.

레벨 뷰포트

Level Viewport (레벨 뷰포트)에서는 다양한 뷰포트로 라이팅 빌드와 라이트맵 해상도 밀도를 다른 스태틱 메시와 비교하며 조사할 수 있습니다. 이 뷰모드는 최종 결과 확인은 물론 라이트맵 및 라이팅 빌드 문제를 해결하는 데도 좋습니다.

라이트맵 밀도 뷰 모드 사용

Lightmap Density (라이트맵 밀도) 뷰 모드는 할당된 라이트맵 해상도의 밀도를 "이상적인" (또는 최대) 밀도 세팅에 따라 레벨의 다른 스태틱 메시 액터와 비교해서 체크 무늬 그리드로 시각화시켜 볼 수 있습니다. 구운 라이팅을 사용할 때 일관된 라이팅을 얻기 위해서는 씬 전반적으로 밀도를 고르게 하는 것이 중요합니다.

ViewMode_LightmapDensity.png

에픽 제작 Infiltrator (잠입자) 데모의 한 장면을 라이트맵 밀도 뷰 모드로 시연한 것입니다.

이 뷰모드 활성화는 레벨 뷰포트에서 뷰 모드 > 최적화 뷰모드 > 라이트맵 밀도 를 선택하면 됩니다.

ViewMode_EnableLightmapDensity.png

활성화하면, 씬에 있는 모든 스태틱 메시의 현재 라이트맵 해상도에 따라 컬러 그리드가 오버레이 표시됩니다.

이상적인 라이트맵 해상도와 레벨의 스태틱 메시에 설정된 라이트맵 해상도의 관계를 나타내는 밀도 색상은 다음과 같습니다.

TexelDensity_1.jpg

TexelDensity_2.jpg

TexelDensity_3.jpg

이상적인 텍셀 밀도 미만

이상적인 텍셀 밀도

이상적인 텍셀 밀도 초과 또는 최대

참고로 모빌리티가 무버블 인 스태틱 메시는 라이트맵 UV 도 그 최적화되 필요치 않기에 라이트맵 밀도 뷰 모드에는 갈색으로 표시됩니다.

기본 밀도는 평균 값으로 시작합니다. 프로젝트에 유용하게 쓰려면 게임의 텍스처 예산에 따라 색 범위를 보다 엄격하게 또는 느슨하게 조정해야 할 수 있습니다. 설정하려면 메인 툴바의 빌드 > 라이팅 정보 아래 Lightmap Density Rendering Options (라이트맵 밀도 렌더링 옵션)을 사용하세요.

EditorBuildOptions_LightmapDensity-1.png

프로퍼티

설명

Ideal Density

이상적인 밀도 - 씬의 오브젝트에 이상적인 텍셀 밀도를 설정합니다. 이상적인 텍셀 밀도는 초록입니다.

Maximum Density

최대 밀도 - 씬에서 밀도가 너무 높다 간주되는 텍셀 최대 밀도를 설정합니다. 이 텍셀 밀도는 빨강입니다.

Color Scale

컬러 스케일 - 라이트맵 밀도 뷰 모드를 사용할 때 씬의 컬러에 적용할 스케일입니다.

Grayscale Scale

회색조 스케일 - IdealMaximum 밀도 값에 따라 씬의 회색조 인수에 밝기 수준에 적용할 스케일입니다.

Render Grayscale

회색조 렌더 - 라이트맵 밀도 뷰 모드에 회색조 모드를 사용합니다.

라이팅만 뷰 모드

Lighting Only (라이팅만) 뷰 모드로는 머티리얼 텍스처 정보 없이 씬의 라이팅만 조사할 수 있습니다. 라이트 빌드 결과를 확인할 때 매우 좋습니다.

ViewMode_LightingOnly.png

이 뷰 모드와 오류 배색 모드를 같이 사용하면 UV 오버랩 또는 래핑으로 인한 씬의 라이트맵 오류를 시각화할 수 있습니다.

월드 세팅

World Settings (월드 세팅) 패널에는 현재 로드된 레벨에만 적용되는 세팅이 들어 있습니다. 라이트맵 관련 추가 세팅도 몇 가지 있는데, 예를 들어 압축해서 메모리를 절약하거나, 라이트맵이 저장되는 패킹된 텍스처 아틀라스 최대 크기를 정하거나, 레벨에 대해 생성된 패킹된 라이트맵 텍스처를 액세스할 수도 있습니다.

WorldSetting_LightmapOptions.png

라이트맵 압축

기본적으로 UE4 는 이미 생성된 라이트맵 라이트맵 텍스처를 압축하여 최적화합니다. Compress Lightmaps (라이트맵 압축) 옵션이 해제된 경우, 패킹된 라이트맵 텍스처 아틀라스는 압축되지 않습니다. 그렇게 하면 메모리 사용량이 크게 (4 배) 증가하지만, 압축 알고리즘으로 인한 부작용을 줄일 수 있습니다.

노멀 맵을 사용하지 않는 표면의 경우, 텍스처 아틀라스에 패킹된 작은 라이트맵에 대해서는 압축 부작용이 보일 수 있습니다. 좋은 텍스처와 노멀 맵을 사용하면 구운 라이팅 결과가 향상됩니다. 라이트맵 UV 에 문제가 있어 라이트맵 해상도를 높이는 경우, UV 차트를 수정해서 UV 공간 내 커버 범위를 확보하면 이런 유형의 압축 부작용이 개선될 수 있습니다.

직사광 영역

대비가 높은 직사광 영역은 압축 부작용이 더 잘보일 수 있습니다. 압축을 비활성화하면, 라이트맵 결과가 부드러워지고 얼룩도 없어지지만 비용이 훨씬 높아집니다.

Compress Lightmaps: 활성화 | Lightmap Resolution: 64

Compress Lightmaps: 비활성화 | Lightmap Resolution: 64

간접광 영역

간접광 영역은 압축 부작용이 잘 보이지 않습니다. 압축을 비활성화하면 결과가 부드러워지긴 하지만, 텍스처와 노멀 맵만 적용해도 눈치 채기 어려울 것입니다.

Compress Lightmaps: 활성화 | Lightmap Resolution: 64

Compress Lightmaps: 비활성화 | Lightmap Resolution: 64

라이트맵 해상도를 높인 직사광 영역

벽 기저부 (바닥 쪽 기둥 사이 중앙) 트림 메시의 라이트맵 해상도를 높인 것만으로도 압축 비활성화 없이 비슷한 결과를 낼 수 있음을 보여줍니다. 원래 라이트맵 해상도를 두 배로 늘린 작은 변화만으로 대부분의 부작용이 제거되고 텍셀 메모리 사용량도 없거나 거의 없습니다.

Compress Lightmaps: 활성화 | Lightmap Resolution: 64

Compress Lightmaps: 활성화 | Lightmap Resolution: 128

패킹된 라이트 및 섀도 맵 텍스처 크기

레벨에서 개별 액터에 대해 라이트맵을 생성하면, 여러 텍스처 아틀라스에 패킹 및 저장됩니다. 액터마다 개별 라이트맵 텍스처를 로드하는 것은 그리 효율적이지 않으며 계속해서 로드하고 언로드하느라 GPU 부담이 늘어날 것입니다.

WorldSettings_PackedLightmap.png

레벨에 사용되는 스태틱 메시 액터의 수와 그 라이트맵 해상도가 사용되는 텍스처 아틀라스의 수를 결정합니다. 라이트맵 해상도가 클 수록 아틀라스에 더 많은 공간을 차지합니다. 텍스처 아틀라스의 크기는 Packed Light and Shadow map Texture Size (패킹된 라이트 및 섀도 맵 텍스처 크기) 옵션에 2 제곱 (512, 1024, 2048, 4096) 값을 입력하여 조정할 수 있습니다.

WorldSettings_PackedLMResolution.png

문제 해결 및 최적화

오류 배색

Error Coloring (오류 배색)은 라이팅 빌드 이후 Map Check (맵 체크) 아래 Message Log (메시지 로그)에 나타나는 경고를 오류가 발생한 라이트맵 위치에 색으로 오버레이 표시합니다.

EnableErrorColoring.png

Use Error Coloring (오류 배색 사용) 옵션이 활성화되면, Lighting Quality (라이팅 퀄리티)를 Medium (중간) 또는 Preview (프리뷰)로 설정해야 결과가 시각화됩니다.

ErrorColoring_LightingQualitySettings.png

라이팅만 뷰 모드를 사용하면 이런 유형의 문제를 찾기가 쉬워집니다.

라이트맵 UV 겹침

Overlapping Lightmap UV (라이트맵 UV 겹침) 경고는 UV 차트가 라이트맵 UV 공간 내 지오메트리 다른 부분과 겹친다는 것을 나타냅니다. 모든 UV 는 라이트맵에 사용되는 경우 UV 공간이 고유해야 합니다. 이런 UV 차트에 대한 오류 배색 오버레이는 주황입니다. 참고로 텍스처 UV 는 이 사항을 준수할 필요가 없습니다.

이미지를 클릭하면 원본을 확인합니다.

UV 겹침 | 빛과 그림자 부작용

UV 겹침 | 오류 배색 오버레이

UV 래핑

Wrapping UV (UV 래핑) 경고는 UV 차트가 0-1 UV 공간 밖에 있음을 나타냅니다. 이런 UV 차트에 대한 오류 배색 오버레이는 초록입니다.

이미지를 클릭하면 원본을 확인합니다.

UV 래핑 | 빛과 그림자 부작용

UV 래핑 | 오류 배색 오버레이

통계 창

Statistics (통계) 창에는 현재 로드된 레벨의 라이팅, 텍스처, 프리미티브에 대한 유용한 정보가 많습니다. 여기에 있는 많은 데이터는 먼저 라이팅을 빌드해야 유용해집니다.

통계 창을 열려면, 메인 메뉴의 편집 > 통계 를 선택합니다.

이미지를 클릭하면 원본을 확인합니다.

좌상단 드롭 다운에서 표시하려는 데이터 유형을 선택합니다.

StatisticsWindowOptions.png

라이팅 빌드 정보

Lighting Build Info (라이팅 빌드 정보)에는 현재 로드된 레벨의 액터 목록과, 그 각각에 대한 라이팅 계산에 얼마나 걸렸는지가 정렬되어 나타납니다. 이 목록은 라이팅 계산에 시간이 오래 걸릴 수도 있는 문제가 있는 메시를 추적하는 데 도움이 됩니다. 예를 들어, 액터와 상호작용하는 씬의 라이트 수나 높은 라이트맵 해상도는 라이팅을 계산하는 데 걸리는 시간에 영향을 줄 수 있습니다.

이미지를 클릭하면 원본을 확인합니다.

스태틱 메시 라이팅 정보

Static Mesh Lighting info (스태틱 메시 라이팅 정보)에는 현재 로드된 레벨에 있는 액터와 그 라이트맵 관련 정보 목록이 정렬되어 나타납니다. 이 목록은 액터의 라이트맵 해상도와 텍스처 메모리 사용량을 빠르게 식별하는 데 도움이 될 수 있습니다.

이미지를 클릭하면 원본을 확인합니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼