본문 바로가기

그래픽스

라이트 매핑( Light Mapping ) #2

https://docs.unity3d.com/kr/2020.3/Manual/Lightmapping.html

 

라이트매핑: 시작하기 - Unity 매뉴얼

Unity 에디터 메뉴에서 Window > Rendering > Lighting 을 선택하여 라이팅 창을 엽니다. 라이트맵을 적용할 메시를 검토하여 라이트맵에 적합한 UV가 있는지 확인합니다. 메시 임포트 설정을 열고 Generate L

docs.unity3d.com

유니티에서 라이트 매핑을 하기 위해서는 몇 가지 사전적인 설정이 필요하다.

 

1. 라이트 세팅

라이트 매핑을 위한 라이트는 Mode 가 Baked 나 Mixed 로 설정 되어야 한다.

Light Mode

Baked는 라이트매핑만을 위한 라이트 이고 Mixed는 리얼 타임 라이트와 라이트매핑에 동시에 영향을 미치는 라이트 모드 이다

 

2. 라이트 매핑 대상 매쉬 설정

메쉬 임포트 설정

라이트맵을 만들기 위한 매쉬 Import 설정에 Generate Lightmap UVs 가 설정 되어 있어야 한다.

라이트맵이 생성 되면 모델을 렌더링 할때 라이트 맵을 위한 UV 좌표가 필요한데 이를 생성하는 옵션이다.

 

생성 후에 각 매쉬의 정보를 살펴 보면

매쉬 정보

 

라이트 맵을 위한 텍스쳐 좌표 UV1이 추가 된걸 확인 할 수 있다.

 

라이트 맵핑을 위한 모델은 씬 상에서 Static으로 설정 되어 있어야 한다. 

Static 설정

 

 

모델을 씬에 매치한뒤 Mesh Renderer 컴포넌트를 살펴 보면 라이트 매핑에 대한 몇가지 옵션을 볼 수 있다.

씬에 배치 된

Contiribute Global Illumination 옵션을 켜주고

라이트 맵에 적용된 GI 효과를 사용하기 위해서

Receive Global Illumination 옵션을 Lightmaps 로 세팅 해준다.

 

Scale In Lightmap 값은 해당 오브젝트에 대해서 라이트 매핑을 얼마나

세밀하게 생성할지에 대한 값이라고 생각하면 편한데

Scene 에서 렌더 모드를 Lightmap Indices

Scene 창에서 렌더 모드를 Lightmap indices 로 설정하면 각각의 매쉬가 얼마나 세분하게 라이트 맵을 생성하는지 확인 할 수 있다.

Scale In Lightmap을 높힐 수록 격자가 조밀 해진다. ( 더 디테일 하게 생성 )

라이트 맵을 한번이라도 생성하지 않은 상태에서는 격자를 확인 할 수 없다.

 

3. 라이트맵 세팅

Window->Rendering->Lighting 창을 열면 다음과 같은 창을 확인 할 수 있는데

 

라이팅 창

 

가장 위에 Lighting Settings 정보가 없다면 New Lighting Setting을 통해 하나 생성해 준 뒤 연결한다.

하단의 Auto Generate는 씬 정보가 변할때 마다 라이트 맵을 갱신해 주는 옵션인데 끄도록 하자.

 

Lighting Mode 는 방법에 따라 3가지 옵션이 있는데

Baked Indirect 는 라이트 맵에 Indirect 광원에 대한 정보만 저장하고 Direct광원은 실시간 라이팅으로 계산해 합성하는 세팅

Subtractive는 두가지다 라이트맵에 저장하는 옵션 Shadowmask는 그림자 정보를 따로 저장 하는 등의 차이가 있다.

 

특별한 효과를 적용할 것이 아니라면 성능을 위해 Subtractive로 설정해서 실시간 연산을 최소화 하는 방법을 추천.

 

만들어질 라이트 맵의 크기와 샘플링 개수 등을 설정 할 수 있는데

Sampling 개수와 Lightmap Resolution이 커질 수록 라이트 맵을 굽는 시간이 급격히 늘어난다.

 

위와 같이 세팅하고 Generate Lighting 을 눌러 라이트 맵이 생성 되는지 확인하고 결과에 따라 값을 수정해나가는 것을 추천

라이트 맵이 생성 되었다면 하단에 생성된 라이트 맵 사이즈와 용량 등을 확인 할 수 있다.

 

만약 생성되지 않는다면 모델에 UV 정보가 없거나 Static으로 세팅 되지 않았거나 baked 로 설정된 라이트 정보가 없는 것.

 

생성된 라이트 맵 정보 확인

 

Scene 뷰에서 렌더 모드를 바꿔서 생성된 라이트 맵 정보를 확인 할 수 있다.

 

만약 라이트맵이 생성 되었는데 모델에 반영이 되고 있지 않다면( 렌더모드 Shaded 설정으로 확인 )

사용하고 있는 모델의 쉐이더가 라이트맵을 지원하지 않는 것이니 사용하고 있는 머테리얼의 쉐이더를

URP/Baked Lit이나 URP를 사용하지 않는다면 Standard Shader 등 Light map을 지원하는 쉐이더로 변경.