- 제 목
- 일반 SDK3)bool과 토글을 이용한 옷장 만들기[아바타 파라메터 드라이버]
- 글쓴이
- 핑크여우씨
- 추천
- 13
- 댓글
- 8
- 원본 글 주소
- https://gall.dcinside.com/vr/720168
- 2021-01-30 07:56:55
선행 강좌
int를 사용한 기본 옷장 강좌들
3.0으로 옷장을 만들어보자! (Mesh On/Off 및 쉐이프키 제어) - VRChat 갤러리 (dcinside.com)
3.0으로 옷장을 만들어보자! 추가편 - VRChat 갤러리 (dcinside.com)
bool과 int의 차이점에 대한 설명 및 강좌
비트란 뭘까? 8비트 Int는 몇까지 나타낼수 있을까? - VRChat 갤러리 (dcinside.com)
int와 bool의 사용법 - VRChat 갤러리 (dcinside.com)
bool 어떻게 쓰는지 모르는 애들 걍 이거보구 따라해 - VRChat 갤러리 (dcinside.com)
선행강좌 잇슴. 쭉 둘러보는걸 추천함
그리고 저 강좌에 또 선행강좌와 추가로 따라가는 강좌들이 있으니 내용 이해 안가는 부분 있으면 전부 참고하길 바래
이 강좌는 아바타 파라메터 드라이버(VRC Avatar Parameter Driver)라는 컴포넌트에 대한 설명임. 그냥 저 위에 3개 강좌를 사용해서 옷장을 구현할거면 굳이 이 내용은 볼 필요가 없음
아바타 3.0의 기능을 활용해서 랜덤기능 추가방법 - VRChat 갤러리 (dcinside.com)
이 랜덤기능도 아바타 파라메터 드라이버를 사용하는 기능임. 자세한건 아래에서 후술
bool을 사용하면서 응용할만한 것 같아서 한번 해봤음. 동기화 되는지도 테스트 다 끝남
bool옷장의 경우 Any State를 사용하든 모든 애니메이션당 레이어를 하나씩 할당해서 On/Off를 왔다갔다 하게 만들거나 자유롭게 구성하면 되지만
이런 구조에서 bool과 togle 버튼을 사용하고 싶은 경우도 있을거임.
int로 한다면 이 경우엔
*Gold로 가는 화살표(트렌지션)에는 모두 1
*TwoTone으로 가는 화살표(트렌지션)에는 모두2
*Pink로 가는 모든 화살표(트렌지션)에는 모두 0을 넣어주면
기본값 0일땐 핑크고 1,2로 파라메터를 바꿔서 색을 바꿀 수 있는 int를 사용한 머리색을 바꾸는 레이어가 완성될거임. 토글 버튼으로 구현하면 깔끔하겠지
그런데 이번에 새로 추가된 bool은 1비트고 int는 8비트이기 때문에 이 경우에는 bool로 할당하게 되면 5비트의 파라메터 공간을 절약할 수 있게 됨
여기서 문제가 생기는데 토글 버튼의 경우 토글이 켜져있을 때 해당 파라메터를 계속 유지시켜주기때문에 나중에 들어온 유저들도 3.0기능으로 변경된 내용을 똑같이 공유받을 수 있어
그런데 이 경우 bool 하나론 3개의 state를 다 전환할 수 없으니까 bool 파라메터를 3개 만들어야하고
매뉴에 있는 토글도 파라메터를 하나씩 먹게 되니까
만약 토글이 3개 모두 켜져있다면 모든 State가 순서대로 돌아가면서 켜지게 될거야. 옷장에 적용된다고 하면 옷이 실시간으로 이렇게 스왑되겠지...
여기서 문제는
- 파라메터 유지를 하고싶기 때문에 Toggle Button을 사용하고 싶음
- 옷장 같은 구조에선 bool + Toogle버튼을 사용하게 되면 매번 토글을 꺼줘야하는 번거로움이 있음
이걸 해결할 수 있는 방법중에 VRC Avatar Parameter Driver라는게 있음
State를 아무거나 하나 클릭하면 Inspector에 Add Behavior라는 버튼이 있음
눌러서 VRCAvatarParameterDriver라는걸 추가해주면
이렇게 추가가 됨
여기서 Add Parameter를 누르면
요런식으로 늘어남
Name: Parameter의 이름
Change Type : 파라메터 종류에 따라 다른데 Set과 Add와 Random이 있고, Bool은 Set과 Random만 있음
위에 링크걸어놨던 랜덤기능은 Random으로 설정해서 값이 무작위로 바뀌게 한것임
Value : 이 State에 도착했을때 해당 Parameter를 어떤 값으로 변경할 지 지정함
여기서 Value가 가장 중요한데, 지금 저 위에 움짤 예시에서 문제가 되는 부분은 모든 토글버튼이 다 켜지는 경우가 있다는 점임
그래서 이걸 해결하기 위해 아래 그림처럼 Driver를 설정해주면
Gold로 상태가 변경되지마자 ChangePink와 ChangeTwoTone의 Parameter를 false(Check 풀림)로 변경할 수 있게 되는거임
Parameter가 false(Check 풀림)로 바뀌면 그에 따라서 해당 toogle button들의 상태도 off로 자동 변경되게 됨
나머지 State에도 동일하게 꺼주고 싶은 파라메터를 넣어주고 Value를 false(Check 풀림)로 해준 다음 업로드 ㄱㄱ해보면
이런식으로 겉보기에는 int로 구성한 옷장과 거의 동일하게 동작하는것을 확인할 수 있음
이런 구조는 극단적으로 파라메터를 절약하기 위해 int를 bool로 바꿀때를 제외하곤
작업 시간이나 효율성 모든게 떨어지기 때문에 정말로 Parameter가 부족하지 않는 한은 그냥 int를 쓰는 편이 편하고 시간절약도 할 수 있으니 참고하길바래. 그리고 State 개수가 8개 이상이 되면 int보다 공간 절약 효율마저 떨어지기때문에 본인 아바타 구조에 따라 잘 선택해야 함
만약 여기서 추가로 응용한다면
int 옷장 구조에 아바타 파라메터 드라이버를 응용해서 bool로 껐다 켜는 파츠들중 원하는 파츠들만 on/off도 할 수 있을거임. 난 애니메이션 구성이 귀찮아서 안 해봤지만...해볼 수 있는 사람은 해보길바래
baretta | 강좌는 일단 개추 | 2021.01.30 07:57:36 |
PIDEX | 이건 정보추야 - dc App | 2021.01.30 07:57:43 |
뽀롱 | 일단 개추누르고봄 ㅇㅇ | 2021.01.30 07:57:44 |
ㅇㅇ | 강좌는 개추야 221.165 | 2021.01.30 07:58:59 |
명빵_접음 | 뭔지 모르겠지만 개추 | 2021.01.30 08:00:01 |
세최쿄 | 개추 - dc App | 2021.01.30 08:03:26 |
StarLane | 2021.01.30 08:09:48 | |
조개껍데기 | 굿 | 2021.01.30 08:29:26 |