Featured image of post 모바일 필드에서 그림자 사용하기 : Auto Change Shader

모바일 필드에서 그림자 사용하기 : Auto Change Shader

모바일 필드에서 실시간 그림자는 당근 사용 안됩니다.
그림자가 있는것 처럼 멋지게 만들어주는 제일 좋은 방법은, 사실 맥스에서 모든 배경 데이터를 제작하는 것입니다!
그리고 렌더 투 텍스쳐로 모든 빛 효과를 텍스쳐로 구워 버리는 것이지요.
인피니티 블레이드에서 사용했던 방법이기도 합니다. 맥스를 이용하세요 맥스를!

… 그치만 우리 게임은 웹 연동이라서 그렇게 할 수 없습니다. 어쩔 수 없이 에디터에서 건물을 찍어줘야 해요. 수정도 가능해야 하고요. 그렇기 때문에 인피니티 블레이드에서 사용했던 방법은 쓸 수 없습니다.

그렇다면 그림자를 뽑아내는 방법은? 라이트맵 기능으로 베이킹 해놔야 하는 것입니다! 그렇게 하면 그림자가 베이킹 되어서 그림자를 표현할 수 있게 됩니다!

… 또다시 그렇지만 , 라이트맵 굽는 기능은 시간이 너무 많이 걸립니다. 몇 시간씩 걸리기 때문에 하염없이 8층에서 아메리카노를 빨면서 기다려야 한다던가, 수정 한 번 할때는 밥먹고 와야 하는 일까지 생겨 버립니다. 게다가 라이트맵의 정밀도가 그렇게 높은 편이 아니라서, 자질구레한 오브젝트의 그림자는 또 안나오게 됩니다.

게다가 모바일에서는 어차피 지형 텍스쳐의 블렌딩이 이루어 지지 않기 때문에 (모바일4터레인을 사용하면 되긴 하지만 더럽게 느리지요) 통짜 텍스쳐를 이용하고 있어서, 그냥 웹용으로 만든 지형을 TOP에서 캡쳐해서 사용하고 있습니다. 무식하지만 효율적이지요.
그러니까 여기서 아이디어는, 그림자를 실시간으로 나타나게 한 다음에 그림자만 남기고 건물만 사라지게 하면 아주 빠르고 효율적인 라이트맵 비스무리한게 만들어진다는 것이지요.
그래서 만든스크립트. Auto Change Shader 입니다.

간단히 버튼을 눌러주면 쉐도우 쉐이더로 체인지 됩니다.
언두 같은거 안됩니다. 큰거 기대 마세요. ㅋㅋㅋㅋ

해보면 어려운 작업 아닙니다. 이 상태에서도 그림자 속성을 모두 실시간으로 바꿀 수 있습니다.

이렇게 간단하게 라이트맵이 추출되었습니다. 단점이라면, 건물에는 이 그림자맵이 적용되지 않기 때문에, 건물의 하단부 (혹은 그늘진 부분) 에는 적당히 어둡게 눌러줘서 이질감이 없도록 해줘야 한다는 것입니다.
혹은 그림자의 농도를 적당히 연하게 해서 자연스럽게 만들어 주는 것도 좋은 방법 같습니다.
맵 텍스쳐와 함께 베이킹 되는 것이기 때문에, 따로 그림자를 수정할 수 없는 것은 단점이긴 합니다.

또한, 이 방법을 이용하면 군데군데 포인트 라이트 등을 박아서 지형의 느낌을 좋게 만들 수도 있습니다. 이 모든것이 실시간이기 때문에 수정이 용이하고, 매우 편리합니다. (건물 근처에 너무 티나게 박으면 좀 곤란하겠지만요 ㅎㅎ)

Hugo로 만듦
JimmyStack 테마 사용 중