본문 바로가기
[ CODING STUDY ]/》유니티 실습

유니티 1장(shader, 양면쉐이더, 양면출력, 천장 양면출력, 머티리얼)

by MRG 2020. 7. 27.
728x90
반응형

▣ 안녕하세요 ^^
유니티를 오늘부터 글을 쓰게 되었습니다. 
제 블로그 소개를 보면 아시겠지만, 
제가 무언가를 가르치기보다는 제가 공부했던 
그리고 공부해서 배운 내용들을 함께 공유하고 나누는 블로그입니다. 

 

▣ 오늘은 양면으로 쉐이더를 출력하는 걸 공부해 보겠습니다. 
기능적인 것만 간단하게 실습 위주로 설명하도록 하겠습니다.
이 유니티 챕터는 꿀팁을 위주로 진행합니다.
참고해주세요.

 

▣ 먼저 이렇게 3D로 프로젝트를 만들어주시고요. 
가운데 플레이어를 의미하는 3D 큐브와
3D로 plane바닥과 천장을 만들어보겠습니다. 
그리고

 

 

▣ 머티리얼을 에셋에 생성합니다. 

 

 

▣ 그리고 머티리얼 이름을 Ground로 바꿔주시고

 

 

▣ 눈이 아프니깐 색을 회색톤으로 지정해 줍니다.

 

 

▣ 이렇게 머티리얼을 각각 바닥, 천장 게임 오브젝트에 드레그를 해서 적용을 해줍니다.

 

▣ 그럼 이렇게 천장이 잘 보이는 걸 확인할 수 있습니다.
그런데 게임 뷰에서는 먼가 이상하죠?

 

▣ 씨뷰에서 카메라를 돌려서 천장을 확인해 보면 천장이 안 보이는 걸 확인할 수 있습니다.
이건 제가 알기로는 유니티에서 양면으로 쉐이더를 지원하지 않고 
단면으로만 지원하기 때문이라고 알고 있습니다.
그건 무슨 말이냐.
바닥을 만들 때에 위에 바닥 부분만 쉐이더로 그려줘서 보이게 한다라는 말입니다.
정확한 건 유니티 매뉴얼을 확인해주세요.


▣ 그럼 왜 이렇게 했을까요?
그 이유는 간단하게 이야기하면 모든 면에서 쉐이더를 지원하면 우리가 플레이어 입장에서
보지도 않은 면까지 쉐이더를 계산해서 컴퓨터가 연산을 하면 
메모리가 많이 들고 최적화 부분에서 좋지 못합니다. 
그래서 단면으로 해두었다고 알고 있습니다. 
다시 말씀드리지만 정확하게는 유니티 메뉴얼을 참고해 주세요.
그럼 이걸 어떻게 양면으로 할까요?


▣ 여러 가지 방법은 있다고 들었지만 저는 두 가지만 이야기해 보겠습니다.

 

▣ 아주 간단한 방법으로 첫 번째
똑같은 천장 게임 오브젝트를 만들고 Rotation으로 180 돌려서 두 개에 오브젝트로 보이게 하는 방법입니다.
간단한 방법이죠? 
하지만 단점으로는 위체 천장과 아래 천장에 회전 값이 다르기 때문에
반전해서 보인다라는 것입니다. 
머 크게 2층 집을 표현한다고 해서 바닥과 천장을 보시는 분은 없겠지만 
디테일면에서는 떨어지죠.
그럼 이걸 해결하는 방법 두 번째를 살펴보겠습니다.

 

 

▣ 먼저 유니티 허브에서 설치 메뉴에서는 추가를 클릭합니다.

 

 

▣ 그럼 이런 문구가 나올 텐데
다른 거 누르지 마시고 Unity 다운로드 아카이브라고 되어있는 파란색 링크를 클릭해 주세요.

 

 

▣ 그전에 자신에 유티니 버전을 확인해 주세요.
저는 19.3.0 버전이네요.

 

 

▣ 그리고 자신에 버전으로 가서 다운로드를 누른 다음에
built in shaders를 다운로드합니다. 

 

 

▣ 그리고 다운로드한 파일에서 DafultResourcesExtra에 들어가면 
standard.shader가 있습니다.

 

 

▣ 이걸 찾아서 이름을 바꿔줍니다.
양면으로 쉐이더를 할 거니깐 이렇게 이름에 Double을 추가해 주었습니다.
여기서 주의해야 할 건 이름을 꼭 바꾸셔야 한다는 것입니다.
이름을 바꾸지 않고 유니티에 그냥 넣으면
전에 있던 기본 쉐이더 파일을 덮어 씌어서 꼬이게 됩니다.
그럼 유니티 다시 설치하셔야 합니다 ^^;;
그러니 이름을 꼭 바꿔주세요.

 

▣ 그리고 에셋에 드레그를 해주시고 더블클릭을 해주세요.
그럼 스크립트 창으로 들어가게 됩니다.

 

 

▣ 이런 창이 나오는데 아무것도 건드시면 안 됩니다. ^^;;
제가 말씀드린 것만 진행해 주세요.

 

▣ 먼저 3번째 줄에 있는 Shader에 이름을 바꿔주세요.
저는 양면으로 할 거라 StandarDouble로 했습니다.

 

▣ 그리고 69번째 줄에 
다시 말하면 Zwrite 밑에 Cull off를 추가해 줍니다.
무슨 의미인 거 같긴 한데 
단면 모드 끄기가 아닐까 생각합니다.
그리고 저장을 합니다.

 

 

▣ 그리고 아까 우리가 만들었던 머티리얼에 Sharder 모드를 아까 우리가 만들었던 Double로 지정해 줍니다.
머티리얼 공 모양 Ground이름 바로 밑에 Sharder를 이야기하는 것입니다.

 

▣ 그리고 이렇게 씨뷰와 게임 뷰에서 확인을 하면 양면으로 잘 나오는 걸 확인할 수 있습니다. ^^


▣ 자 이렇게 양면으로 쉐이더를 출력해 보았습니다.
이것 말고 다른 방법도 있는 걸로 알고 있습니다.
저는 제 기준에서 가장 쉬운 방법으로 말씀드렸습니다.
이점 참고해 주시고 또 좋은 꿀팁 있으면 업데이트를 진행하겠습니다.
궁금하신 사항 있으시면 댓글 남겨주세요.


▣ 포기하지 마세요!!! 저도 했습니다!!! 파이팅!!!

728x90
반응형

댓글