라이트맵


라이트맵을 학습하기 전에 알아둬야 할 것이 있다.


GI

우리 모두는 빛이 들어옴으로써 눈이 작동하는 것은 알게된다. 

직접 광원을 바라보고 있지 않는 한 GI(전역광)은 우리의 눈으로 들어오기 전에 물체 사이를 돌아다닌다.

빛은 비추는 물체마다 다르게 반사되거나 흡수되어 새로운 방향으로 보내게된다.


컴퓨터는 그래픽에서 빛이 반동하는걸 두 가지 카테고리로 나눈다.

직접광, 간접광

직접광

광원으로부터 빛이 한번 튕겨지고 눈에 들어오는것을 말한다.

간접광

빛이 눈에 들어오기 전에 여러 표면에서 튕겨져서 우리 눈에 들어오는 광이다.


ENLIGHTEN = realtime 

리얼타임 GI를 전달하는 움직이는 라이트나 오브젝트가 있을 때 쓰면 좋지만 문제는 연산비용이 들기 때문에 미리 라이트를 계산해서 오브젝트에 덮어씌우는 큰 텍스처를 만들어 주는것이 좋다. 

=> 그것이 바로 베이킹


프로그레시브 라이트맵퍼

인라이튼을 써서 라이트를 굽는것말고 프로그레시브 라이트 맵퍼를 사용하는것이 좋다. 

프로그레시브 라이트 맵퍼는 경로 추적 기반의 라이트맵퍼로 주변에서 튕겨지는 빛을 사실적으로 시물레이션 할수 있다. 


이 방법은 카메라에서 광원한테 점진적으로 광선을 보내는것인데,  그래서 렌더링 할 때 에디터에서 바로바로 결과를 볼 수 있고, 씬을 다시 렌더링 할 필요없이 리이팅 프로퍼티를 설정 할 수 있다. 


테스트하기 위해 벽을 만들어 방처럼 오브젝트를 위치시켰다.

그리고 Directional Light은 삭제했다. (그래서 어둡게 보임)


Light가 될 plane 생성

왼쪽 벽에 붙이고 material을 생성 한 후 Emission을 Color 오렌지 색을 넣고 수치값을 1.5로 설정했다.

생성한 material을 plane에 넣어준다.


아직 아무 반응이없다. Emission이있는 오브젝트는 리얼타임에서는 빛이 퍼지지 않기 때문이다.

빛을 주려면 베이크를 해야한다. 

이 효과를 보기 위해서는 움직이지 않는 오브젝트들이니까 베이크해도된다고 유니티에게 알려야한다.

방, 큐브, plane모두 Static 객체로 만들어준다. 

Static 오브젝트를 만든순간 유니티는 베이크를 시작한다.

오렌지색 라이트가 생겼다.

반대편에는 블루라이트를 추가해줬다. 이미션값은 2로 설정

둘다 켜주면 뭔가 빛세기가 약해지는데 이 이유는 잘모르겠다 ㅠ


그 다음에 Lighting Scene을 설정해준다.

Scene 탭의 설정은 개별 게임 오브젝트가 아니라 전체 씬에 적용/ 이 설정은 조명 효과와 최적화 옵션도 제어

실내를 연출할 것이기 때문에 Ambient Color는 있어서 안된다. 

빛은 방금전에 만든 라이팅만 있어야하기 때문에 검은색으로 맞춰준다. (초기 셋팅은 회색으로 되어있음)


Realtime Lighting은 체크 해제 해준다.


Lightingmapping Seting설정

Lightmapper -> Progressive 로 바꿔준다.


그런데도 변화가 업다. 이유는?


프로그레시브 라이트 맵퍼를 사용할 때에는 이미시브 메테리얼로 가서

Global IlluminationRealtime 에서 Baked로 바꿔야한다. 


베이크 중

노이즈가 보이는데 베이크중이라서 그렇다.


베이크 후

라이팅 매퍼의 몇 가지 설정들에 대해서 알아보자

Lightmap Size : 오브젝트사이즈가 작다면 줄여주자 같은 결과이지만 라이트맵 용량이 크게 부여 되어 있을 수 있다.

Compress Lightmap : 라이트맵 압축 여부 

=> 용량이 클 수록(높은 사양)일 수록 베이크시간이 오래걸리기 때문에 작업수정할때는 낮췄다가 최종적으로 올리도록 한다.

Ambient Occlusion : 근처 두 오브젝트간의 그림자를 발생시킨다.







학습참고

1) https://www.youtube.com/watch?v=o39SjRcA__U

1) https://docs.unity3d.com/kr/2018.2/Manual/class-LightmapParameters.html

2) https://chulin28ho.tistory.com/443

3) https://docs.unity3d.com/kr/current/Manual/GlobalIllumination.html


+ Recent posts