본문 바로가기
[Research]/Unity & VR

[Unity] Generic animation을 모든 인간형 오브젝트에 적용가능한 Humanoid animation으로 만들기

by 늘품비 NeulpumB 2023. 5. 26.

아래 내용은 본인 참조용이며, 잘못된 정보가 있을 수 있습니다.

 

0) 사용한 기기 및 세팅: Unity 2021.3.18f1 3D URP

 

0) 준비물: T-pose의 인간형 아바타, Umotion Pro (https://assetstore.unity.com/packages/tools/animation/umotion-pro-animation-editor-95991), generic animation file

아래 작업을 위해서는 유료 asset인 umotion pro가 필요하다.

 

0) Generic animation과 Humanoid animation의 차이는 Generic animation은 실제 적용했던 object가 아닌 다른 오브젝트에 적용했을 때 에러가 뜨면서 움직이지 않는다는 점이다. 반면 Humanoid animation은 Rig가 humanoid인 오브젝트라면 어디든 동일하게 적용이 가능한 범용 애니메이션이다.


1) T-pose의 인간형 아바타의 Inspector에서 [Avatar Definition > Create From This Model]을 선택하고 Apply를 누른다.

주의할 점은, 이 단계에서는 Animation Type이 Generic이어야 한다 (Generic Animation을 humanoid로 바꿔야 하기 때문에)

 

2) Umotion Pro를 Package manager에서 import한 후, 상단에서 [Window > UMotion Editor > Clip Editor와 Pose Editor를 모두 연다.

 

3) Clip Editor에서 [File > New Project > Generic]을 선택한다. Generic animation이 아닌 Humanoid animation을 사용하는 경우에는 Humanoid 옵션을 선택하면 된다.

 

4) 프로젝트를 생성하면 .asset 확장자를 가진 파일이 생성된다.

 

5) 1)단계에서 수정한 아바타 오브젝트를 Hierarchy에 가져다 놓는다.

 

6) Pose Editor에서 [Select a GameObject to animate]에 해당 아바타 오브젝트를 드래그 앤 드롭으로 집어넣는다.

해당 object를 Drag and Drop한다. 이때 project의 속성과 avartar의 타입이 맞지 않으면 에러가 뜬다 (예를 들어, 프로젝트는 generic인데 아바타는 humanoid type이면 에러가 발생할 수 있다)

 

7) 아래와 같은 창이 뜨면 Create Configuration을 클릭한다.

 

8) 아래와 같은 상태가 된 것을 확인한다.

a. 아바타에 bone이 보이는가

b. Clip Editor에 Animated Properties가 생성되었는가

 

9) Clip Editor에서 [File > Import Clips]를 선택한다.

 

10) [Add Clips]를 선택하여 아바타에 삽입하고픈 generic animation 파일을 선택한 뒤, [Import]를 클릭한다.

 

11) 아래와 같이 import에 성공했다는 창이 뜨면 OK를 클릭한다.

 

12) Clip Editor에 키프레임이 정상적으로 추가되었는지 확인한다.

 

13) Clip Editor의 하단에 위치한 Run을 눌러서 적용된 애니메이션이 제대로 작동하는지 확인한다.

 

+) 만약 추가로 애니메이션을 수정하고 싶다면, Pose Editor에서 [Auto Key > Update]로 변경 후 수정한다.

Off 상태면 수정을 해도 적용이 되지 않는다.

14) 애니메이션에 더이상 수정사항이 없다면 Export를 위해 Settings를 선택한다.

 

15) 아래와 같이 설정한다.

  • File Format: Fbx Binary
  • Write Mode: Update Existing File (이 옵션을 선택하면 새로운 file 대신 덮어쓰기가 된다)
  • Destination File: 덮어쓰는, 혹은 기본 옵션이 되는 아바타를 선택한다. 여기서는 1)단계에서 사용한 그 아바타를 선택하여 넣으면 된다.
  • Clip 이름을 바꾸고 싶을 경우 상단의 Clip에서 이름을 바꿀 수 있다.

 

16) clip이 여러개라면 Export all clips, 한 개만 할 거라면 current clip을 선택한다.

 

17) 아래 그림과 같은 창이 뜨면 Exporting이 성공한 것이다.

 

18) 애니메이션이 실제 run에서 적용되는지 확인하기 위해서 Pose Editor의 Select a GameObject to animate를 clear 한다.

19) update된 아바타의 inspector에서 [Animation > Import Animation]을 체크한다.

20) Clip에서 source take가 수정한 애니메이션으로 설정되어있는지를 확인한다.

21) 해당 애니메이션 클립을 복제하여 애니메이터 컨트롤러에 동일하게 넣으면 적용 가능

 


+) 왼쪽 팔의 위치를 수정한 후, 다른쪽 팔도 동일하게 수정하고 싶다면 clip editor에서 mirror하고 싶은 부위를 선택한 후, [Copy to Other side]를 선택한다. 그럼 반대쪽 부위에 수정사항이 동일하게 적용된다.

 

+) Humanoid로 아바타 타입을 바꿀 경우, 애니메이션을 미러링 할 수 있는 옵션이 생긴다.