[Go-Unity 3D] 17. 3D Model / Animation 애니메이션 ⭐⭐⭐

업데이트:

카테고리:

태그: , ,


3D Model / Animation

고박사의 유니티 기초를 정리.

1. 3D Model

에셋스토어 unity-chan을 사용

Model_Chan
Model , Rig , Animation , Materials

Model

외부에서 가져온 FBX 모델의 기본적인 정보
Model1

Scene

광원과 카메라 임포트 여부, 모델 크기 등 씬과 관련된 옵션 설정

  • Scale Factor : 원본 모델의 크기 설정
  • Improt BlendShapre : 블렌드 셰이프를 메시와 함께 Import

Meshes

메시 압축, 최적화 등 메시와 관련된 옵션 설정

  • Mesh Compression : 메시 파일 크기를 줄일 압축 레벨 설정
  • Generate Colliders : 메시 콜라이더를 사용할지 여부 (충돌 처리)

Geometry

UV와 노말 처리 등을 위한 지오메트리 관련 옵션 설정

  • Normals : 노말 벡터를 계산할지, 어떻게 계산할지 설정


Rig

FBX 모델의 리깅 정보
image

리깅(Rigging)

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

Animation Type

  • None : 애니메이션이 없을 때 (지형, 건물, 아이템 등)
  • Generic : 정점 애니메이션 (Animator 컴포넌트) 정점 정보를 미리 담아두고 재생, 모델링 정보가 수정되면 애니메이션도 수정, 연산속도가 빠르고 용량이 크다.
  • Humanoid : 본 애니메이션 (Animator 컴포넌트) 뼈대를 심어 움직임에 맞게 메시가 움직임, 연산속도가 느리고 용량이 작다. 실시간으로 연산

Generic,Humanoid

캐릭터, 몬스터와 같은 애니메이션이 존재할 때 사용

  • Avatar Definition : 아바타 정의를 가져올 위치 선택
  • Skin Weights : 하나의 버텍스에 영향을 줄 수 있는 최대 뼈대 수
  • Optimize Game Object : 게임오브젝트의 Transform 계층 구조를 Avatar와 animation 컴포넌트에서 제거 ( 성능 향상)

Optimize Game Object

image
Extra Transforms to Expose : Optimize Game Object체크 시 활성화
체크되는 transform은 게임 오브젝트의 자식 오브젝트로 출력된다.

예를들어 오른손 무기의 위치를 따라다니게 할려면 오른손에 해당하는 transform은 최적화하지 않고 남겨둬야 한다.

Mapping : 각부위별 정보 수정
ModelMapping

Muscles&Settings : 근육 수정
image

Animation

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

MODELANIMATION

Materials

FBX모델에 적용되는 재질 정보
image image

2. Animation System

AnimationSystem

Animation Controller 생성 상황에 따른 에니메이션 추가 컴포넌트에 Controller 설정

PlayerController.cs

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");
        }
    }
}


  • I 입력시 Idle(wait00) 재생
  • R 입력시 Run 재생
  • 작성 후 unity Jang오브젝트에 컴포넌트 등록




상태전이 에니메이션 전환

Animator 탭에서 parameters에서 에니메이션 전환의 조건 생성
image

PlayerController.cs

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");
            animator.SetFloat("MoveSpeed", 0.0f);
        }
        else if ( Input.GetKeyDown(KeyCode.R) )
        {
            //animator.Play("RUN00_F");
            animator.SetFloat("MoveSpeed", 5.0f);
        }
    }
}

  • MoveSpeed 에 따라 모션 변화





3. 정리

  • Model 에셋 추가, 세부설정
  • Animation 추가, AnimationController 사용


참고 : 유니티 TOP


📔

댓글남기기