모델 임포트
비휴머노이드 애니메이션 임포트

휴머노이드 애니메이션 임포트

Unity에서 휴머노이드(Humanoid) 릭과 애니메이션이 포함된 모델을 임포트하는 경우 모델의 뼈대 구조를 애니메이션에 맞게 조정해야 합니다. Unity는 애니메이션을 올바르게 재생할 수 있도록 파일의 각 뼈대를 휴머노이드 아타바에 매핑하여 이 작업을 수행합니다. 그렇기 때문에 모델 파일을 Unity로 임포트하기 전에 준비하는 데 주의를 기울여야 합니다.

  1. 릭 타입을 정의하고 아바타 생성.
  2. 아바타 매핑 수정 또는 확인.
  3. 뼈대 매핑을 완료한 후 필요하면 근육 및 설정(Muscles & Settings) 탭을 클릭하여 아바타 근육 설정을 미세 조정할 수 있습니다.
  4. 필요하면 골격의 뼈대와 아바타 매핑을 휴먼 템플릿(.ht) 파일로 저장할 수 있습니다.
  5. 필요하면 아바타 마스크를 정의하여 특정 뼈대에 임포트되는 애니메이션을 제한할 수 있습니다.
  6. 애니메이션(Animation) 탭에서 애니메이션 임포트(Import Animation) 옵션을 사용 설정한 다음 나머지 에셋 관련 프로퍼티를 설정합니다.
  7. 파일이 여러 애니메이션 또는 액션으로 구성된 경우 특정 액션 범위를 애니메이션 클립으로 정의할 수 있습니다.
  8. 파일에 정의된 각 애니메이션 클립마다 다음 작업을 수행할 수 있습니다.
  9. 임포트 설정(Import Settings) 창 하단의 적용(Apply) 버튼을 클릭하여 변경 사항을 저장하거나 되돌리기(Revert) 를 클릭하여 변경 사항을 취소합니다.

아바타 설정

인스펙터(Inspector) 창의 릭(Rig) 탭에서 애니메이션 타입(Animation Type)휴머노이드(Humanoid) 로 설정합니다. 아바타 정의(Avatar Definition) 프로퍼티의 기본 설정은 이 모델에서 생성(Create From This Model) 입니다. 이 옵션을 유지하면 Unity는 파일에 정의된 뼈대 집합을 휴머노이드 아바타에 매핑하려고 합니다.

휴머노이드 릭
휴머노이드 릭

참고: 경우에 따라 이 옵션을 다른 아바타에서 복사(Copy From Other Avatar) 로 변경하여 다른 모델 파일에 이미 정의된 아바타를 사용할 수 있습니다. 예를 들어 3D 모델링 애플리케이션에서 여러 상이한 애니메이션을 사용하여 메시(스킨)를 생성하면 이 메시를 FBX 파일 하나로 익스포트하고 각 애니메이션을 자체 FBX 파일로 익스포트할 수 있습니다. 이런 파일을 Unity로 임포트하면 임포트하는 첫 파일(일반적으로 메시)에 대해 아바타를 하나만 생성하면 됩니다. 파일에서 동일한 뼈대 구조를 사용하는 한, 해당 아바타를 나머지 파일(예: 모든 애니메이션)에 다시 사용할 수 있습니다.

이 옵션을 사용 설정하면 소스(Source) 프로퍼티를 설정하여 사용할 아바타를 지정해야 합니다.

적용(Apply) 버튼을 클릭합니다. Unity는 기존 뼈대 구조를 아바타의 뼈대 구조와 일치시키려고 합니다. 대부분의 경우 릭의 뼈대 간 연결을 분석하여 이 작업을 자동으로 수행할 수 있습니다.

일치시키는 데 성공하면 설정(Configure) 메뉴 옆에 체크 표시가 나타납니다. Unity는 아바타 서브 에셋을 프로젝트(Project) 뷰에 있는 모델 에셋에 추가하기도 합니다.

아바타가 임포트된 모델의 서브 에셋으로 표시됨
아바타가 임포트된 모델의 서브 에셋으로 표시됨

일치 성공은 단순히 Unity가 필요한 뼈대를 모두 일치시킬 수 있었음을 의미합니다. 하지만 더 나은 결과를 얻으려면 선택적인 뼈대도 일치시키고 모델을 올바른 T-포즈(T-pose) 로 설정해야 합니다.

Unity가 아바타를 생성할 수 없는 경우 설정(Configure) 버튼 옆에 십자 기호가 표시되고, 프로젝트(Project) 뷰에 아바타 서브 에셋이 표시되지 않습니다.

Unity가 유효한 아바타를 생성하는 데 실패함
Unity가 유효한 아바타를 생성하는 데 실패함

아바타는 애니메이션 시스템에서 매우 중요한 요소이므로 아바타를 모델 에 적합하게 설정하는 것이 중요합니다.

그렇기 때문에 자동 아바타 생성에 성공하든 실패하든 관계없이 항상 아바타가 유효하고 올바르게 설정되었는지 확인해야 합니다.

아바타 설정

Unity가 모델의 아바타를 생성하는 데 실패한 경우 (Rig) 탭에서 설정…(Configure …)__ 버튼을 클릭하여 아바타(Avatar) 창을 열고 아바타를 수정해야 합니다.

일치시키는 데 성공한 경우 릭(Rig) 탭에서 설정…(Configure …) 버튼을 클릭하거나 프로젝트(Project) 뷰에서 창을 열 수 있습니다.

  1. 프로젝트(Project) 뷰에서 아바타 서브 에셋을 클릭합니다. 인스펙터(Inspector) 에 아바타 이름과 아바타 설정(Configure Avatar) 버튼이 표시됩니다.
  2. 아바타 설정(Configure Avatar) 버튼을 클릭합니다.
아바타 서브 에셋 인스펙터
아바타 서브 에셋 인스펙터

아바타를 아직 저장하지 않은 경우 씬을 저장할 것을 요청하는 메시지가 표시됩니다.

그 이유는 설정(Configure) 모드에서 씬(Scene) 뷰는 씬의 나머지 부분을 표시하지 않고 선택한 모델의 뼈대, 근육 및 애니메이션 정보만 표시하는 데 사용되기 때문입니다.

씬을 저장하고 나면 인스펙터(Inspector) 에 뼈대 매핑이 표시된 아바타(Avatar) 창이 나타납니다.

뼈대 매핑이 올바른지 확인하고, Unity가 할당하지 않은 선택적인 뼈대를 모두 매핑해야 합니다.

골격에는 최소한 Unity가 유효한 일치를 생성하기 위해 필요한 뼈대가 있어야 합니다. 아바타와 일치하는 뼈대를 찾을 확률을 높이기 위해, 뼈대가 나타내는 신체 부위를 나타내는 이름을 뼈대에 지정하십시오. 예를 들어 이름을 “LeftArm” 또는 “RightForearm”으로 지정하면 해당 뼈대가 무엇을 제어하는지 분명하게 알 수 있습니다.

매핑 방법

모델이 유효한 일치 항목을 생성하지 않는 경우 Unity에서 내부적으로 사용하는 것과 유사한 프로세스를 사용할 수 있습니다.

  1. 아바타(Avatar) 창 하단의 매핑(Mapping) 메뉴에서 지우기(Clear) 를 선택하여 Unity가 시도한 매핑을 모두 초기화합니다.
    아바타(Avatar) 창 하단의 매핑(Mapping) 드롭다운 메뉴
  2. 아바타(Avatar) 창 하단의 포즈(Pose) 메뉴에서 샘플 바인드-포즈(Sample Bind-pose) 를 선택하여 모델의 초기 모델링 포즈를 대략적으로 설정합니다.
    아바타(Avatar) 창 하단의 포즈(Pose) 드롭다운 메뉴
  3. 매핑(Mapping) > 자동 매핑(Automap) 을 선택하여 초기 포즈로부터 뼈대 매핑을 생성합니다.
  4. 포즈(Pose) > T-포즈 적용(Enforce T-Pose) 을 선택하여 모델을 필요한 T-포즈로 다시 설정합니다.

자동 매핑이 완전히 실패하거나 부분적으로 실패하면 씬(Scene) 뷰 또는 계층 구조(Hierarchy) 뷰에서 뼈대를 드래그하여 수동으로 할당할 수 있습니다. 뼈대가 맞는 것으로 인식되면 아바타 매핑(Avatar Mapping) 탭에 녹색으로 표시되고 그렇지 않으면 빨간색으로 표시됩니다.

포즈 재설정

T-포즈(T-pose) 는 Unity 애니메이션에서 요구되는 기본 포즈이자 3D 모델링 애플리케이션에서 권장되는 모델 포즈입니다. 하지만 T-포즈를 사용하여 캐릭터를 모델링하지 않은 경우 애니메이션이 예상대로 작동하지 않으면 다음을 선택할 수 있습니다.

아바타(Avatar) 창 하단의 포즈(Pose) 드롭다운 메뉴
아바타(Avatar) 창 하단의 포즈(Pose) 드롭다운 메뉴

뼈대 할당이 올바르지만 캐릭터의 포즈 가 올바르지 않으면 “T-포즈가 아닌 캐릭터”라는 메시지가 표시됩니다. 포즈(Pose) 메뉴에서 T-포즈 적용(Enforce T-Pose) 을 선택하여 문제 해결을 시도할 수 있습니다. 그래도 포즈가 올바르지 않으면 나머지 뼈대를 수동으로 T-포즈로 회전하여 문제를 해결할 수 있습니다.

아바타 마스크 생성

마스킹을 하면 클립 내에 있는 애니메이션 데이터의 일부를 무시할 수 있으므로, 클립에서 오브젝트나 캐릭터의 전체가 아닌 일부만 애니메이션화할 수 있습니다. 예를 들어, 팔과 다리의 모션 모두를 포함하는 스탠다드 걷기 애니메이션이 있다고 가정합시다. 하지만 캐릭터가 큰 물체를 양 손으로 들고 있는 경우라면 걸을 때 팔을 흔들지 않는 것이 자연스럽습니다. 이러한 경우에 마스크를 사용하면 걷기 애니메이션 위에 짐 운반 애니메이션을 상반신만 재생시키는 식으로 중첩함으로써, 짐을 들고 걸을 때에도 스탠다드 걷기 애니메이션을 사용할 수 있습니다.

임포트 시간 중이나 런타임에 애니메이션 클립에 마스킹을 적용할 수 있습니다. 임포트하는 중에 마스킹을 적용하면 폐기된 애니메이션 데이터를 빌드에서 제외할 수 있어 파일 크기와 메모리 사용량이 줄어들기 때문에 더 바람직합니다. 또한 런타임에 블렌드할 애니메이션 데이터가 더 적기 때문에 처리 속도도 빨라집니다. 하지만 때로는 임포트 중에 마스킹을 하는 방법이 목적에 부합하지 않을 수 있습니다. 이 경우 아바타 마스크(Avatar Mask) 에셋을 만들고 애니메이터 컨트롤러(Animator Controller)레이어 설정에 사용하여 런타임에 마스크를 적용할 수 있습니다.

빈 아바타 마스크 에셋을 생성하려면 다음 작업 중 하나를 수행합니다.

  • Assets 메뉴에서 Create > Avatar Mask 를 선택합니다.
  • Project 뷰에서 마스크를 정의할 모델 오브젝트를 클릭한 다음 마우스 오른쪽 버튼을 클릭하고 Create > Avatar Mask 를 선택합니다.

새 에셋이 Project 뷰에 표시됩니다.

아바타 마스크(Avatar Mask) 창
아바타 마스크(Avatar Mask) 창

이제 바디의 일부분을 마스크에 추가한 다음 애니메이션(Animation) 탭마스크 섹션에서 마스크를 애니메이션 레이어에 추가하거나 마스크에 레퍼런스를 추가할 수 있습니다.


  • 2018–04–25 일부 편집 리뷰를 거쳐 페이지 수정됨
모델 임포트
비휴머노이드 애니메이션 임포트