VRChat 마이너 갤러리 저장소

제 목
일반 VRChat 유저를 위한 잡다한 Shader 강좌 <2>
글쓴이
포동포도
추천
9
댓글
1
원본 글 주소
https://gall.dcinside.com/vr/219638
  • 2019-07-13 13:53:09
 

강좌 1편

한국에서 자주 쓰는 셰이더를 소개하면서

그림자나 음영 효과를 주는 방법을 배웠다.

https://gall.dcinside.com/mgallery/board/view/?id=vr&no=218156&exception_mode=recommend&page=1


==============================


오늘 강좌는 저번 편에 소개했던대로

Standard 셰이더에 대해 배워보면서

많은 기능에 대해 배워보려고 한다.


이 기능들은 Standard뿐만 아니라

많은 셰이더들에도 포함된 기능이므로

지금 알아뒀다가 써먹도록 하자.


==============================


1. Standard 셰이더란?


저번에 설명했던 대로 PBR 셰이더라서

현실적으로 표현할 수 있는 셰이더중 하나이다.

VRChat에서는 월드, 아바타 소품 등에 자주 쓰며

금속 재질의 아바타나 물건 등에도 쓴다.


==============================


2. Rendering Mode에 대해서


저번 강좌에는 Transparent와

Opaque 두 개만 배웠는데


Opaque는 아바타 얼굴같은 불투명 물체에 쓰고

Transparent는 홍조같은

반투명 물체에 쓴다는건 기억했으면 좋겠다.



Standard에는 저쪽 빨간색으로 표시한 부분에 있다.

기본적으로는 Opaque다.


Assets의 이미지를 끌어서 Albedo 옆 네모칸에 넣거나

Albedo 옆 동그란 부분을 눌러 이미지를 검색해 넣을 수 있다.

Albedo는 Main Texture라고 생각하면 쉽다.



사용된 이미지는 아래쪽은 검은색이지만

위쪽은 흰색이 아니라 갈수록 투명해지는 그라데이션이다.


하지만 Opaque는 불투명한 물체를 표현할 수 있으므로

투명한걸 표현할 수 있는 Rendering Mode를 찾아야 한다. 









Cutout로 바꾼 모습. 

일부분의 투명한 부분이 잘려나가

감춰져있던 하늘색 타일이 드러났다.


Cutout의 역할은 텍스쳐 내에

불투명과 투명이 섞여있는 이미지의 투명한 부분을

완전히 투명처리 하여 보이지 않게 한다.


이 때, 같은 투명이라도 조금 투명한 부분과

많이 투명한 부분이 있을 텐데

이를 투명한 정도를 나타내는 알파(Alpha)값으로 수치화할 수 있다.




Alpha Cutoff을 크게 했더니 약간 투명했던 부분까지 잘려나갔다.

반대로 작게 한다면 투명한 부분이 많이 잘려나가지 않을 것이다.


뭔가 심볼이나 그룹 마크를 넣고 싶을 때 자주 쓴다.












이번에는 Fade.


Cutout는 투명한 부분이 Alpha cutoff 수치를 기준으로 잘려나갔다면

Fade는 투명한 부분의 음영이 나타나면서 Alpha가 0인 부분(완전 투명)은

완전히 보이지 않게 된다.


아바타에 신발을 신겼더니 발바닥이 신발을 뚫고 나올 때

Fade 방식을 써서 아바타 발바닥을 투명화시켜 해결하는 방법이 있다.








Fade는 Alpha cutout가 없는 대신

Albedo의 Color탭을 눌러 팔레트 아래쪽

A 오른쪽의 스펙트럼을 조절하여

Albedo 텍스쳐의 알파값(투명한 정도)을 임의대로 조절할 수 있다.


Alpha값을 255(흰색)에서 77로 낮췄더니

바닥이 더 투명해져 거의 보이지 않게 됐다.


Alpha값은 Albedo(Main Texture)의 투명도를 조절하지만

Rendering Mode가 Opaque라면 투명도를 조절할 수 없다.













이건 Transparent로 바꾼 결과.

Fade와는 다르게 약간 유리같이 되어있다.


Transparent는 투명한 부분 중에서도

약간 반투명한게 있을 때 사용한다.

홍조 마테리얼에 쓰는 이유도

홍조 가운데는 투명도가 0으로 불투명하지만

끄트머리로 갈 수록 투명도가 255로 점점 투명해지기 때문이다.


사진이 잘 안보이므로 가까이에서 확인해보자.










주변의 빛을 반사하는 모습이다. 따라서 아크릴 판처럼 보인다.

Fade의 완전 투명을 표현하기보다는

유리창이나 물 등을 표현하는데 쓴다.













왼쪽이 Fade다. 갈수록 아예 보이지 않게 되는 모습이다.

Fade는 빛의 반사가 없는 물체를 그릴 때 쓴다.










==============================


3. 금속 재질 표현하기



Albedo에 텍스쳐 하나만 입힌 모습이다.


금속처럼 보이기엔 여전히 무리가 있어보인다.








Metallic을 살짝 올려줬더니 빛의 반사가 일어나면서

금속 재질이라는 느낌이 훨씬 들기 시작한다.


아래쪽 특히 가장 밝은 부분은 하이라이트(Highlight)라고 생각하면 좋다.

이 반사는 일반적인 빛 뿐만 아니라 Skybox의 빛도 포함하는데

수치가 커질수록 Skybox의 빛을 더 반사하며

그만큼 Albedo의 색을 감소시킨다.


따라서 Metallic은 수치가 커질 수록 금속이기보다는

거울의 느낌에 가깝다고 볼 수 있는 것이다.



Metallic에 쓸 이미지에 적색은 Metallic 값을 결정하고

투명한 정도의 알파값은 smoothness를 결정한다.

하지만 VRChat에서 이를 위해 이미지를 직접 수정하면서

만들기란 여간 귀찮은게 아니다. 이건 생략해도 좋다.











Smoothness는 대상의 표면적인 부드러움을 결정하는데 

Smoothness가 커질수록 하이라이트가 커진다.


Smoothness 아래쪽의 Source는 Smoothness의 값을

어떤 텍스쳐의 Alpha에서 가져올 지 설정하는데

보통 Metallic Alpha를 사용하기도 하고

VRChat에선 그닥 사용하지 않는 옵션이다.









셰이더를 바꿔서

Standard (Specular Setup)을 썼더니 Metallic가 사라지고

Specular가 생겼다.


옆의 팔레트에서 V값을 조절하여 반사의 강도를 조절하는데

작을수록(검은색) 반사가 희미해지고 클수록(흰색) 반사가 강해진다.


Specular에 들어가는 이미지는 흑백 이미지를 써야 하며

이 또한 검은색 흰색에 따라 반사의 강도가 조절된다.






Metallic와 Specular(Roughness로 표현되기도 한다)를 적절히 조절하면

금속 재질을 충분히 표현할 수 있을 것이다.





==============================


4. 평평한 물체 표면에 높낮이가 있어보이는 효과 주기




Normal에 Albedo에 썼던 같은 이미지를 넣었더니

뭔가 수정해야한다면서 Fix Now를 누르라고 한다.


유혹에 넘어가 그냥 누르지 말고 Albedo에 썼던 이미지를 복사한 다음

Normal Map에 넣어야한다. Fix Now를 누르면

Normal Map 이미지를 만드는 과정이 진행되면서 이미지의 색이 바뀌기 때문이다.


이미지는 RGB보다는 흑백 이미지로 해야 Normal Map를 만들 때 효과가 좋다.


Normal Map를 넣었더니 평평했던 이미지에 높낮이가 추가되면서

빛의 정반사와 난반사가 일어나 표면이 입체적으로 보이게 된다.


이 효과는 낮은 품질의 텍스쳐를 더 좋아보이게 만들거나

낮은 폴리곤의 금속 물건을 울퉁불퉁하게 만들어

조금 더 고퀄리티의 고폴리곤 물건처럼 보이게 할 수 있는 것이다.












Height Map는 높이가 있는 것 처럼 표현하는 방식이 아니라

실제 높이를 설정하여 그에 따라 그림자가 생겨 명암을 주는 방법인데


Height Map에는 흑백 텍스쳐가 들어가며

흰색일수록 높이가 커지고 검은색이면 높아지지 않는다고 생각하면 된다.


높낮이 차이가 적은 철판보다는

돌 담벼락을 표현하는 데 효과적이다.










Occlusion은 표면의 돌출을 빛으로 나타내게 해주는데

역시 흑백 이미지를 사용하며 흑색일수록 어두워진다.


빛을 받기 어려운 부분이 있는 물체를 표현하는 데 쓴다.





==============================


5. 어두운 곳에서도 밝게 하기



이건 Standard 말고도 다른 셰이더에서도 쓸 수 있다.

Emission의 색을 지정해주면 지정한 색대로 밝게 빛난다.

다만 색만 지정했으므로 아바타 전체가 붉게 되어버렸으니

Emission Map를 만들어 빛나게 할 부분과

그렇지 않은 부분을 만들어줘야 한다.







빛나게 하지 않을 부분을 검은색으로 칠하고

빛나게 할 부분을 남겨뒀더니 부분적으로 빨간색 빛이 칠해졌다.


Global illumiation을 Realtime으로 설정하면

emission으로 방출되는 빛이 실시간으로 적용되어

근처 오브젝트를 밝게 만들지만

Baked로 설정하면 Static이라는 거의 움직임이 없는

오브젝트에만 영향을 주게 된다.


최적화를 위해선 Baked로 해두는게 좋을 것 같다.


==============================


6. 패턴 만들기 



Tiling X에 5, Y에 5를 입력했더니

X축 5개의 텍스쳐, Y축에 5개의 텍스쳐가 더 생겨

타일 패턴을 만들었다.


쓰는 이유는 오브젝트의 Scale이 클 때. 크기가 커질 수록

텍스쳐도 같이 늘어나기 때문에 이를 이용하는 것이다.


사용된 텍스쳐가 가장자리가 서로 이어지는 타일 텍스쳐가 아니라서

이상한 부분이 조금 있지만 Tiling 전용 텍스쳐를 쓴다면

어색한 부분이 없을 것이다.




==============================


Secondary Maps와 Detail Mask는 물체를 근접하여 봤을 때

정교한 표현을 위해 쓰는 것으로 기존 텍스쳐에 중복 적용되는 텍스쳐다.


하지만 VRChat에서 잘 쓰는 편도 아니고 마테리얼이 무거워진다.


==============================






이번 강좌의 핵심은 Rendering Mode와 금속 재질의 표현, Emission이므로

Standard 셰이더 말고도 다른 셰이더에서도 찾아볼 수 있으며

VRChat에서 자주 쓰는 기능이기도 하다.


궁금한거나 원하는 내용이 있으면 덧글로 신청했으면 좋겠고

지금까지의 과정은 생각보다 어려운건 아니니 잘 이용해주길 바란다.



딜런 2019.07.13 13:53:21
번호 분류 제목 글쓴이 날짜 추천
220132 일반 냐개ㅇ갤 만들고 거기로 꺼지라고ㅋㅋ 2 ㅇㅇ 175.223 2019-07-14 0
220131 일반 이제 갤주와좆목했으니 우리는막나가도 된다 이거야 ㅇㅇ 118.47 2019-07-14 2
220130 일반 갤 분위기 좆창낸게 누구때문인데 ㅋㅋㅋ ㅇㅇ 221.161 2019-07-14 0
220129 일반 5시 23분 성동 2019-07-14 1
220128 일반 갤주는 사퇴해라 갤주는 사퇴해라 갤주는 사퇴해라 ㅇㅇ 1.223 2019-07-14 0
220127 일반 이거 어제떡밥 아니냐? 1 머쓱 2019-07-14 0
220126 일반 전갤주는 커미션 좆목 뇌절 1 ㅇㅇ 124.53 2019-07-14 4
220125 일반 냐아아 도키도키시테타 딜런 2019-07-14 0
220124 일반 글쓰는거 다보고있노ㅋㅋㅋㅋ ㅇㅇ 223.39 2019-07-14 0
220123 일반 갤 폭파시키면 다들 어디로갈까 ㄹㅇ ㅇㅇ 175.223 2019-07-14 0
220122 일반 갤분위기는 좋았던적이 없네 탈갤해라 183.96 2019-07-14 0
220121 일반 지금 입대하는거면 자살해야됨 ㅇㅇ 1 ㅇ ㅇ 223.38 2019-07-14 0
220120 일반 지금 이상황 설명할 영상은 이거밖에없다 ㅇㅇ 39.7 2019-07-14 0
220119 일반 여기 갤주 원래 좆목질 심하긴했음 고갤시절부터 ㅇㅇ 223.62 2019-07-14 5
220118 일반 이성계 같은 컬컬한 보이스 만나고싶다 1 ㅇㅇ 175.223 2019-07-14 0
220117 일반 방금 화본역에서 여목강의받고왔다 ㅇㅇ 222.236 2019-07-14 0
220116 일반 갤주는 공정한 사람이 되어야됨 1 여주다 2019-07-14 3
220115 일반 커플들 결국 싸우는데 왜 사귀는거야 2 ㅇㅇ 175.223 2019-07-14 0
220114 일반 낮잠 잘잣따... 딜런 2019-07-14 0
220113 일반 아니 친구걸어도 풀리는버그 머임ㅡ 공배기 2019-07-14 0
220112 일반 텍스처 입혀줌 ㅎ.. 7 쿰척쿰척 2019-07-14 0
220111 일반 주최자 왔다 26 Nya 2019-07-14 10
220110 일반 ㅅㅋ 군대가니까 어떻게든 고소먹여서 군생활 조지면되네 4 ㅇㅇ 175.223 2019-07-14 0
220109 일반 가성비 vr 추천받는다 18 원펀맥 2019-07-14 0
220108 일반 사진찍을만한 월드가 잘 안보임 아루라테 2019-07-14 0
220107 일반 mmd 캐릭터 가지고와서 부랄챗에 넣는법좀 알려줘 2 브알브 218.148 2019-07-14 0
220106 일반 브얄 렉없애고 싶어서 컴업글했는데 18 혀뇽 2019-07-14 0
220105 일반 퍼지 이거 헤어 머임 9 토요일 211.47 2019-07-14 0
220104 일반 오늘 저녘 모기 교류회 사람 많이 안오면좋겠음 1 ㅇㅇ 175.223 2019-07-14 0
220103 일반 꼭 찐따 뇌절맨 새끼들이 티를 내고 싶어서 안달남 ㅋㅋ 2 ㅇㅇ 211.36 2019-07-14 2
220102 일반 풀트린이 인데 캘리 어떻게 하나용.. 6 미라 2019-07-14 0
220101 일반 야근데 그럼 공증성 생기니까 ㅅㅋㅋ 이제 갤주욕하면 각도기 그냥 깨지네 3 ㅇㅇ 175.223 2019-07-14 3
220100 일반 갤럼믿고 vr샀는데 2 ㅇㅇ 1.230 2019-07-14 0
220099 일반 니들은 부모님한테 맞을때 이건 나밖에 맞았을거야하는거 있냐 ㅇㅇ 175.223 2019-07-14 0
220098 일반 주딱 내려놓기전에 한번만 대주고가라 ㅇㅇ 117.111 2019-07-14 0
220097 일반 퍼지 사진좀 올려줘 3 토요일 211.47 2019-07-14 0
220096 일반 딜런한테 주딱 주자 6 ㅇㅇ 117.111 2019-07-14 5
220095 일반 갤주는 그 하나의 완장을들고일어난 폭동이야 2 양산형이세계물 2019-07-14 1
220094 일반 다들 건강챙기면서 브알챗하자 1 OwO 2019-07-14 0
220093 일반 우리갤 못잃어... 4 혀뇽 2019-07-14 0
념글 삭제글 갤러리 랭킹