본문 바로가기
Unity/TIL

Unity FBX 파일, 에셋 애니메이션

by 김차루 2024. 6. 7.
스파르타 내배캠 36일차 TIL
C1조_ 1조라도 안 보이면

 

 

 

※ 무섭게 생긴 삐에로가 나옵니다 ※

※ 본격적인 설명은 제목부터 시작됩니다※

 

 

 

1인 개발을 하다보면 당연히 에셋 스토어에서 쇼핑을 해야한다. 그 중 가장 많이 만나게 되는 건 아바타와 애니메이션이지 않나 싶다. 3번째 팀 프로젝트에서는 에셋을 많이 사용해보고 싶어서 플레이어 작업을 맡게 되었다. 

 

플레이어를 작업할 때는 큰 문제가 없었다. 애니메이션 호출의 문제가 있었지만 간단한 문제여서 금방 해결하고 넘어갔다. 하지만 플레이어가 적한테 잡혔을 때 나오는 점프스퀘어 작업에 들어서자 큰 문제와 마주쳤다. 

 

그림과 같이 플레이어 아래에 점프스퀘어 오브젝트를 숨겨놓고 잡혔을 때 점프스퀘어를 실행하게 하는 구조이다. (시네머신을 이용하고 싶었으니 역량 부족으로 간단하지만 그럴 싸하게 보이도록 작업했다.) 게임 오브젝트가 켜지자마자 애니메이션이 실행 되는데 아래와 같이 애니메이션이 구겨지고 튕기는 문제가 생겼다. 

임의로 만든 오류

현재는 임시로 만든 버그지만 처음에는 특정 애니메이션 로드에서 적 오브젝트가 이리저리 튕겼다. 그래서 애니메이션 위치 오류인가? 하는 의문이 들어 트랜스폼을 건드려 봤다. 하지만 알맞게 맞춰놔도 애니메이션을 실행하면 특정 노드에서 포지션이 이리저리 튕기는 현상이 유지됐다. 결국 고민 끝에 튜터님을 찾아가게 됐다.  

Animation Type

간단하게 현상의 원인을 말하자면 본래 삐에로 아바타에 외부 사이트에서 다운 받아온 애니메이션을 억지로 넣어서 발생한 것이었다. 애니메이션을 제대로 알지 못해서 발생한 오류인데 이것에 대해 자세히 알아보고자 한다. 

 

 

 

아바타와 애니메이터

게임에서 필수적인 애니메이션을 만들기 위해서 어떤 것을 필수로 알아야 할까? 파라미터 이용, 트랜지션 적용 등등이 있겠지만 제일 중요한 것은 아바타인 것 같다. 예를 들어, 2D 게임에서 플레이어의 애니메이션을 만든다면 우린 움직이는 이미지 여러장을 준비하고 프레임 단위로 그림을 두고 녹화할 것이다. 하지만 3D에서도 같은 방법이 먹힐까? 정답은 x다.

 

아무리 단순한 오브젝트라고 해도 3D상에서 움직이려면 형체가 잡혀 있어야 한다. 이해가 어렵다면 사람과 졸라맨을 생각해보자. 사람은 여러 관절을 움직여야 하나의 행동이 되지만, 졸라맨은 선으로 이루워졌고 그 선의 위치가 조금만 바껴도 움직인다고 생각할 수 있다. 

 

이처럼 3D 게임에서는 자연스러운 움직임을 구현하기 위해 관절이 세세하게 구현된 모델링이 필요하다. 게임을 만들기 위해서 엔티티의 에셋을 구해오면 다음과 같은 파일을 확인할 수 있다.

FBX 파일

친절한 에셋은 여기서 프리팹이 있어서 바로 꺼내 사용할 수 있지만 사진처럼 프리팹이 없다면 fbx 파일을 사용해야 한다. fbx 파일을 보면 오른쪽 화면과 같이 모델의 정보를 확인하고 변경할 수 있다. 

Model : 외부에서 가져온 FBX 모델의 기본적인 정보
Rig : FBX 모델의 리깅 정보
Animation : FBX 모델의 애니메이션 정보
Materials : FBX 모델에 적용되는 재질 정보

 

이 중에서 중요한 메뉴에 대한 세부적인 설명만 설명해보려고 한다. 

 

Rig

FBX 파일 - Rig

리그는 캐릭터의 뼈대를 만들어 심거나 뼈대를 할당하여 캐릭터가 움직일 수 있는 상태로 만들 수 있는 메뉴이다. 

 

Animation Type

  • None : 애니메이션이 없을 때 (지형, 건물, 아이템 등)
  • Legacy : Unity 3.x 이전 버전에서 사용
  • Generic : 정점 애니메이션
    • 스냅샷 방식으로 정점 정보를 미리 만들어 두고, 이를 재생, 모델링 정보가 수정되면 애니메이션도 수정
  • Humanoid : 본 애니메이션
    • 뼈대를 심어 뼈대의 움직임에 맞게 메시가 움직이는 방식, 뼈대 정보만 일치하면 다른 모델의 애니메이션 재사용 (리타겟팅 가능)

Animation Definition

  • 아바타 정의를 가져올 위치 선택

Skin Weight

  • 하나의 버텍스에 영향을 줄 수 있는 최대 뼈대 수

Optimize Game Object

  • 게임 오브젝트의 Transform 계층 구조를 Avatar와 Animator 컴포넌트에서 제거 (성능 향상 됨)

 

FBX 파일 애니메이션 사용

FBX 파일의 목적이 애니메이션이라면 이 Rig가 중요한데, 만약에 회사에 애니메이터가 있고 수정해줄 사람이 있다면 FBX 파일의  Animation Type을 건들 일이 없을 것이다. 그래서 보통 Generic으로 두고 사용할 텐데,

 

만약 1인 개발로 에셋을 사용하고 원하는 애니메이션은 믹사모 같은 애니메이션 사이트에서 만들어 온다면 뼈대를 리타겟 해야지 애니메이션이 아바타에 알맞게 적용된다. 그러려면 Animation Type을 Humanoid로 설정해야 한다. 

 

믹사모 예제

https://www.mixamo.com/

 

Mixamo

 

www.mixamo.com

믹사모는 애니메이션을 만들 수 있는 사이트다. 이 사이트로 간단한 예제를 들어보겠다.

 

믹사모

믹사모에 들어가면 많은 적용할 수 있는 애니메이션이 있고 원하는 아바타를 업로드하여 다운 받을 수 있다. 이때 믹사모에서 적용한 애니메이션만 사용한다면 FBX 파일 - Rig를 수정할 필요가 없다. 하지만 기존에 있는 애니메이션과 믹사모에서 다운 받은 애니메이션을 함께 사용하려면 Rig에서 Animation type을 Humanoid로 변경해야 한다.  

FBX - Rig

그리고 믹사모 FBX 파일의 Avatar와 기존의 Avatar 뼈대를 동기화 하기 위해 Avatar Definition을 CopyFrom Other Avatar로 변경해야 한다. 그리고 소스 아바타를 기존 아바타로 변경하면 기존의 애니메이션도 문제 없이 믹사모 아바타에 적용할 수 있다. 

 

 

'Unity > TIL' 카테고리의 다른 글

Unity Particle System  (0) 2024.06.12
3번째 팀프로젝트 마무리  (0) 2024.06.11
Unity 팀프로젝트 현황  (1) 2024.06.05
Unity InputSystem: Send Message  (1) 2024.06.04
유니티 숙련 팀프로젝트 게임 기획  (0) 2024.06.03