애니메이터

Unity5.x 에서 Unity4.x 의 lightmap 쓰기 본문

Game Engine/Unity3D

Unity5.x 에서 Unity4.x 의 lightmap 쓰기

욤마핫 2018. 6. 18. 10:20

 Unity4에서 lightmap 엔진은 Beast 이었는데 Unity가 업그레이드 되면서 Lightmap 엔진이 Enlight와 Progressive로 바뀌었습니다.

 

그래서, 당연히 Unity5 에서는 Unity4의 라이트맵을 쓸 수 없습니다.

Unity4 에서 Unity5로 업그레이드를 하게 되면 다시 Lightmap을 구워야 하는 어처구니 없는 일이 발생하게 됩니다.

여러 포스팅에서도 대부분 다시 굽는게 최선이라고 되어 있습니다만,

 

 Unity 사의 불친절한 설명 때문에 그런 것 같습니다.

 

 Unity5 버전에서 Material의 Shader 영역을 보면 맨 하단에 Legacy Shader라고 있으며 구버전의 Shader를 여기서 사용할 수 있는데요.

 

우선, Unity4 프로젝트를 백업을 하나 해놓고요.

Unity5 에서 열어서 프로젝트를 업그레이드 하고 이 Shader를 쓰면 당연히 Lightmap이 적용이 되어 나올거라 예상을 하고 적용을 해보면 전혀 Lightmap이 Lightmap 답게 나오지 않는 것을 볼 수 있습니다.  (백업의 중요성!!)

 

왜죠? 엔진이 바뀌었으니 당연히 Lightmap이 Lightmap으로 인식이 안되는 겁니다.

 

그렇다면 4버전의 Lightmap을 Lightmap으로 인식 시킬 방법이 있느냐? - 없습니다.

네?

 

4버전에서 구운 Lightmap은 5버전에서는 단순 Texture로 인식을 하게 되며 당연히 그렇게 설정하여야 합니다.

하지만 프로젝트를 그대로 5버전에서 로딩을 하면 4버전의 Lightmap이 단순 Texture로 들어오지 않고 Lightmap으로 설정되어 있어 제대로 Shader 연산이 되지 않기 때문에 이상하게 보이게 됩니다.

 

그래서 4버전에서 구운 Lightmap들을 전부 선택한 후 단순 Texture 설정으로 바꾸어 주어야 합니다.

Lightmap들만을 선택하고 Inspector에 가서 Texture Type을 다음과 같이 바꾸어 줍니다.

그리고 처음 적용했던 Legacy Shader/Lightmapped 에서 Lightmap 영역에 해당 4버전의 Lightmap texture를 적용하시면 됩니다.

 

다음 문제로, 엔진 단에서 라이트맵이 적용되는 것이 아니라 Shader 연산으로 구현되는 것이기 때문에 4버전에서 Multy Object로 적용되던 Lightmap을 Object별로 따로 Material을 만들어 적용해야 됩니다.

 

그래도, 4버전의 Lightmap을 그대로 사용할 수 있다는게 장점이겠죠. ^^

 

하나 더!

 

이 쉐이더를 활용한다면 외부 랜더러에서 구운 라이트맵도 당연히 적용가능합니다.

3dsMax, Maya 등등

 

Unity5.x 에서 Unity4.x 라이트맵 쓰기 2탄 : http://xysterxx.tistory.com/176