Avatar 3.0의 기본 구조 모식도를 가지고 아바타 3.0에 대해 최대한 간단하게 설명할거임
더 궁금한게 있으면 아는 한도 내에서 추가 설명이 붙을수도 있음
![a1571cad180eb45bba342549479f3433b39a959b83ad592ccdc467c3](/api/file/20072068)
일단 이게 아바타 3.0을 전체적으로 놓고 봤을때의 모식도임. 여기서 왼쪽의 VRChat 파라메터 부분부터 살펴볼거임
VRChat 기본 파라메터
![1b8ff32ee4c6788a6fa6d3a7565bf1f15a5ebf934cad5e2296c36ea324c0975f794a3b](/api/file/20072069)
Animator Parameters (vrchat.com)
이건 유저가 따로 설정하지 않아도 아바타에 기본적으로 들어가있는 파라메터들임
해당 파라메터들을 사용해서 아바타의 움직임, 립싱크, AFK등등의 정보들을 확인할 수 있음
VRChat 유저 추가 Parameter
![a1571cad180eb45bba342549459f343340aba58b2f0c2534cb379a46](/api/file/20072070)
익숙한 화면일거임. 브얄쳇 유저가 SDK를 사용해 직접 아바타에 파라메터를 추가하는 부분임. 정식명칭은 Expression Parameters인것 같지만
암튼 최대 128bit, 최대 128개까지 유저가 맘대로 설정할 수 있는 공간임. 자료형(int, float, bool)에 대한 강좌는 갤시트에 몇개 있을테니 그런것들 참고해보면 좋을거임
여기서 모든 파라메터는 Playable Layer(Base, Additive, Gesture, Action, FX)의 Parameters들과 매칭이 진행되게 됨
![28b89e36ebd518986abce8954281706b87](/api/file/20072071)
만약 이렇게 Playable Layer에 아바타 파라메터와 동일한 파라메터명이 있다면 가지고 있는 값을 그대로 옮겨주게 됨
기능을 만들때 이름이 똑같아야 한다고 설명하는 이유도 매뉴를 조작했을때 SDK가 Playable Layers에서 파라메터를 찾을때 파라메터의 이름으로 찾기 때문임. 대소문자, 띄어쓰기까지 모두 포함해서
거꾸로도 가긴 하는데 크게 의미있게 사용할 경우는 별로 없을거임. 대부분은 FX레이어 내에서 해결이 가능하기 때문에...
![a1571cad180eb45bba342549439f3433b1afe772da41fff83e04ba2d](/api/file/20072072)
추가로 위 도식도에 있듯이 VRChat파라메터는 동시에 모든 Playable Layer에 영향을 줄 수 있음
대표적인예로 Gesture Layer와 FX Layer에서 표정과 손모양 고정을 위해 GestureLeft, GestureRigh, GestureLeftWeight , GestureRightWeight를 같이 사용하고 있음.
AFK 파라메터도 기본적으론 Action레이어에서만 사용하고 있지만 FX레이어에서 동시 사용도 가능함. Action Layer에서는 애니메이션을 재생하고 FX에서는 특정 파티클을 동작시킨다던가 하는 식으로
Playable Layer
![a1571cad180eb45bba342549409f343395fd312241362995da552120](/api/file/20072073)
Playable Layers (vrchat.com)
Unity - Manual: Animator Controller (unity3d.com)
이 부분에 대해선 사실 이 강좌보단 위에 있는 두 링크가 훨씬 더 도움이 될거임. 인터넷에 찾아도 좀 나오는데 코드를 사용하는게 대부분이라 위 두 문서를 먼저 참조하는게 좋음
간단하게 말하면 이 안에선 파라메터의 변화를 통해 애니메이션을 재생시키거나(예 : 옷장이나 아이템 토글)
SDK3)bool과 토글을 이용한 옷장 만들기[아바타 파라메터 드라이버] (VRChat) (mgall.app)
VRC Avatar Parameter Driver라는걸 사용해서 특정 State에 도달했을때 Playable Layer 내에서 원하는대로 파라메터를 변경하는 것도 가능함
추가내용
![7decefaa253ab476a6331654295cd0d931989ea908dee2ccb028d083d8888ffdd9885d3ccf0c66cf7aba0c9ef7ee2b74080a](/api/file/20072074)
아바타 3.0 기능구현의 핵심은 이런 절차적인 프로세스를 직접 구성하는 능력에 달렸음. 그래서 개발자들은 쉽다고 하는거고 개발을 접해보지 못한 사람은 어느정도 난항을 겪는것임. 이미 구현된 기능을 뜯어봐도 좋고 개념이 아예 없다면 아래 영상을 참고하는 것도 좋음
여기에 Unity - Manual: Animator Controller (unity3d.com) 이 문서까지 참고하면 좋음
요약하면
1. 아바타 파라메터는 직접 추가/삭제 가능한것, 불가능한것 두종류가 있음
2. 아바타 파라메터와 Playable Layers의 파라메터는 이름을 통해 1:1매칭됨 (대소문자, 공백 구분)
3. Playable Layer든 아바타 파라메터든 어느 한쪽에서 파라메터가 바뀌면 다른쪽에도 영향이 감 (일부 시스템 파라메터는 제외)
Ex. 기능 구현을 위해 레이어를 구성하는건 사실상 프로그래밍이라고 봐도 좋음 (어려운 레벨은 아님)