728x90

 이 글은 인프런 [따라하면서 배우는 고박사의 유니티 기초] 강의를 수강한 후 정리한 글 입니다.


 

[지금 무료] 따라하면서 배우는 고박사의 유니티 기초 | 고박사 - 인프런

고박사 | 유니티로 게임을 개발하고 싶은 초보자를 대상으로 하며, 유니티 설치부터 2D/3D 게임 개발에 필요한 기초 지식까지 자세하게 설명합니다. (강의에 사용되는 모든 리소스는 영상 상단의

www.inflearn.com


FBX Model 개요

이번 실습에서 사용하는 3D FBX 파일은 Asset Store에서 "Unity-Chan! Model" 검색 후 사용한다.

https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705

에셋을 추가하면 package manager에서 다운로드 후 프로젝트 뷰에 임포트 할 수 있다.

 

외부에서 가져온 FBX Model Asset은 Model, Rig, Animation, Materials 4개의 tab 정보를 설정하고 이를 통해 여러 요소들을 게임에 활용하게 된다.


FBX Model - Model

 

Scene

  • 광원과 카메라 임포트 여부, 모델 크기 등 씬과 관련된 옵션 설정
  • Scale Factor : 원본 모델의 크기 설정
  • Improt BlendShapre : 블렌드 셰이프를 메시와 함께 Import

Meshes

  • 메시 압축, 최적화 등 메시와 관련된 옵션 설정
  • Mesh Compression : 메시 파일 크기를 줄일 압축 레벨 설정
  • Generate Colliders : 메시 콜라이더를 사용할지 여부 (충돌 처리)

 

Geometry

  • UV와 노말 처리 등을 위한 지오메트리 관련 옵션 설정
  • Normals : 노말 벡터를 계산할지, 어떻게 계산할지 설정

FBX Model - Rig

 

리깅(Rigging)

모델의 뼈대를 만들어 심거나 뼈대를 할당하여, 모델이 애니메이션 될 수 있는 상태로 만드는 것

Animation Type

  • None : 애니메이션이 없을 때 (지형, 건물, 아이템 등)
  • Legacy : Unity 3.x 이전 버전에서 사용 (Animation 컴포넌트)
  • Generic : 정점 애니메이션 (Animator 컴포넌트) 
  • Humanoid : 본 애니메이션 (Animator 컴포넌트) 
  • Avatar Definition : 아바타 정의를 가져올 위치 선택
  • Skin Weights : 하나의 버텍스에 영향을 줄 수 있는 최대 뼈대 수
  • Optimize Game Object : 게임오브젝트의 Transform 계층 구조를 Avatar와 animation 컴포넌트에서 제거 ( 성능 향상)
 

 

Optimize Game Object

 

Extra Transforms to Expose

  • Optimize Game Object 체크됬을 때만 활성화되는 메뉴
  • 체크되는 transform은 게임 오브젝트의 자식 오브젝트로 출력

예시로 오른손 무기를 쥐어 캐릭터가 애니메이션 할 때, 무기가 오른손 위치를 따라다니게 하려면 오른손에 해당하는 transform은 최적화하지 않고 남겨둬야 한다.

Optimize Game Object 결과

 

 

FBX Model - Rig [Animation Type: Generic]

 

FBX Model - Rig [Animation Type: Humanoid ]

 

Avatar Configure - Mappiing

각 부위의 Transform이 연결되어 있는 모습을 확인하고 수정할 수 있다. 

Avatar Configure - Muscle & Setting

근육 정보를 수정할 수 있다.


FBX Model - Animation

FBX Model모델의 애니메이션을 설정하는 탭으로 애니메이션 정보가 없는 FBX모델의 경우 다음과 같이 정보가 뜨지 않는다.

 

 

애니메이션 정보가 있으면 압축 타입을 설정하는 FBX 에셋정보

하나의 FBX에 여러 동작이 담겨있을 떄 동작을 나누는 clips, Clip 정보, 미리보기가 있다.

하나의 clip 상세 정보


FBX Model - Materials

Materials 및 텍스처 접근 방법을 정의하고 모델이 사용되는 Meterials를 설정할 수 있다.

 
unitychan 모델 파일을 Hierarchy View로 드래그하면 모델의 회전 정보, 카메라 위치 조정하여 가까이서 볼 수 있다. 

FBX Model - Mecanim Animation System

외부에서 가져온 FBX 모델은 Hierarchy View로 드래그 앤 드롭했을 때 캐릭터, 지형 등 화면에 보이는 오브젝트로 활용된다.

애니메이션 재생하기 위한 과정을 살펴 보면 FBX 자식으로 애니메이션과 아바타 마스크를 가지게 된다.

애니메이션은 애니메이션 컨트롤러에 등록하여 원하는 여러 상황에 애니메이션이 재생될 수 있도록 설정하게 된다.

설정 완료된 애니메이션 컨트롤러와 아바타 마스크를 컴포넌트로 사용되는 애니메이터 컨포넌트에 등록하게 된다. 

 

Animator Compoent

 

Animator Controller Asset

현재 애니메이터에서 재생 가능한 애니메이션(clip)들을 관리하는 상태 머신으로 project view > + > Animator controller로 파일 생성할 수 있으며, 애니메이터 수정은 window > animator view에서 수정한다. 

 

Animator View에 등록된 애니메이션 상태

 

Animator Asset (*.anim)

하나의 애니메이션 동작에 대한 설정(걷기, 왼손을 휘둘러 공격, 점프 대기 등)을 할 수 있다. 

 

player라는 애니메이터 컨트롤러를 생성한 뒤 unitychan에 애니메이터 컨트롤러를 등록한다. 

Animator View를 열고 create state > empty로 idle이라는 상태를 만든다. 이후 Motion에 WAIT00 애니메이션을 등록한다. 


애니메이션 전환 - Play()

달리는 애니메이션을 추가한다. 

원하는 타이밍에 애니메이션을 전환하는 스크립트를 작성한다. 

PlayerController.cs

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Animator animator;

    private void Awake()
    {
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        if ( Input.GetKeyDown(KeyCode.I) )
        {
            animator.Play("Idle");
        }
        else if ( Input.GetKeyDown(KeyCode.R) )
        {
            animator.Play("RUN00_F");
        }
    }
}

스크립트를 컴포넌트에 등록하면 R 버튼을 누르면 Player가 뛰고 I버튼을 누르면 멈추게 된다. 


 


애니메이션 전환 - 상태전이

Make Transition으로 상태전이를 설정할 수 있으며 화살표가 상태 전이를 나타낸다. 화살표의 진행 방향으로만 애니메이션 전환이 가능하며 조건을 설정하지 않는 경우 애니메이션 1회 재생후 자동으로 애니메이션이 전환된다.

 

조건을 이용한 상테 전이 제어

파라미터를 생성하여 상태 전이의 컨디션을 리스트에 등록해 애니메이션 전환을 위한 조건으로 사용된다. 

 

상태 전이 설명

왜 조건을 추가해도 moveSpeed가 안나오는지 모르겠다..

 

+ Recent posts