VRChat 마이너 갤러리 저장소

제 목
일반 FX 애니메이터(Any State) 최적화 방법
글쓴이
고희원
추천
10
댓글
7
원본 글 주소
https://gall.dcinside.com/vr/2878486
  • 2023-03-26 01:24:49
							

어제 다운로드사이즈/텍스처메모리 최적화 방법 게시글을 올리고


FX 애니메이터의 Any State 가 프레임 드랍의 주범이라는 댓글을 달았던 갤러가 있어서


이에 관해서도 이야기를 해볼까 한다.



참고로 해당 게시글은 Unity 엔진의 기본지식이 없다는 것을 전제로 한다.


Unity 엔진의 기본지식이 있는 사람이 VRChat 아바타를 제작한다고 한다면


애초에 Any State 및 Can Transition To Self 의 기능이 무엇인지 정확히 알고 있을테니


내가 밑에서 할 말이 무엇인지 알 것이고 그렇게 했을 것이다.


그래서 글이 매우 길지만 다 중요한 내용이니 


남들한테 "님 아바타보면 랙걸리니 하이드아바타/블락할게요" 소리를 듣고 싶지 않으면 천천히 정독해주길 바란다.





우선 해당 게시글을 보기위해선 Any State와 Can transition To Self 옵션이 뭘 하는 녀석인지를 알아야된다.


Unity 공식 문서에 따르면

Any State는 말그대로 "모든 상태" 라는 뜻을 뜻하며


해당 레이어의 어떤 노드에 State 되어 있던 간에


조건(파라미터)을 바꾸면 그에 만족하는 노드로 State 되게 하는 것임.



Can Transition To Self 는 Any State에 연결된 노드의 트렌지션에서만 나오는 옵션으로


어떤 상태에 있을 때 그 상태에서 동일한 상태로 돌아갈 수 있는지의 유무를 결정함


A 상태인데 A 상태에서 다시 A 상태로 갈 수 있는지의 유무임




텍스트로 하면 이해가 안되니 


아래 사진으로 예시를 들어보겠음

(Action 이 Any State 와 Can Transition To Self 의 예시로 가장 들기 좋아 보여서 준비했으니 참고하면됨)

0cb3c919b58376b660b8f68b12d21a1d7a0198866f

- 적용 사항

/ New State 노드에는 모션이 존재하지 않고 Test 파라미터가 0일때 전이되도록 트랜지션을 설정함

/ OrangeJustice 노드에는 모션이 존재하고 Test 파라미터가 1일때 전이되고 Can Transition To Self 옵션을 활성화 해두었음

/ 둘다 Write Defaults 옵션을 활성화 해놨기에 서로 겹쳐질 일은 없음

/ 사용자 파라미터 및 액션메뉴에도 Test 파라미터를 0 혹은 1로 지정할 수 있도록 토글을 만들어 두었음


위 상태로 Test 파라미터를 1로 만들어보겠음


그러면 위 움짤처럼 캐릭터가 1프레임만 움직이고 움직이지 않음


(이상태로 Test 메뉴를 한번더 누르면 차렷으로 돌아옴)


이처럼 Can Transition to Self 옵션은 해당 노드에서 그 노드로 다시 갈 수 있는지를 확인함


메뉴로 Test 파라미터를 1로 만들었으니


Any State 는 Test 파라미터 값에 의해 계속 동작하게 되어 해당 노드로 State 될것이고


그 때문에 캐릭터는 해당 모션의 1프레임만 계속 재생하게됨 (사실상 1프레임 재생도 아님, 그저 계속 켜질뿐임)



그럼 Can Trasition To Self 옵션을 비활성화 하면 어떻게 될까?



Can Trasition To Self 을 비활성화 하게 되면 


Test 파라미터의 값이 바뀌면서 Any State 노드에서 OrangeJustice 노드로 State 가 전이되게 되고


그 이후 Can Trasition To Self 옵션이 비활성화 되어 있기에 최초 1번만 State가 바뀌게 OrangeJustice 노드의 애니메이션을 재생하게 됨



쉽게 말하면 Any State 가 해당 파라미터 조건에 맞는 노드로 State가 바뀌게 명령을 계속해서 내보내고 있기 때문에


Any State 에 연결된 노드들은 전부 Can Trasition To Self 옵션을 비활성화 해줘야함


최초의 명령만 내리고 파라미터가 변경되는 경우에만 Any State가 동작하여 명령을 수행하도록 해야함





이제 이 글을 본 갤러들은 Any State 와 Can Trasition To Self 옵션의 역할을 알게 되었으니


FX 애니메이터로 돌아와보자


밑 사진은 현재 나의 매쉬변경을 위한 레이어의 화면이다


(노드/State)

0cb3c919b58076b660b8f68b12d21a1d5daa89554465


(트랜지션)

0cb3c919b58176b660b8f68b12d21a1d645af777356c



이처럼 대부분의 사람들은 위 사진처럼


Left/Right Hand 의 레이어와 동일하게 모든 노드를 Any State와 연결해두었을 것이고


MMD 를 위해서 모든 노드의 Write Defaults 를 활성화 해두었을 것이며 (Write Defaults 에 대한 이야기도 조만간 올리겠음)


나같은 경우 Can Transition To Self 옵션을 비활성화 해두었지만 대부분은 체크가 되어있을 것이다.

(애니메이터에서 Any State 과 트랜지션 된 노드에만 해당 옵션이 나옴)



0cb3c919b58676b660b8f68b12d21a1de95eedafeb


그리고 매쉬변경을 위한 애니메이션은 위 사진처럼 대부분 1키프레임으로 동작을 하게 만들어 두엇을 것이다.



해결방법은 Any State와 연결된 모든 노드들의 Can Transition To Self 옵션을 비활성화 해두는 것이다.


위 Action 애니메이터로 예시를 들었다시피 Can Transition To Self 옵션때문에 1키프레임만 재생하게 만들어두니


1키프레임만 존재하는 애니메이션에 Can Transition To Self 옵션을 활성화 해둘 이유도 없다.


옵션을 활성화하면 계속 파라미터에 의해 해당 노드로 State 를 전이시키니 자원만 더 잡아먹는다.




그럼 일부 갤러들은 "Any State 연결을 안하면 해결되는 문제 아님?" 이라고 말할 것이다.


이 의문점은 직접 해보면 알게될 문제이지만 굳이 지금 아바타 옷 잘 바뀌는데 해볼 이유는 못 찾을거 같으니 내가 대신 해보았다.


Any State 를 연결하지 않고 메쉬를 변경하고 싶다는 사람은 밑 사진처럼 해주면된다.

(옷은 3개로 예시를 들겠다)

0cb3c919b58776b660b8f68b12d21a1dec0c56ec5c95


Any State 를 연결했을때와의 차이점은


Entry 단계에서의 상태를 정의 해줘야 하기에 Idle 애니메이션에서 각 애니메이션 노드로 연결하였고


각 애니메이션 노드에서 Exit 로 빠져줘야 애니메이션의 변경이 가능하기때문에


애니메이션에서 Exit 로 가는 트랜지션에 NotEquals 컨디션도 넣어줘야 한다


위처럼 한다면 어떻게 되는지 밑 움짤을 보자


움짤 초반에 각 애니메이션 노드의 트랜지션을 보여주면서


모든 트랜지션의 컨디션을 보여줬음


그리고 옷을 바꾸면 옷이 바로 바뀌는 것이 아닌


Idle 애니메이션 노드를 한번 거치고 바뀌게 된다


그래서 옷이 바로 바뀌지 않고 idle 옷이 잠깐 보이게 된다.




그럼 또 일부 갤러들은 "모든 노드를 다 연결하면 되지 않음?" 라고 말할 수 있는데


맞는 말이다. 모든 노드에 가정할 수 있는 모든 트랜지션과 컨디션을 다 때려박으면된다.


하지만 옷이 3개면 연결해줘야 하는 트랜지션은 2^3 인 8개 이고 옷이 4개면 2^4인 16개 이다.


이 계산법이 맞지는 않지만 아무튼 Any State 의 Can Transition To Self 옵션을 비활성화하면 될 일을 굳이 귀찮게 하고 싶지는 않다.



따라서 이 글을 본 갤러들은


다운로드사이트/텍스처메모리 최적화 방법 글과 더불어 


자신의 아바타를 더욱 쾌적하게 만들어서 많은 사람들과 즐겁게 게임하는 갤러들이 되었으면 좋겠다.


다음에는 Write Default 사용 방법으로 돌아오도록 하겠다.




3줄 요약

- FX 애니메이터의 모든 레이어에 Any State 와 연결된 모든 트랜지션의 Can Transition To Self 옵션을 꺼라

- 안끄면 계속 옷을 실행시키므로 자원을 소비하게 된다.

- 그러기 싫으면 노가다 하자.



푸루링 2023.03.26 01:26:29
레테 나 진짜 이런걸 배우고싶엇어 근대 무슨소린지 1도모르겟다 어카지 2023.03.26 01:26:35
린도르초콜릿 굿 2023.03.26 01:27:56
냥빵빵 개추 2023.03.26 01:29:13
메메 제일 좋은건 옷장을 안넣는게 2023.03.26 01:29:45
민트쟝 모든 노드 알아서 연결해주는 에셋 있어서 난 그거쓰는중이었는데 배워갑니다.... 2023.03.26 01:29:59
조개껍데기 이거 중요함 can transition to self 엄청 무거움 2023.03.26 01:57:38
번호 분류 제목 글쓴이 날짜 추천
3136322 일반 죄송합니다 헛저격했어요 17 Jagus 2023-07-02 12
3136119 일반 데스건 맞은 사람임 VRCX 로그 가져옴 16 Jagus 2023-07-02 25
3136101 일반 슬슬 그리워지기 시작하면 개추 3 ㅇㅇ 61.79 2023-07-02 11
3136096 일반 생일날웃겨보겠다고 병신글썼다가 일터지고 얼굴씨뻘개진거 생각하니 개웃기네ㅋ ㅇㅇ 112.186 2023-07-02 11
3135938 일반 떡밥 요약 18 ㅇㅇ 119.195 2023-07-02 13
3135580 일반 그냥 조사나 해보죠 ㅇㅇ 211.36 2023-07-02 32
3135463 일반 망갤테스트 2 ㅇㅇ 39.119 2023-07-02 29
3135411 일반 걍 자기 차단에 지인 엮어있으니까 그냥 해제 ㅇㅇ 2 ㅇㅇ 121.172 2023-07-02 13
3135314 일반 저기,..,,.,죄송?하지만.,., 9 앺찌님 2023-07-02 14
3135205 일반 내가 인정하는 게이는 얘밖에 없음 12 Yaksok 2023-07-02 11
3135056 일반 9시번개념글 금지할꺼면 글삭하셈 10 Rury 2023-07-02 12
3135045 일반 Maya 이새끼는 지도 좆같이 게이같은글 존나쓰면서 11 ㅇㅇ 222.99 2023-07-02 18
3135026 병신 파딱 빠져야 될놈은 안빠지고 애먼 애들만 빠지네 1 ㅇㅇ 220.65 2023-07-02 14
3134926 일반 이새끼 뭐임?? 9 ㅇㅇ 222.108 2023-07-02 13
3134599 병신 이달의 병신 2 ㅇㅇ 2023-07-02 10
3134318 일반 파딱 자짤 금지시켜야 한다고 생각하면 개추 6 ㅇㅇ 106.101 2023-07-02 13
3133722 교류/번개 21:00 내생일 접대 번개. 15 ㅇㅇ 126.28 2023-07-01 20
3132883 일반 번역) 언니들 비웃는 라임짤 5 눈바로 2023-07-01 13
3132489 일반 오늘은 제 과몰입을 부모님께 소개드렸습니다 8 ㅇㅇ 2023-07-01 13
3131999 일반 지우개 15 포동포도 2023-06-30 11
3131802 일반 브붕이들아 생일인데 축하해줄수있니 22 루블 2023-06-30 19
3131763 일반 몸으로 말해요 제시어 "암캐" (gif) 4 어저라고맞장깔까 2023-06-30 12
3131651 일반 보지식 기싸움하지않는 옳게된 랜매 6 ㅇㅇ 112.161 2023-06-30 15
3131579 일반 랜매 이새끼 왤케 싸가지 없어? ㅋㅋ; 29 콜드브루_ 2023-06-30 13
3131167 일반 답 없음 8 조개껍데기 2023-06-30 106
3131122 일반 오빠 밥 먹고올게 1 엞엞 2023-06-30 13
3131121 일반 비추주작기는 또 처음보네 1 라프레 2023-06-30 14
3131117 일반 짤녀 28분후퇴근 모에. 2023-06-30 13
3131114 일반 짤녀 퇴근 새수세미 2023-06-30 10
3131113 일반 비추주작해주샘 2 앺찌님 2023-06-30 13
3131112 일반 주작기 시즌이야? 무무에용 2023-06-30 12
3131110 일반 평생 곡물 없이 살기 vs 12 soju 2023-06-30 12
3131109 일반 나 두번째로 념글 갔어 2 무쌩겨써~ 2023-06-30 13
3131107 일반 이글은 곧 개념글로 올라갑니다. 2 ㅇㅇ 49.246 2023-06-30 15
3131045 일반 개씨발짘짜조따힘그네씨벌거 4 ㅇㅇ 2023-06-30 13
3131041 일반 전과몰입한테 편지쓰고싶음 5 연파랑 2023-06-30 13
3131040 일반 저도 사실 당신이 좋아요ㅎ 2 엞엞 2023-06-30 11
3131038 일반 곧 방명록 1.5만임 1 앺찌님 2023-06-30 14
3131037 일반 바나나우유가 싫어요 4 세루루 2023-06-30 12
3131036 일반 저는 달팽이고 이름은 코코이에요 9 포유콘 2023-06-30 10
념글 삭제글 갤러리 랭킹