파라미터에 랜덤으로 값을 부여할 수 있는지를 모르는 사람이 많아서 적어봄
https://gall.dcinside.com/vr/830536
이 글을 봤다면 안봐도됨
참고
1. VRCSDK 에 대해 기본적인 지식이 있는 사람을 대상으로 합니다.
1. 애니메이션 찾기
애니메이션은 알아서들 구하고 나는 vrcmods 와 booth 사이트에서 배포중인 애니메이션 몇개를 가져왔다
나는 위 파일 3개로 해보겠다.
2. Action 애니메이터 만들기
대부분의 아바타에는 제작자 본인이 만든 AFK를 넣기위해
Action 레이어가 기본적으로 들어가있으니 그걸 쓰면되고
나처럼 처음처럼 하는 사람은
Project - Packages - VRChat SDK Avatar - Samples - AV3 Demo Assets - Animation - Controllers
폴더에 있는 vrc_AvatarV3ActionLayer 를 복사해서 사용하면된다.
나는 복사해서 파일을 Assets 폴더내로 옮기고 이름을 바꿔줬다.
3. 파라미터 설정
예제 파일에는 "AFK" 라는 이름의 파라미터가 존재하므로
따로 넣어줄 필요는 없다.
그리고 AFK 가 켜지면 어떤 애니메이션으로 State가 전이되어야 할지도 정해줘야 하기 때문에
여기서는 int 타입의 AFK_Select 파라미터를 하나 추가해준다.
4. 레이어 설정
이거 모르는 사람이 많은데
위쪽은 일어나있을때 이모트
중간은 않아있을때 이모트 (C/Z 아님, 의자같은 오브젝트에 앉는 것을 의미)
아래가 AFK 이모트 이다
대부분은 위쪽은 쓰지 않으므로 날려버리겠다.
쓸사람은 EX 메뉴에 VRCEmote 파라미터로 추가하면 된다.
5. 애니메이션 추가
추가하겠다고 했던 애니메이션을 추가한다.
단, VRChat 공식문서에 의거하여
Action 레이어의 Weight 값을 1로 만들어주고
애니메이션 컨트롤러를 Animation 으로 바꿔줘야 한다는 것을 잊지 말아야 한다.
그래서 기존 예제 있던거를 그대로 쓰도록 하겠다.
여기서 중요한 포인트는
"AFK" 파라미터는 Bool 타입으로 고정이고
AFK 파라미터가 1이 되어 WaitForActionOrAFK 라는 State에 전이가 되어야지만 Action 레이어의 Weight 값이 1로 바뀌기 때문에
한 State 에서 나눠지는 모양새를 갖춰주어야 한다.
왜냐하면 Entry 에서 이어지는 State로의 트랜지션은 컨디션 설정이 불가능하다
이해 못하겠으면 밑 움짤처럼 하면 된다.
6. 트랜지션 설정
컨디션 설정을 해주어야 하므로
트랜지션을 먼저 설정해주도록 하겠다.
7. 컨디션 설정
여기서 이제 머리를 굴려야 하는데
AFK 는 그저 AFK 가 켜진지 꺼진지만 체크해주기때문에 AFK_Select 라는 파라미터를 추가해줬다
AFK_Select 가 랜덤으로 돌아가야지 이 강좌글의 취지에 맞을것이므로
우선 컨디션 설정부터 해주겠다
컴퓨터는 0부터 시작하기 때문에 0 1 2 순으로 해주겠다.
8. 파라미터 드라이브 설정
이제 AFK_Select 파라미터를 랜덤으로 돌려줘야 하기 때문에
VRC Avatar Parameter Driver Behaviour 를 이용하여 랜덤값을 부여한다.
Max 값은 자신이 설정한 파라미터의 최대값을 적어주면 된다.
그리고 여기서 무조건 Local Only 를 체크해주어야 한다.
실험결과 체크를 하지 않으면
3명의 유저에게 각기 다른 행동을 취하게 된다.
Local Only 로 로컬에서 값을 정하고
그 상태에서 Synced 되게 만들어야 남들에게 똑같은 포즈를 취할 수 있게 된다.
그러므로 짤에서는 설명이 안되어 있지만 Local Only 를 꼭 체크해주자.
9. EX Parameter 에 파라미터 추가하기
VRC Avatar Parameter Driver 에 적혀있듯이
EX 파라미터에 값이 존재해야지만 네트워크 싱크가 동작하므로 EX 파라미터에 추가해준다.
10. 테스트
인게임에서 해도 되지만 어짜피 값이 랜덤으로 돌아가기만 하면 되기때문에
Synced 체크도 해놔서 싱크에는 문제가 없을 것으로 보이므로
우선 유니티 내에서 테스트 해보겠다.
화질이 좀 지저분하지만 중간의 AFK_Select 파라미터가 0~2 사이의 값으로 바뀌는거보면
유니티로는 잘 작동하는 것을 확인했고
인게임에서 작동하는건 녹화 시 용량이 너무 커서 올리지 못했지만
정상적으로 작동하고 타인에게도 나의 모션이 동기화 된 것을 알 수 있었다.
다시한번 말하지만 무조건
VRC Avatar Parameters Drivers 에 있는 Local Only 를 꼭 체크해주자.
ㅅㄱ
#랜덤
#랜덤파라미터
#Synced
#파라미터 싱크
#싱크
#AFK
#무작위
#Random