본문 바로가기
Unreal

[Unreal] Lightmap, Lightmass가 뭐지?

by imagineer_jinny 2024. 1. 26.

라이트 편집 및 라이트맵 생성 | Epic Developer Community (epicgames.com)

 

라이트 편집 및 라이트맵 생성 | Tutorial

이 단원에서는 디테일 패널에서 라이트를 편집해 봅니다. 그리고 라이트맵이 무엇인지, 이를 어떻게 언리얼 엔진에서 생성 및 편집하는지 학습합니다.

dev.epicgames.com

 
이거 설정에서 한국어 자막 키고 보기
 
 

Lightmap

언리얼 엔진에서 Lightmap은 정적인 조명과 그림자 정보를 3D 모델의 표면에 저장하는 방법입니다. 
Lightmap을 사용함으로써, 언리얼 엔진은 복잡한 조명 계산을 실시간으로 수행할 필요 없이, 미리 계산된 조명과 그림자를 빠르고 효율적으로 렌더링할 수 있습니다.
 
Lightmap의 핵심 개념과 사용 방법은 다음과 같습니다:

  1. 정적 조명: Lightmap은 주로 정적인 (변하지 않는) 조명 환경에 사용됩니다. 이는 게임이나 어플리케이션 실행 중에 조명이 변하지 않을 때 적합합니다.
  2. 텍스처 저장: Lightmap 정보는 2D 텍스처로 저장됩니다. 이 텍스처는 3D 모델의 각 표면에 매핑되어, 빛과 그림자가 어떻게 그 표면에 떨어지는지를 나타냅니다.
  3. 렌더링 성능 향상: 실시간 조명 계산을 줄임으로써, 렌더링 성능이 크게 향상됩니다. 이는 특히 복잡한 장면이나 대규모 환경에서 중요합니다.
  4. 세부 조정 가능: 언리얼 엔진에서는 Lightmap의 해상도 및 기타 세부 사항을 조정할 수 있어, 품질과 성능 사이의 균형을 맞출 수 있습니다.
  5. UV 매핑 중요성: Lightmap을 효과적으로 사용하기 위해서는 모델의 UV 매핑이 잘 되어 있어야 합니다. 이는 Lightmap이 모델의 표면에 올바르게 표시되도록 하는 데 필수적입니다.

언리얼 엔진에서 Lightmap을 사용하면 실시간으로 복잡한 조명 효과를 계산하는 부담을 줄이면서도, 높은 품질의 조명과 그림자 효과를 얻을 수 있어, 특히 VR과 같은 고성능이 요구되는 어플리케이션에서 유용합니다.
 

UV Mapping

UV 맵핑은 3D 모델링에서 텍스처를 3D 객체의 표면에 올바르게 적용하기 위한 과정입니다. 간단히 말해, UV 맵핑은 3D 모델의 각 점을 2D 이미지 표면에 매핑하는 방법을 정의합니다. 이 과정에서 'U'와 'V'는 3D 모델링에서 사용되는 X, Y, Z 축과 구별하기 위해 사용되는 좌표 축의 이름입니다.
UV 맵핑의 주요 개념은 다음과 같습니다:

  1. 좌표계 변환: UV 맵핑은 3D 모델의 표면을 2D 플레인으로 변환하는 과정입니다. 이를 통해 2D 텍스처를 3D 모델의 표면에 적용할 수 있습니다.
  2. UV 좌표: 'U'와 'V'는 각각 2D 텍스처 공간의 가로축과 세로축을 나타냅니다. 이 좌표를 사용하여 3D 모델의 각 점을 텍스처의 특정 위치에 매핑합니다.
  3. 텍스처 매핑: UV 맵은 3D 모델의 각 버텍스(vertex)가 텍스처 이미지의 어느 부분에 해당하는지 정의합니다. 이를 통해 텍스처 이미지가 모델의 표면에 정확하게 표현됩니다.
  4. 세밀한 제어: UV 맵핑을 통해 디자이너는 텍스처가 모델의 특정 부분에 어떻게 표시될지 정밀하게 제어할 수 있습니다. 예를 들어, 특정 패턴이나 로고를 모델의 원하는 위치에 정확하게 배치할 수 있습니다.
  5. 도전 과제: UV 맵핑은 때때로 복잡할 수 있습니다. 텍스처가 늘어나거나 왜곡되지 않도록 올바르게 매핑하는 것은 중요한 기술입니다. 또한, UV 맵핑을 잘못하면 시각적인 문제가 발생할 수 있습니다(예: 텍스처 깨짐, 이음새 보임).

UV 맵핑은 게임 개발, 애니메이션, VR 및 AR과 같은 다양한 3D 그래픽스 분야에서 중요한 역할을 합니다. 예술적인 품질과 세밀한 텍스처 표현을 위해 정교한 UV 맵핑 작업이 필수적입니다.
 
 

Lightmass

Lightmass는 언리얼 엔진에서 사용되는 글로벌 일루미네이션(GI) 시스템입니다. 글로벌 일루미네이션은 실제 세계에서 빛이 상호작용하는 방식을 시뮬레이션하는 과정으로, 직접적인 조명(예: 태양 또는 조명 장치에서 나오는 빛)과 간접적인 조명(예: 벽, 천장, 또는 다른 표면에서 반사되어 오는 빛) 모두를 포함합니다. Lightmass는 이러한 복잡한 빛의 상호작용을 계산하여, 언리얼 엔진에서 제작된 장면이나 게임 레벨에 현실감 넘치는 조명 효과를 제공합니다.
Lightmass의 주요 특징은 다음과 같습니다:

  1. 정적 조명: Lightmass는 주로 정적인 장면과 환경에 사용됩니다. 이는 게임이나 어플리케이션 실행 중에 조명이 변경되지 않는 경우에 적합합니다.
  2. 높은 품질의 조명 효과: Lightmass를 사용하면, 부드러운 그림자, 색상 표현의 부드러운 전환, 그리고 표면 간의 복잡한 빛의 반사 등을 포함한 높은 품질의 조명 효과를 얻을 수 있습니다.
  3. 반사와 색상 전달: Lightmass는 빛이 다른 표면에서 반사될 때 그 색상을 흡수하고 다른 표면에 전달하는 색상 전달(color bleeding) 효과를 계산합니다.
  4. 장면 최적화: Lightmass는 레이 트레이싱과 유사한 방법을 사용하여 조명 계산을 수행하지만, 이 계산은 빌드 시간에 이루어지며, 게임 플레이 중에는 추가적인 계산이 필요하지 않습니다. 이로 인해 런타임 시의 성능이 크게 향상됩니다.
  5. 사용자 정의 가능: 개발자들은 Lightmass의 다양한 설정을 조정하여 원하는 조명 효과와 성능 균형을 맞출 수 있습니다.

Lightmass는 특히 정적인 환경에서 현실적이고 몰입감 있는 조명 효과를 생성하는 데 중요한 역할을 합니다. 게임, 시뮬레이션, 아키텍처 비주얼라이제이션 등 다양한 어플리케이션에서 사용됩니다.
 

영상에서 대충 설명: 궁금하면 다시 보기 + 지피티 찬스
 
 
 

 
 

라이트 기본 속성

 
 

UV 보기

에셋 클릭 -> Ctrl + B

 
UV 클릭

 
보면 채널이 두개가 있음
 
언리얼 엔진에서 UV 채널이 두 개 있는 것은 3D 모델에 다양한 텍스처 및 맵핑 기능을 적용하기 위한 것입니다. 각 UV 채널은 모델에 다른 목적으로 사용됩니다.

  1. UV 채널 0: 이것은 주로 텍스처 매핑에 사용됩니다. 즉, 3D 모델에 색상, 패턴, 물질의 세부 사항 등을 나타내는 텍스처 이미지를 매핑하는 데 사용됩니다. 이 채널은 모델의 모든 표면에 텍스처를 균일하게 적용하는 데 중점을 두고 있으며, 대부분의 경우 가장 중요한 UV 채널입니다.
  2. UV 채널 1 (또는 추가 채널들): 이 채널은 주로 Lightmap의 적용에 사용됩니다. Lightmap은 모델의 표면에 빛과 그림자 정보를 저장하는데, 이 정보는 렌더링 시 실시간 조명 계산을 줄여 성능을 향상시키는 데 사용됩니다. UV 채널 1은 이러한 조명 데이터를 모델에 올바르게 매핑하기 위해 사용됩니다. Lightmap을 위한 UV 매핑은 텍스처 매핑과 다를 수 있으며, 겹치거나 중복되는 영역 없이 최적화되어야 합니다.

이렇게 별도의 UV 채널을 사용하는 이유는 텍스처 매핑과 조명 매핑이 서로 다른 요구 사항을 가지고 있기 때문입니다. 예를 들어, 텍스처 매핑에서는 미적인 측면이 중요하지만, Lightmap 매핑에서는 성능과 정확도가 더 중요합니다. 따라서 두 가지 다른 유형의 매핑을 위해 별도의 UV 채널을 사용하는 것이 효과적입니다.
 

 

라이트맵의 복잡도

 
Alt + 0 누르면 다음과 같이 보이는데 싹다 녹색이여야 함 ( Alt + 4 누르면 원상복귀)
밑은 라이트맵의 복잡도를 나타냄

 
 

 
들어가서
General Settings -> Light Map Resolution을 64로 바꿔준다.
 

 
 
초록으로 돌아온 전등

 
이렇게 해주고 빌드 다시 해주기.
애초에 이거 하기 전에 빌드 먼저 하고 보기!
 
 

Light Map Resolution

 
 

Lightmap Resolution은 Unreal Engine에서 개체의 표면에 정적 라이팅 정보가 얼마나 상세하게 매핑될 것인지를 결정하는 속성입니다. 이 값은 텍셀(Texel) 또는 픽셀 단위로 정의되며, 텍셀은 텍스처 공간 내의 픽셀을 의미합니다. 더 높은 라이트맵 해상도는 더 많은 세부 정보와 더 높은 품질의 그림자를 제공하지만, 이는 더 많은 메모리 사용량과 렌더링 시간을 의미하기도 합니다.

라이트맵 해상도를 조정할 때 고려해야 할 몇 가지 사항은 다음과 같습니다:

  1. 해상도와 품질: 라이트맵 해상도가 높으면 더 세밀한 라이팅과 그림자를 생성할 수 있지만, 너무 높으면 불필요한 메모리를 사용하게 됩니다. 반면에 해상도가 너무 낮으면 표면에 라이팅과 그림자가 흐릿하게 보이거나 블록처럼 보일 수 있습니다.
  2. 메모리 사용량: 더 높은 해상도는 더 많은 메모리를 사용하고, 이는 특히 모바일과 같은 메모리에 제한이 있는 플랫폼에서 문제가 될 수 있습니다.
  3. 렌더링 시간: 라이팅을 베이크하는 데 걸리는 시간은 라이트맵 해상도에 직접적으로 비례합니다. 따라서 해상도를 높이면 빌드 시간이 길어질 수 있습니다.
  4. 텍스처 아틀라스: 라이트맵은 보통 텍스처 아틀라스로 배치되며, 하나의 아틀라스에 여러 개체의 라이트맵이 포함될 수 있습니다. 해상도가 높으면 개체당 더 많은 공간이 필요하기 때문에 전체 라이트맵 아틀라스의 크기가 커질 수 있습니다.
  5. 레벨 디테일(LOD): 개체가 화면에서 멀리 떨어져 있을 때는 높은 해상도의 라이트맵이 필요하지 않을 수 있습니다. LOD 시스템을 사용하여 거리에 따라 라이트맵 해상도를 조정할 수 있습니다.

Unreal Engine에서 라이트맵 해상도를 조정하는 방법:

  1. 개체를 선택하고 디테일 패널을 엽니다.
  2. 스태틱 메시 섹션에서 'Static Mesh Settings'을 찾습니다.
  3. 'Light Map Resolution' 값을 조정하여 라이트맵 해상도를 변경합니다.
  4. 변경사항을 적용하기 위해 라이트를 다시 베이크합니다.

적절한 라이트맵 해상도는 프로젝트의 요구 사항과 타겟 플랫폼에 따라 다를 수 있으므로, 최적의 성능과 품질의 균형을 찾기 위해 실험하는 것이 중요합니다.

 

*텍스처 아틀라스(texture atlas)는 여러 개의 텍스처를 하나의 큰 텍스처 이미지에 결합한 것을 말합니다. 이 기술은 주로 게임 개발과 실시간 렌더링 어플리케이션에서 사용되며, 여러 텍스처를 한 번에 로딩하여 렌더링 성능을 최적화하기 위해 사용됩니다.

텍스처 아틀라스의 주요 이점은 다음과 같습니다:

  1. 배치 최적화: 여러 개체나 요소들이 하나의 텍스처 아틀라스를 공유할 수 있기 때문에, 그래픽 처리 단위(GPU)가 텍스처를 전환할 필요 없이 하나의 텍스처를 사용하여 여러 개체를 렌더링할 수 있습니다. 이는 특히 2D 게임이나 UI 요소에 유용합니다.
  2. 메모리 효율성: 여러 작은 텍스처를 각각 개별적으로 로드하고 관리하는 대신 하나의 큰 텍스처로 관리함으로써 메모리 사용을 효율적으로 관리할 수 있습니다.
  3. 드로우 콜 감소: 드로우 콜은 GPU가 렌더링을 위해 호출하는 명령의 수를 의미합니다. 텍스처 아틀라스를 사용하면 드로우 콜의 수를 줄여 성능을 향상시킬 수 있습니다.

텍스처 아틀라스의 주의사항:

  • 텍스처 필터링: 가까운 텍스처 간의 경계에서 필터링 문제가 발생할 수 있습니다. 이를 방지하기 위해 텍스처 간에 간격을 두거나 경계를 조절할 필요가 있습니다.
  • 메모리 한계: 아틀라스가 너무 커지면 특정 플랫폼의 텍스처 사이즈 제한을 초과할 수 있습니다.
  • UV 매핑: 아틀라스 내의 각 텍스처에 대한 UV 좌표를 정확하게 매핑해야 합니다.

 


언리얼 엔진에서 General Settings의 Light Map Resolution을 256에서 64로 낮추는 이유는 주로 성능 최적화와 리소스 관리와 관련이 있습니다. 이 변경은 다음과 같은 몇 가지 중요한 효과를 가져옵니다:

  1. 메모리 사용 감소: 라이트맵 해상도를 낮추면 각 라이트맵 텍스처가 차지하는 메모리 공간이 줄어듭니다. 이는 전체 게임이나 어플리케이션의 메모리 부담을 감소시켜, 특히 메모리 자원이 제한적인 환경(예: 모바일 장치, 오래된 컴퓨터)에서 중요할 수 있습니다.
  2. 렌더링 성능 향상: 더 낮은 해상도의 라이트맵은 GPU에 대한 부하를 감소시켜 렌더링 성능을 개선합니다. 이는 복잡한 장면이나 대규모 환경에서 프레임률을 높이는 데 도움이 될 수 있습니다.
  3. 빌드 시간 단축: 라이트맵을 빌드하는 데 걸리는 시간도 해상도에 비례하여 감소합니다. 따라서 해상도를 낮추면 전체 라이트맵 빌드 프로세스가 더 빠르게 완료됩니다. 이는 개발 과정에서 반복적인 테스팅과 조정을 보다 신속하게 할 수 있게 해줍니다.
  4. 비주얼 품질 저하: 해상도를 낮추면 조명과 그림자의 디테일이 감소합니다. 이는 더 흐릿하거나 덜 정확한 조명 효과를 초래할 수 있으며, 특히 작은 디테일이 중요한 장면에서 눈에 띄게 될 수 있습니다.
  5. 중요도에 따른 조정: 모든 객체에 동일한 해상도를 적용할 필요는 없습니다. 중요한 객체나 플레이어가 자주 접하는 부분에는 높은 해상도를, 배경이나 덜 중요한 객체에는 낮은 해상도를 적용하여, 성능과 비주얼 품질 사이의 균형을 맞출 수 있습니다.

결론적으로, Light Map Resolution을 256에서 64로 낮추는 것은 성능 최적화를 위한 일반적인 조치입니다. 그러나 이러한 변경이 가져오는 비주얼 품질의 감소를 고려하여, 프로젝트의 요구 사항과 타깃 하드웨어에 맞춰 적절한 해상도를 결정하는 것이 중요합니다.
 
 
 

댓글