
VRChat 월드에서 아바타에 애니메이션을 재생해보자
서론
안녕하세요 최근에 저는 VRChat에서의 지인으로부터 하나 질문을 받았습니다.
"월드에서 아바타에 애니메이션을 재생하고싶어요"
그래서 알려준겸 내용을 블로그에 정리해둘려고 합니다.
누군가 보고 도움이 될 수도 있잖아요
VRC Station 이란?
일단, 월드/아바타 에서는 VRC_Station 라는 컴포넌트를 사용해서 플레이어의 아바타를 제어 할 수 있습니다.
사실 제어를 한다고 해도, 플레이어의 움직임을 고정시킨다던가, 애니메이션을 재생하거나.. 네 그게 끝입니다.
이렇기 때문에 VRChat의 SDK 예시 꾸러미에 제공되어 있는것처럼 VRC_Station은 의자로 많이 사용됩니다.
하지만 VRC_Station은 애니메이션도 재생할수 있습니다.
그렇기에 최근에는 MMD 댄스와 같이 자신이 좋아하는 곡과 춤을 재생해볼수 있는 기믹으로도 사용이 늘어나고 있습니다.
애니메이션 생성 및 구성
생김새는 굉장히 심플합니다.

여기서 우리가 중요하게 봐야할건 Animator Controller 필드 입니다.
(무언가 값을 입력할수 있는 라인을 Field, 필드 라고 부릅니다.)
여기에는 Runtime Animator Controller 라는 형식의 데이터를 집어넣을수 있다고 표시되어있는데요.
이 형식의 필드에는 Annimator Controller 라는 형식의 파일도 집어넣을수 있습니다.
아마도 VRChat에서 아바타를 자주 만져보신분들이라면 익숙하실겁니다.

Animator Controller는 Project 창의 빈공간을 우클릭해서 만들수 있다.
애니메이터 컨트롤러를 만들어줍니다.
그리고 더블클릭하면 이런 창이 표시가 됩니다.

Animator Controller 생성시 초기 구성 화면
여기다가 원하는 애니메이션 파일을 집어넣습니다.
(대체로 Animation Clip 이라는 형식의 파일입니다.)

애니메이션 클립을 넣은모습
이제 이 Animation Controller 파일을 드래그해서 VRC_Station에 지정합니다.
이제 월드를 업로드 하고 테스트해봅시다. 잘 재생될겁니다.
문제. 머리가 애니메이션 따라 움직이지 않는 경우 (VRChat의 기본 IK 동작에 의한 고정)
테스트해보면 우리는 아바타의 머리만 움직이지 않는다는 사실을 발견할수 있을겁니다.
이건 VRC_Station의 정상적인 사양이기도 하지만 우리는 이걸 우회하고싶을거에요. (아니면 말고..)
이 사양을 우회하기 우회하기 위해서 우리는 VRChat의 아바타 전용 SDK가 필요합니다.
그래서 기존에 사용하시던 아바타용 유니티 프로젝트 또는 새로 생성하신 아바타용 프로젝트에서 SDK의 특정 플러그인 파일을 가져와야 합니다.
Avatar SDK 가져오기

Packages/com.vrchat.avatars/Runtime/VRCSDK/Plugins/VRCSDK3A.dll
위에 보이는 사진과 경로에 있는 파일을 복사해서 가져옵니다.
붙여넣기할 경로도 Plugins 폴더 아래를 추천드립니다.
이제 본격적으로 설정해봅시다.
트래킹 제어 설정하기
Animator Controller의 구성창에 들어가서 추가했었던 애니메이션 블럭을 선택합니다. (정식명창은 Animator Window.)
선택하면 인스팩터창에 해당 블럭의 상세 구성을 볼수 있습니다.

애니메이션 블럭을 선택한 화면
여기서 [ Add Behaviour ] 버튼을 누르고 VRC Animator Tracking Control 이라는 컴포넌트를 추가해줍니다.

이제 위의 사진과 같이 Tracking 옵션들을 전부 Animation 으로 설정합니다.
그리고 VRC_Station 에서 Seated 옵션을 해제해줍니다.

이제 월드를 업로드 하고 트래킹이 잘 비활성화 되었는지 확인해봅니다.
마무리
어딘가에 장문의 글을 쓰는것이 오랜만이라 어색하네요.
막상 블로그를 열심히 만들어두고서 어떤글을 쓸지 몰라 막막하던차에
지인이 좋은 토픽을 가져와줘서 최신 환경에서의 작동 검증을 하던차에 간단히 작성해봤습니다.
읽어주셔서 감사합니다.