강좌에 쓰인 아바타 링크
https://drive.google.com/file/d/1BLSNnB5ikmXgQo9NHv9v-m_fzJZNUUYo/view?usp=sharing
이 강좌는 이모트 8개와 표정 3개를 사용하여 이모트8 x 표정2 = 16개의 기능을 사용하는 것을 기준으로 하였습니다.
나머지 표정 1개는 원치않게 표정 키로 기능이 바뀌는 것을 막는 용도입니다.
원리는 간단합니다.
이모트로 1차 구분을 하고, 표정으로 2차 구분된 기능을 하게 끔 하였습니다.
이를 바탕으로 이모트 8개로는 특정 대상을 정하고, 표정으로는 ON/OFF 같은 느낌으로 구현을 해보았습니다.
본인쟝은 바이브를 사용하고 있어서 ON/OFF 라는 느낌이 들게끔
터치패드 좌측의 THUMBSUP 과 HANDGUN을 사용하였고, 추가로 HANDOPEN을 사용하였습니다.
말로 하는 것보단 직접 보고, 경험하는게 빠르게 이해가 되실겁니다.
01.
1) 먼저 Empty 를 만듭니다. 그림과 같은 구조가 되게 끔 해주시면 됩니다.
2) 아바타의 바로 아래에 만드셔야 합니다. 다른 곳에 만드시면 패스가 틀려집니다.
02.
1) Z 는 앞으로 만들 Empty 들이 많기 때문에 그룹으로 묶어서 정리해주는 역할을 합니다.
2) HANDOPEN 은 활성화된 EMOTE 들을 비활성화 해주는 역할을 합니다.
3) EMOTE1가 각 EMOTE에 대응을 하고, HOLDER는 활성화 된 이모트 이 외의 애니메이션이 작동하는것을 막기 위한 장치입니다.
03.
1) HANDOPEN, EMOTE1, THUMBSUP, HANDGUN 을 같이 선택하고 Animation Component 를 추가합니다.
2) 그리고 추가된 Animation Component 를 비활성화 합니다.
04.
1) HOLDER 만 선택해서 비활성화 합니다.
2) 스샷과 같은 형태의 하이어라키가 되면 됩니다.
05.
1) EMOTE1을 7번 복제해서 EMOTE2~8 형태로 만듭니다.
EMOTE1을 선택한 채로 CTRL+D를 7번 누르면 편하게 복제가 됩니다.
06.
1) 애니메이션을 만들어 줄 차례입니다. Animations 폴더를 하나 만들고, 하위에 Z 폴더를 하나 더 만듭니다.
2) 그리고 Z 폴더에 @EMOTE1 애니메이션을 하나 만듭니다.
3) @EMOTE1 을 마우스 오른쪽 메뉴 클릭하여 Show in Explorer 를 선택 탐색기로 해당위치를 열고
4) @EMOTE1.anim 을 복사 (CTRL+C), 붙여넣기 (CTRL+V) 해서
@EMOTE1, @EMOTE1_HANDGUN, @EMOTE1_THUMBSUP,
@EMOTE2, @EMOTE2_HANDGUN, @EMOTE2_THUMBSUP,
@EMOTE3, @EMOTE3_HANDGUN, @EMOTE3_THUMBSUP,
@EMOTE4, @EMOTE4_HANDGUN, @EMOTE4_THUMBSUP,
@EMOTE5, @EMOTE5_HANDGUN, @EMOTE5_THUMBSUP,
@EMOTE6, @EMOTE6_HANDGUN, @EMOTE6_THUMBSUP,
@EMOTE7, @EMOTE7_HANDGUN, @EMOTE7_THUMBSUP,
@EMOTE8, @EMOTE8_HANDGUN, @EMOTE8_THUMBSUP,
@HANDOPEN 형태로 파일이름을 변경합니다.
07.
1) 다시 유니티로 돌아오면 방금 만들었던 애니메이션 파일이 자동으로 추가되는 것을 볼 수 있습니다.
2) 이 애니메이션을 모두 선택해서, Inspector 에서 Debug 모드로 전환합니다.
3) Legacy 옵션을 체크, Wrap Mode 를 Loop 로 설정합니다.
4) 설정을 하고 나서, 다시 Normal 모드로 전환합니다.
08.
1) Z 하위에 객체들의 Animation Component 에 방금 만들었던 애니메이션을 배정합니다.
2) 객체 이름에 @ 가 붙은 애니메이션을 각각 모두 선택합니다.
3) THUMBSUP 과 HANDGUN 의 경우 상위 객체의 이름에 맞는 애니메이션을 선택합니다.
예를들어 EMOTE1 - HOLDER - THUMBSUP 일 경우 @EMOTE1_THUMBSUP 이 됩니다.
4) 버그로 Animation Component 에 Animations 가 2개 이상이 될 경우, Animation 을 먼저 None 으로 하고 Size 를 0 으로 설정하신 후, 다시 Animation 을 배정하면 됩니다.
5) 마지막으로 Animations Size 가 1 이고, 모두 잘 들어갔는지 확인합니다.
09.
1) 애니메이션 폴더 하위에 애니메이션을 만듭니다.
EMOTE1@Me, EMOTE2@Me, EMOTE3@Me, EMOTE4@Me, EMOTE5@Me, EMOTE6@Me, EMOTE7@Me, EMOTE8@Me,
HANDGUN@Me, HANDOPEN@Me, THUMBSUP@Me 형태로 파일이름을 변경합니다.
2) 애니메이션 오버라이드 컨트롤러를 하나 만들고, 거기에 방금 만들었던 애니메이션을 배정합니다.
3) 아바타의 애니메이션 컨트롤러와 커스텀 애니메이션을 방금 만들었던 오버라이드 컨트롤러로 설정합니다.
10.
1) 원본 아바타를 복제해서 애니메이션용 더미 아바타를 만들고 선택합니다.
2) 애니메이션 창에서 HANDOPEN@Me 를 선택하고, Z - HANDOPEN - Animator.Enabled 프로퍼티를 추가합니다.
3) 1:00 키프레임은 삭제합니다.
4) Z - EMOTE1 - HOLDER - Is Active 프로퍼티도 하나 추가합니다.
5) HOLDER Game Object.Is Active 만 선택하고 복사 (CTRL+C)
6) Project탭에서 Animations - Z - @HANDOPEN 애니메이션을 선택하고 붙여넣기 (CTRL+V)
7) 방금 붙여넣은 프로퍼티를 선택해서 F2를 눌러 패스 수정합니다.
Z/EMOTE1/HOLDER 을 ../EMOTE1/HOLDER 로 변경합니다.
8) 패스 수정이후 빈 공간을 누르고 다시 붙여넣기 (CTRL+V)
9) 7)의 단계로 돌아가서 EMOTE1~8 모두 만들어 줍니다.
10) 노가다의 산물을 전체 선택 (CTRL+A) 해서 복사 (CTRL+C)
11) @EMOTE1, @EMOTE2, @EMOTE3, @EMOTE4, @EMOTE5, @EMOTE6, @EMOTE7, @EMOTE8 에 붙여넣기 (CTRL+V)
12) 다시 @HANDOPEN 을 선택해서 0:01 에 키프레임 생성합니다.
@HANDOPEN 프로퍼티는 모두 값이 0 이어야 합니다.
13) 이번엔 @EMOTE1로 가서 ../EMOTE1/HOLDER 인 프로퍼티를 찾아 값을 1 로 설정하고, 0:01 에 키프레임 생성합니다.
Z/EMOTE1/HOLDER 를 제외한 나머지 프로퍼티는 모두 값이 0 이어야 합니다.
14) 반복해서 EMOTE1~8 모두 각각 작업을 합니다.
예를들어 @EMOTE8 의 경우는 ../EMOTE8/HOLDER 의 값만 1 이고, 나머지는 0 입니다.
11.
1) HANDOPEN@Me 를 열어서 HANDOPEN Animation.Enabled 프로퍼티만 선택하고 복사 (CTRL+C)
2) HANDGUN@Me 를 열어서 붙여넣기 (CTRL+V)
3) 방금 붙여넣은 프로퍼티를 선택해서 F2를 눌러 패스 수정합니다.
Z/HANDOPEN 을 Z/EMOTE1/HOLDER/HANDGUN 으로 수정
4) 패스 수정이후 빈 공간을 누르고 다시 붙여넣기 (CTRL+V)
5) 반복해서 EMOTE1~8 모두 만들어 주고, 모든 프로퍼티의 값을 1 로 설정합니다.
예시 : Z/EMOTE1/HOLDER/HANDGUN , Z/EMOTE2/HOLDER/HANDGUN , ... Z/EMOTE8/HOLDER/HANDGUN
6) 0:02 에 키프레임을 생성합니다. 이건 표정 애니메이션이라 0:02 에 만들어줍니다!!
7) 프로퍼티를 전체 선택 (CTRL+A) 해서 복사 (CTRL+C)
8) THUMBSUP@Me 에 붙여넣기 (CTRL+V)
9) 붙여넣은 프로퍼티들의 패스를 수정합니다.
HANDGUN 으로 끝나는 것을 전부 THUMBSUP 으로 수정
10) HANDOPEN@Me 로 다시 돌아와서 HOLDER Game Object.Is Active 프로퍼티를 삭제
11) HANDOPEN Animation.Enabled 속성 값을 1 로 설정 후 0:02 에 키프레임 생성합니다.
12.
1) 더미 아바타를 선택하고, Animation 창에서 IDLE (Read-Only) 를 선택합니다.
2) 프로퍼티를 전체 선택 (CTRL+A) 한 후, 복사 (CTRL+C)
3) EMOTE1@Me 를 열고, 붙여넣기 (CTRL+V)
4) HANDOPEN@Me 를 열고, HANDOPEN Animation.Enabled 를 선택 복사 (CTRL+C)
5) EMOTE1@Me 를 열고, 붙여넣기 (CTRL+V)
6) 방금 붙여넣은 프로퍼티 패스를 수정합니다.
Z/HANDOPEN 을 Z/EMOTE1 로 수정
7) 0:00 키프레임을 제외한 모든 키프레임을 삭제하고 0:10 에 키프레임을 생성합니다.
이모트 애니메이션은 0:10 보다 짧게 설정하면 오류가 발생합니다.
8) EMOTE1@Me 의 프로퍼티를 전체 선택 (CTRL+A), 복사 (CTRL+C)
9) EMOTE2@Me, EMOTE3@Me, EMOTE4@Me, EMOTE5@Me, EMOTE6@Me, EMOTE7@Me, EMOTE8@Me 에 붙여넣기 (CTRL+V)
10) 개별 EMOTE2~8@Me 에 마지막 Animation.Enabled 패스를 이름에 맞게 반복 수정합니다.
예시 : EMOTE1@Me -> Z/EMOTE1 , EMOTE2@Me -> Z/EMOTE2, ... EMOTE8@Me -> Z/EMOTE8
13.
이제 기반작업은 끝났읍니다. 앞으로는 @EMOTE번호_THUMBSUP과 @EMOTE번호_HANDGUN에 오브젝트를 켜고 끄는 것만 넣어주면 됩니다.
간단한 예제로 Cube 와 Sphere 를 켜고 끄는 것을 해보겠읍니다.
1) 먼저 더미 아바타를 삭제합니다.
2) Cube 와 Sphere 를 만듭니다. 스케일도 조정해주고 머리 위에 구분이 가도록 위치를 옮깁니다.
3) 다시 아바타를 복제 (CTRL+D) 해서 더미 아바타를 만듭니다.
4) 아바타에 오버라이드 된 애니메이션 중 임시로 잠깐 사용할 애니메이션을 하나 고릅니다.
본인쟝의 경우 HANDGUN@Me에 임시로 작업을 하겠습니다.
5) 녹화 버튼을 누르고, 더미 아바타에서 Cube 와 Sphere 를 각각 선택해서 체크 (Is Active) 를 토글합니다.
6) 이후 애니메이션 창을 보면 Cube 와 Sphere 에 대해 변경됐었던 속성들이 기록되어 있습니다.
이 속성을 복사해서 요긴하게 써먹으면 됩니다.
14.
1) 일단 녹화버튼을 눌러 기록모드를 끕니다.
2) HANDGUN@Me 에 생성된 Cube 와 Sphere 의 Is Active 속성을 모두 선택해서 복사 (CTRL+C)
3) Animations - Z - @EMOTE1_THUMBSUP 에 붙여넣기 (CTRL+V)
4) HANDGUN@Me 에 생성됐던 Cube와 Sphere 의 속성은 다른 곳으로 옮겨뒀으니 삭제합니다.
5) @EMOTE1_THUMBSUP 으로 돌아와서, 먼저 패스부터 수정합니다.
애니메이션 컴포넌트가 한참 하위단계에 있으니 패스를 맞춰줄 필요가 있습니다.
Cube 와 Sphere 의 패스를 수정하되, 각각 ../ ../ ../ ../ 를 앞에 붙여줍니다. (띄어쓰기를 했는데 붙여서 쓰셔야 합니다..)
6) @EMOTE1_THUMBSUP 의 프로퍼티를 전체선택 (CTRL+A) 복사 (CTRL+C) @EMOTE1_HANDGUN 에 붙여넣기 (CTRL+V)
7) @EMOTE1_HANDGUN 에서는 Cube 속성 값을 0 으로 Sphere 속성 값을 1 로 설정하고 0:01에 키프레임 생성합니다.
8) 다시 @EMOTE1_THUMBSUP 으로 돌아와서 Cube 를 1 로 Sphere 를 0 으로 해서 마찬가지로 키프레임 생성합니다.
9) 이로써 EMOTE1 의 기능은 Cube 와 Sphere 를 서로 번갈아가며 켜고 끄는 기능이 되었습니다.
15.
1) @EMOTE1_THUMBSUP 을 열어서 아래의 작업을 진행합니다.
2) Cube 프로퍼티만 선택해서 복사 (CTRL+C), @EMOTE2_THUMBSUP 과 @EMOTE2_HANDGUN 에 붙여넣기 (CTRL+C)
3) 다만 @EMOTE2_HANDGUN 의 경우 Cube 의 속성 값을 0으로 합니다. 0:00, 0:01 키프레임 둘 다 0 으로 하시면 됩니다.
4) 다시 @EMOTE1_THUMBSUP 을 열어서 이번에는 Sphere 를 @EMOTE3_THUMBSUP과 @EMOTE3_HANDGUN 에 똑같이 작업합니다.
5) 이로써 EMOTE2 의 기능은 Cube를 켜고 끄는, EMOTE3 의 기능은 Sphere 를 켜고 끄는 기능이 되었습니다.
16.
1) 실수로 남긴 임시 애니메이션이 없는지 확인한 후 더미 아바타를 삭제합니다.
2) 이모트 이름을 보기좋게 바꿔줍니다.
3) 예시 아바타에서는 표정에 따른 손가락 동작이 없어서, 쉽게 구별할 수 있도록 쿼드도 박아주었습니다.
짤을 보시면 아시겠지만
Cube 와 Sphere 를 서로 토글할 것인지, 혹은 Cube 나 Sphere 를 각각 켜고 끌 것인지를 EMOTE로 설정하고,
이후 표정으로 THUMBSUP 과 HANDGUN 을 하면 해당하는 대상에 반영이 됩니다.
글고 의도대로 HANDOPEN 이후에는 THUMBSUP 과 HANDGUN 의 영향을 받지 않게 됩니다.