본문 바로가기
Unity 강의/Unity Course(2) - 절대강좌! 유니티

[Unity Course 2] 11. 라이트매핑 및 라이트 프로브

by 첨부엉. 2024. 6. 26.
반응형
위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.

 

전역 조명

: 3D 지오메트리에서 직접 광원(Direct Light)과 다른 물체에 반사된 간접 광원(Indirect Light) 및 그림자를 렌더링해 좀 더 사실적인 조명을 구현하는 것

전역 조명 연산처리는 많은 부하를 주기 때문에 대상 하드웨어의 성능에 따라 실시간 연산이 거의 불가능 

 

조명 모드

Realtime 모드

  • 실시간 조명으로 설정하는 것, 씬에 직접 광을 적용하며 매 프레임 조명 연산을 해서 화면을 업데이트 (그만큼 연산 부하가 큼)
  • 실시간 조명은 직접 광원만 적용하고 간접광원과는 관계없음
  • 다른 조명과 연관 없이 단독으로 적용되어 반사광 효과 없어서 실시간 그림자는 검은색으로 표현됨

사용하기 위해서는 라이팅 뷰의 Realtime Lighting 섹션에서 RealTime Global Illumination 옵션에 체크함

예제이기 때문에 따라하지 않는다

 

Mixed 모드

  • 라이팅 뷰의 Mixed Lighting 섹션에 있는 Lighting Mode 속성에 따라 조명 처리 방법이 달라짐
  •  

Lighting Mode 옵션 설명
Lighting Mode 실시간 조명 및 전역 조명의 연산처리
Baked Indirection 간접 광원만 미리 계산하여 베이크
그림자는 베이크 대상에서 제외됨,
Mixed 모드로 설정된 조명은 씬에서 실시간 조명 기능을 유지함
고성능 모바일, 중급 사양의 pc적합
Subtractive 정적인 객체의 직접, 간접 광원과 그림자를 모두 베이크
모바일에 적합함
Mixed 로 설정된 Light 컴포넌트가 실시간 조명 처리 하지 않음
Shadowmask 직접 광원은 실시간 조명으로 처리하고 간접 광원과 Light Probe는 라이트 맵에 저장
그림자는 별도의 텍스처인 섀도 마스크에 저장

 

Baked 모드

  • 런타임 시 조명 연산 처리를 하지 않는 조명
  • 정적인 물체에 전역 조명과 그림자를 생성
  • 동적인 물체의 조명 효과는 라이트 프로프를 통해 적용
  • 베이크 모드의 조명을 스페큘러 조명 효과도 표현할 수 없으므로 리플렉션 프로브를 사용해야됨

 

라이트매핑

: 씬에 배치된 모든 3D 모델에 영향을 미치는 직접 조명, 간접 조명 및 그림자 효과를 텍스처로 미리 만드는 과정을 말함

이 결과로 만들어진 텍스처 파일을 라이트맵(Lightmap)이라 함

라이트맵을 만드는 일련의 과정을 베이크한다라고함

 

**라이트맵은 런타임 시 실시간 렌더링 화면과 오버레이되어 믹싱됨, 런타임 시 전역 조명에 대한 연산 처리를 하지 않고도 높은 품질구현

 

Generate Lightmap UVs 옵션

옵션 체크하기

 

Contribute GI 플래그

라이트매퍼에 그 대상을 알려줘야됨

 

Barrel, Floor, Wall, Stair를 선택하고 인스펙터뷰의 Static 플래그 중 Contribute GI를 체크함

Stair는 하이러키뷰에서 선택하기

 

Contribute GI 플래그를 체크하지 않으면 라이트매핑 대상에서 제외됨

 

라이팅 뷰

Window - Rendering - Lighting을 선택하여 Scene 탭 들어오면 여러가지의 속성

 

속성 설명
Lighting Settings 라이트 매핑 정보를 저장하는 에셋을 지정
Realtime Lighting 실시간 전역 조명 기능의 활성화 여부를 결정
Mixed Lighting 혼잡 조명 기능의 활성화 여부를 결정
 - Baked Global lliumination : 전역 조명을 베이크할 것인지를 결정하는 옵션
 - Lighting Mode :  세 가지 옵션 설정
Lightmapping Settings 라이트매퍼의 주요 옵션 설정
 - Progressive / Enlighten 라이트매퍼를 선택
 - 직접 광원/ 간접 광원의 품질 설정
 - 간접 광원의 바운스 설정
 - 라이트맵의 텍셀 설정
 - 라이트맵의 텍스터 사이즈 설정
 - 라이트맵의 압축 기능 사용 여부 설정
 - Ambient Occlusion 효과의 적용 여

 

한 번도 라이트 맵을 베이킹하지 않았다면 모든 섹션이 비활성화돼 있을 것

 

라이트 매핑 정보를 저장하는 Lighting Settings 에셋을 생성하지 않았기 때문 

새로 생성하고 이름은 씬과 똑같이 변경한다

 

씬 별로 매핑 정보가 다르다면 별도의 라이팅 세팅 에셋을 만들어서 연결해야됨

 

*Environment 탭의 속성

속성 설명
Environment 환경 광원에 대한 설정
 - 스카이박스의 태양 광원의 설정
 - 실시간 그림자의 색상 설정
 - 환경 광원의 소스, 조도, 베이크 모드를 설정하는 옵션
 - 반사 광원의 소스, 조도, 압축 등을 설정하는 옵션
Other Settings 기타 설정 옵션
 - 안개 효과의 사용 여부
 - 헤일로 효과의 사용 여부
 - 플레어 효과의 속성 설정
 - 라이트에 적용할 쿠키를 지정하는 속성

 

유니티는 작업하는동안에 백그라운드로 라이트맵을 베이크 할 수 있음

 

  • Auto Generate 속성을 체크하면 라이트맵을 백그라운드로 베이크함
  • 정보는 캐시에 저장되며 이 캐시를 GI Cache라고 함
  • Preferences 창에서 캐시의 저장 경로와 사이즈를 설정
  • 기본 용량은10GB
  • Custom cache location을 체크하면 별도의 저장경로 지정 가능
  • 캐시에 저장된 라이트맵은 파일로 저장안되고 에디터로만 확인가능
  • 실행 파일에 라이트맵을 배포하려면 꺼야됨

Progressive 라이트매퍼

  • 경로 추적(Path tracing)기반의 라이트매퍼로서 유니티 에디터에서 라이트맵과 라이트 프로브를 점진적으로 베이크하는 기능을 제공
  • Progressive GPU 라이트매퍼는 GPU의 그래픽 가속 기능을 이용하여 좀더 빠르게 라이트매핑
  • 대략적인 결과물을 바로 보여준다는 장점, 중간 결과물에서 확인 가능함
  • 3D 모델마다 개별적 텍셀을 변경하여 라이트맵 해상돌르 높이거나 낮춰서 조명을 베이크 가능 

라이팅 뷰의 Environment

Directional Light 을 잠시 비활성화 해도 스테이지가 보인다는 것은 아직 어떤 광원에 의해 영향을 받고 있다는 의미

아마 skybox의 하늘 빛이 환경 광원으로 작용한 것 

 

Light의 Environment 탭에서 Lighting의 Source가 Skybox로 되어 있어서 은은히 빛이 반영된것

 

 

찰흙 같은 어둠을 표현하기 위해선 Source 속성을 Color 로 변경하고 Ambient Color 를 검은색으로 설정한다.

Environment Reflection 속성은 3D 모델의 표면에 반사 광원의 효과를 설정하는 옵션

기본값인 Skybox의 빛을 Floor에 빚추고 있음 Custom으로 변경하거나 Intensity Multiplier옵션을 0으로 설정함

 

Baked 라이트매핑

 

Scene 탭에 Realtime Lighting 속성 언체크, 이 기능은 전역 조명을 실시간 계싼해서 반영하는 것으로 고성능pc, 콘솔 프랫폼에 적합

Mixed Lighting 섹션의 Baked Global Illumination 속성을 체크하고 Subtractive로 변경

라이트맵과 라이트 프로브, 그림자를 모두 하나의 라이트 맵에 베이크함

 

STAGES 하위에 Point Light 를 추가하고 속성을 위와 같이 변경하되 색상은 원색으로 여러개를 생성한다.

 

라이트맵 베이크

캐시가 아닌 실제 텍스처 파일로 베이크하기 위해선 백그라운드 베이킹 기능을 꺼야됨

Lightmap Resolution 속성 값을 40에서 10으로 변경한다.

이 속성은 베이크할 라이트 맵의 품질을 설정하는 것, 빠르게 베이킹하기 위해 이 속성을 10 정도로 수정함, 값을 증가시키면 라이트 맵의 품질은 높아지거나 베이크 시간이 증가하고 라이트맵의 개수가 많아짐

 

Compress Lightmaps속성을 체크하면 라이트 맵을 압축한다 손실형 압축이라 결과물에 영향을 미침

Ambient Occlusion 은 명암 대비를 크게 해 입체감을 높이는 속성

벽 가까이에 있는 소품의 그림자가 좀 더 진해짐을 확인할 수 있다.

Ambient Occlusion의 세부 속성 설명
Max Distance Ambient Occlusion 의 범위를 결정하는 속성
Indirect Contribution 간접 광원에 대한 명암비를 결정하는 속성
Direct Contribution 직접 광원에 대한 명암비를 결정하는 속성

 

라이팅 뷰의 하단의 Generate Lighting 버튼을 눌러 라이트매핑을 하고 시간이 좀 걸릴 수 있음

라이트맵 이미지는 exr 파일 포맷

Baked Lightmaps 에 이미지를 확인할 수 있음

Scene이 저장되어 있는 프로젝트 하위에 있음

 

 

만약 베이크가 완료된 이후에도 씬의 3d 모델이 검은색으로 표시된다면 프로젝트 뷰에서 모델을 선택한 후 Models 탭에서 Generate Lightmap UVs 옵션이 체크됐는지와 하이러키 뷰에서 Contribute GI 플래그가 체크 되어 있는지 확인

 

Area Light

유일한 실시간 조명이 아님

이 조명은 라이트매핑을 했을 때만 조명 효과가 표시됨 특히 간접 조명 효과를 내는 데 효과적

 

STAGES 하위에 Area Light 를 생성하고 Trasform, Light 의 속성을 아래와 같이 변경한 후 다시 베이크 한다.

 

 

반응형