이전에 시간에는 Unity 애니메이션을 해보았으니 이번에는 에셋(Asset)과 FBX 에셋을 적용하는 시간을 갖아보도록 하겠습니다.
2024.07.31 - [Unity/Unity 3D] - [Unity 3D] Unity 애니메이션에 대해 알아보자
[Unity 3D] Unity 애니메이션에 대해 알아보자
Unity를 작업하다가 보면 캐릭터의 움직이는 공격모션을 작업해야 할 시기가 많이 올 수 있습니다. 그만큼 Untiy 3D나 2D에서 애니메이션 게임을 제작하는 데 있어 중요한 작업 중 하나입니다. 이번
tangent0426.tistory.com
에셋(Asset) 및 FBX 모델 개요
에셋은 사전적 의미로 기업이나 경제 주체에 이해서 소유되고 통제되는 자원으로 Unity에서는 게임 제작에 필요한 요소, 즉 모델, 텍스쳐 이미지, 사운드 파티클 효과, 유틸리티등이 에셋에 속합니다. 에셋의 장점으로는 외부에서 자신의 프로젝트로 가져올 수 있습니다.
FBX 모델은 3D 게임에 사용되는 캐릭터 지형 등의 모델과 애니메이션 3D 맥스, 바야 등의 외부 프로그램으로 제작하고 유니티에서 제작된 파일을 출력하고 재생하는 역할을 합니다. 외부에서 가져온 FBX 모델은 Model, Rig, Animation, Materials 총 4개의 탭 정보를 성정하고 이를 통해 나온 모델 오브젝트 애니메이션 클릭하여 게임에 활용하게 됩니다.
외부에서 가져온 FBX 모델의 기본적인 정보로 모델 탭은 광원과 카메라 삽입,크기 등 씬과 관련된 옵션을 설정하거나 압축 최적화, 메시와 관련된 옵션을 설정합니다.
Scene | 광원과 카메라 임포드 여부, 모델 크기 등 씬과 관련된 옵션 설정 |
Scale | 원본 모델의 크기 설정(Unity Scale 1일 때 크기 |
Import BlendShapes | 블랜드 셰이프 메시와 함께 Import |
Mashes | 메시 압축, 최적화 등 메시오 관련된 옵션 설정 |
Mash | 메시 파일 크기를 줄일 압축 레벨 설정 |
Generate | 메시 콜라이더를 사용할지 여부(충돌 처리) |
Geometry | UV와 노말 처리 등을 위한 지오메트리 관련 옵션 설정 |
Normals | 노말 벡터를 계산할지, 어떻게 계산할지 설정 |
FBX 모델의 리깅 정보로 리깅은 캐릭터의 뼈대를 만들어 심거나 뼈대를 할당하여 캐릭터가 움직일 수 있는 상태로 만듭니다.
Animation Type | None : 애니메이션이 없을 때(지형, 건물, 아이템 등) |
Legacy ; Unity 3.x 이전 버전에서 사용(Animation 컴포넌트) | |
Generic : 정점 애니메이션(Animator 컴포넌트) | |
Humanoid : 본 애니메이션(Animator 컴포너트, 컴포넌트를 사용하여 제어) | |
Generic(연산속도가 빠르고 용량이 큼) | Avatar Definition : 아바타 정의를 가져올 위치 선택 |
Skin Weights : 하나의 버텍스에 영향을 줄 수 있는 최대 뼈대 수 | |
Humanoid(뼈대의 움직임을 실시간으로 연산) |
FBX 모델의 애니메이션 정보로 애니메이션은 모델링의 애니메이션을 설정하지 않은 탭으로 애니메이션 압축 타입 등을 설정하는 FBX 에셋 정보입니다. 기능으로는 현재 애니메이션 클립 이름, 애니메이션 프레임, 반복 재생 및 포즈 제어, 커브, 마스크, 애니메이션 재생 중 이벤트 함수 등 제어합니다.
FBX 모델에 적용되는 재질(material) 정보로 메테리얼(Materials) 탭에서는 메리리얼과 텍스처 접근방법을 정할 수 있으며 모델에 사용되는 메테리얼을 설정할 수 있습니다. Location은 Materials 및 텍스쳐 접근 방법 정의합니다.
FBX 모델 적용해 보기
외부 프로그램(Asset Store, Mixamo) FBX 모델 애니메이션을 다운로드 및 3D Unity에 적용합니다.
다운로드한 애니메이션을 3D Unity에 적용합니다.
다운로드한 애니메이션을 3D Unity에 적용합니다.
이전에 배웠던 애니메이션 컨트롤러를 생성합니다.
플레이어에 생성한 애니메이션 컨트롤러 삽입합니다.
플레이어 애니메이션 컨트롤러 창에 들어갑니다.
가져온 모델에서 Rig 태그를 변경하고 Animation Type모드에서 Humanoid로 태그를 변경하고 Apply으로 설정합니다.
애니메이션 컨트롤러 창에 들어가서 Create State – Empty 설정 후 Motion에서 다운로드한 애니메이션 삽입합니다.
플레이어 컨트롤러에 적용된 애니메이션 클립을 눌러 Loop Time을 체크, Apply로 적용합니다.
게임을 플레이하면 애니메이션이 실행되는 것을 볼 수 있습니다.
이번에는 C# 코드로 댄스애니메이션 동작을 추가하여 플레이어를 움직이게 만들어 보겠습니다.
댄스 애니메이션 노드를 추가하여 출발하여는 노드를 누르고 Make Transition으로 각 노드를 연결 및 설정합니다.
파라미터 창을 클릭하고 ‘+’로 Trigger파라미터 생성합니다.
Move 노드 화살표를 클릭하여 Has Exit Time 체크해제 및 Transition Duratior을 0으로 바꾸고
Conditions에서 “+”를 눌러 파라미터에 적용된 Trigger 생성합니다.
Project 창에서 C# Script를 생성 및 코드 작성
플레이어를 움직이는 동작코드를 설명하자면
해당 코드는 ‘Animator’ 컴포넌트를 사용하여 게임 오브젝트의 애니메이션을 재생하는 방법을 보여주며
Start() 함수에서 ‘anim’ 변수를 초기화하여 ‘Animator’ 컴포넌트를 게임 오브젝트에서 가져옵니다.
‘Update()’ 함수에서 ‘Input.GetKeyDown(KeyCode.Alpha1)’을 사용하여 키보드의 11 버튼을 눌렀는지 확인하고,
누르면 ‘anim.SetTrigger(“Dance”)’ 을 호출하여 “Dance”라는 이름의 트리거를 실행하여 애니메이션을 재생합니다.
스크립트를 사용하여 게임 오브젝트의 애니메이션을 제어합니다.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
public class Move : MonoBehaviour
{
public Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Alpha1))
{
anim.SetTrigger("Dance");
}
}
}
작성한 코드를 플레이어에 적용합니다.
플레이어 실행을 누르면 동작이 확인되는 것을 볼 수 있습니다.
애니메이션 적용 및 FBX을 이용해서 댄스 애니메이션을 동작하는 것을 만들어 보았습니다.
읽어 주셔서 감사합니다. ^^
'Unity > Unity 3D' 카테고리의 다른 글
[Unity 3D] Collider, Triger에 대해서 알아보고 사용해보자 (0) | 2024.08.06 |
---|---|
[Unity 3D]물리엔진 Rigidbody에 대해서 알아보고 사용해보자 (0) | 2024.08.05 |
[Unity 3D] Unity 애니메이션에 대해 알아보자 (0) | 2024.07.31 |
[Unity 3D]Post Processing(포스트 프로세스) 알아보기 (0) | 2024.07.30 |
[Unity 3D] 카메라(Camera)와 빛(Light) (1) | 2024.07.28 |