본문 바로가기
유니티 엔진

그림자 해상도 올리기 Raise a shadow resolution in Unity3D

by 대마왕J 2017. 1. 4.



그림자 해상도가 너무 낮다면, 다음과 같은 방법을 시도해 볼 수 있습니다. 

If a shadow resolution is low, we can try next one.



1. Edit/Project Setting/Quality 에서 그림자 해상도를 올려봅니다.
1. Raise a resolution at Edit/Project Setting/Quality 


이것은 조명을 선택해도 동일하게 할 수 있으며 매우 쉬운 기본적인 방법입니다. 

해상도를 올리면 당연히 좋아지겠지요. 그림자도 렌더링된 텍스쳐니까요. 


It's a basic way to change the shadow resolution and also we can control it in the light setting too.
Well, we will surely get a better result by raised resolution, because the shadow is a rendered texture too. 





2. 그림자 거리를 줄여봅니다. 


그래도 안 된다면, 그림자가 텍스쳐라는 것을 생각하세요. 텍스쳐를 크게 만들 수 없을때 해상도를 높게 하려면, 그 텍스쳐의 영역을 작게 만들면 됩니다. 마치 작은사진을 크게 인쇄하면 뿌옇게 되지만, 작게 인쇄하면 선명해지는 것처럼 말이죠.


즉 그림자의 거리를 줄이면 해상도가 높아집니다. 단 멀리 있는 오브젝트는 그림자가 보이지 않겠죠. 이건 각오해야 합니다. 원거리 캐릭터는 프로젝터를 이용해서 동전 그림자를 만들거나, 움직이지 않는다면 아예 라이트맵을 구워 버리거나 

혹은 아예 그림자를 제거해 버릴 수도 있지요 


보통은 이것을 조절하는 것만으로도 꽤 좋아집니다. 



3. cascade를 이용해 보세요 


멀리 보이는걸 포기할 수 없다라고 한다면, 메모리의 증가량은 좀 생기지만 cascade를 이용하는 것도 한 방법입니다. 


cascade는 그림자를 거리별로 해상도를 다르게 만들어 버리는 기술이라고 생각하시면 좋습니다. 2개와 4개가 있고요. 당연히 4개가 좀 더 무겁습니다. 

이것을 앞 부분으로 상당히 몰아 버리면 가까운 부분에 그림자의 퀄리티를 집중해 버리고, 먼 부분에는 그림자의 해상도를 매우 떨어뜨리는 방식으로 조절이 가능합니다. 



4. Unit을 체크하세요. 

그런데도 모두 작동이 안된다면, 혹시 지금 캐릭터가 100m고 맵이 100km 라던가 하는 거대한 크기로 만들어진 것은 아닌지 체크해 보십시오. Unity의 유닛은 단위당 1미터이며, 그림자나 라이트 맵 등등 많은 것들이 이 실 비례로 계산됩니다. 그래서 너무 크거나 작으면 각종 문제가 생길 수 있습니다. 


5. 그것도 싫으시다면


그것도 싫으시다면 ㅎㅎ 오즈라엘이 올린 실시간 평면 그림자를 사용해 보세요. 

캐릭터를 한 번 더 그리는데, 머릿고기 누르듯 눌러서 (...) 평면 캘릭터로 만들어 버리는 기능입니다. 

평면으로만 나타난다는 단점이 있는 대신, 원하는 물체만 그림자로 나오게 한다던가 등등 편리한 기능이 많고 모바일에서 쓰기 좋은 가벼운 기능입니다. 


http://egloos.zum.com/ozlael/v/4070775


반응형

댓글