모바일 필드에서 실시간 그림자는 당근 사용 안됩니다.
그림자가 있는것 처럼 멋지게 만들어주는 제일 좋은 방법은, 사실 맥스에서 모든 배경 데이터를 제작하는 것입니다!
그리고 렌더 투 텍스쳐로 모든 빛 효과를 텍스쳐로 구워 버리는 것이지요.
인피니티 블레이드에서 사용했던 방법이기도 합니다. 맥스를 이용하세요 맥스를!
… 그치만 우리 게임은 웹 연동이라서 그렇게 할 수 없습니다. 어쩔 수 없이 에디터에서 건물을 찍어줘야 해요. 수정도 가능해야 하고요. 그렇기 때문에 인피니티 블레이드에서 사용했던 방법은 쓸 수 없습니다.
그렇다면 그림자를 뽑아내는 방법은? 라이트맵 기능으로 베이킹 해놔야 하는 것입니다! 그렇게 하면 그림자가 베이킹 되어서 그림자를 표현할 수 있게 됩니다!
… 또다시 그렇지만 , 라이트맵 굽는 기능은 시간이 너무 많이 걸립니다. 몇 시간씩 걸리기 때문에 하염없이 8층에서 아메리카노를 빨면서 기다려야 한다던가, 수정 한 번 할때는 밥먹고 와야 하는 일까지 생겨 버립니다. 게다가 라이트맵의 정밀도가 그렇게 높은 편이 아니라서, 자질구레한 오브젝트의 그림자는 또 안나오게 됩니다.
게다가 모바일에서는 어차피 지형 텍스쳐의 블렌딩이 이루어 지지 않기 때문에 (모바일4터레인을 사용하면 되긴 하지만 더럽게 느리지요) 통짜 텍스쳐를 이용하고 있어서, 그냥 웹용으로 만든 지형을 TOP에서 캡쳐해서 사용하고 있습니다. 무식하지만 효율적이지요.
그러니까 여기서 아이디어는, 그림자를 실시간으로 나타나게 한 다음에 그림자만 남기고 건물만 사라지게 하면 아주 빠르고 효율적인 라이트맵 비스무리한게 만들어진다는 것이지요.
그래서 만든스크립트. Auto Change Shader 입니다.
이전에 만든 쉐이더 체인저에 버튼만 추가했습니다. 이전 것은 Diffuse Fast 로 만든 오브젝트를 vertexlit 쉐이더로 자동으로 만들어주는 스크립트였지요 - 생각해보니 모바일에서는 별 필요가 없겠군요. 삭제를 고려해야겠습니다 -
아래 버튼이 일명 ‘쉐도우 쉐이더’ 라는 놈으로 바꿔주는 버튼입니다.
쉐이더명은 TKSpecial_ShadowOnly_mobile 이구요. 수동으로 사용할지도 몰라서 Hidden은 시켜놓지 않았습니다.
사용법은 개간단합니다.
일단 실시간 그림자가 동작하도록 만들어 놓으셔야 합니다. 이 방법은 무식한 방법이라 그림자를 따로 떼어낼 수 없기 때문에,
소프트 쉐도우 설정이나 엠비언트 칼라 등으로 색상 보정을 잘 해놔 주셔야 합니다.
그다음 적당한 크기로 오브젝트들을 선택하세요. 너무 크게 선택하면 지형까지 선택될 수 있으니 주의하세요.
하이어라키 창에서 선택하는 것도 좋겠지요
간단히 버튼을 눌러주면 쉐도우 쉐이더로 체인지 됩니다.
언두 같은거 안됩니다. 큰거 기대 마세요.
해보면 어려운 작업 아닙니다. 이 상태에서도 그림자 속성을 모두 실시간으로 바꿀 수 있습니다.
이렇게 간단하게 라이트맵이 추출되었습니다. 단점이라면, 건물에는 이 그림자맵이 적용되지 않기 때문에, 건물의 하단부 (혹은 그늘진 부분) 에는 적당히 어둡게 눌러줘서 이질감이 없도록 해줘야 한다는 것입니다.
혹은 그림자의 농도를 적당히 연하게 해서 자연스럽게 만들어 주는 것도 좋은 방법 같습니다.
맵 텍스쳐와 함께 베이킹 되는 것이기 때문에, 따로 그림자를 수정할 수 없는 것은 단점이긴 합니다.
또한, 이 방법을 이용하면 군데군데 포인트 라이트 등을 박아서 지형의 느낌을 좋게 만들 수도 있습니다. 이 모든것이 실시간이기 때문에 수정이 용이하고, 매우 편리합니다. (건물 근처에 너무 티나게 박으면 좀 곤란하겠지만요 ㅎㅎ)
커밋되어 있으니 바로 사용하시면 됩니다!