UE4 - Creating an ARPG #1 - Importing Character and Animations

노기현·2024년 9월 23일

Today's Lesson: Importing Character and Animations

Summary

How to set up the project and import our own character and animations to our game instead of the ue4 skeleton

AstrumSensei


✅ 프로젝트 생성 단계

◼️ 카테고리 - 게임

◼️ 템플릿 - 3인칭(Third Person)

◼️ 프로젝트 세팅 - 시작용 콘텐츠 포함(with Starter Content)

블루프린트
1. 언리얼 엔진의 비주얼 스크립팅 시스템인 Blueprint (블루프린트)는 언리얼 에디터 안에서 노드 기반 인터페이스를 사용하여 게임플레이 요소를 만드는 개념을 토대로 한 비주얼 스크립팅 시스템이다.
2. 일반적인 스크립팅 언어와 마찬가지로, 엔진 내 객체 지향형(OO) 클래스 또는 오브젝트를 정의하는 데 사용된다.
3. UE4 를 사용하다 보면, 블루프린트를 사용하여 정의된 오브젝트를 그냥 일상적으로 "블루프린트" 라 하는 경우가 많다.


✅ 인게임 세팅 단계

◼️ 콘텐츠 브라우저 - 새 폴더 생성 <StarterStuff>
기본 폴더들을 이동시켜 한꺼번에 관리하기 위한 폴더
//Stuff: 물품(같은 성질을 갖는)

◼️ 새 폴더 생성 <Character_Models>

◼️ 새 폴더 생성 <Blueprints>

  • In 폴더 <Blueprints>
    New Character Blueprint <BP_Base>

✅ Mixamo

◼️ Character 다운로드

  • 원하는 캐릭터 선택 후 다운로드
    - Pose: T-pose
    //리깅 편의성 고려

◼️ Animation 다운로드

  • Idle Animation
    - Skin: Without Skin
    //애니메이션만 필요하기 때문에

  • Walking Animation
    - In Place(제자리): True

  • Walking Backward Animation
    - In Place: True

  • Walking Left Animation
    - In Place: True

  • Walking Right Animation
    - In Place: True

  • Running Animation
    - In Place: True

◼️ UE4에서 캐릭터 임포트

  • <Character_Models> 폴더에 fbx파일 드래그 앤 드랍
    //fbx 파일: 카메라, 조명, 기하학, 애니메이션 제작에 사용되는 골격 등 전체 3D 장면을 위한 데이터를 저장한다

왜 Skeleton을 비워(None) 놓나요?
Skeleton을 비워 두면 임포트중인 스켈레탈 메시를 기반으로 Skeleton을 자동으로 생성하기 때문

  • FBX 임포트 옵션 - 기타
    - Convert Scene Unit: True

⚠️ 캐릭터 import 상황에서 Issue 발생

  • Issue 내용
    "바인드 포즈를 찾을 수 없습니다. 시간 0을 바인드 포즈로 사용합니다."
  • 해결 방법
    - Update Skeleton Reference Pose: True
    - Use T0 As Ref Pose: True

◼️ 새 폴더 생성 <Animations>

  • In 폴더 <Animations>
    새 폴더 생성 <Walk>

  • In 폴더 <Walk>
    위에서 다운로드 받은 모든 Animation들 드래그 앤 드랍
    - 사용할 Skeleton 선택
    - Convert Scene Unit: True


✅ Blend Space

◼️ Blend Space: 원하는 수의 애니메이션을 구성하여 여러 입력값에 따라 서로 블렌딩할 수 있는 그래프 //보통 2개의 입력값 사용함

◼️ Animation - Blend Space 생성 <BSP_Walk>

In Blend Space <BSP_Walk> - Asset Details

  • Horizontal Axis
    - Name: Speed Side
    - Minimum Walk Speed: -600
    - Maximum Walk Speed: 600
  • Vertical Axis
    - Name: Speed Forward
    - Minimum Walk Speed: -600
    - Maximum Walk Speed: 600

    ThirdPersonCharacter의 CharacterMovement Component의 값을 참고

보통 여러 방향 보행 이동의 경우, 한 축은 이동 각도로 나타나는 Direction (방향)으로, 다른 축은 이동 Speed (속력)으로 정의한다. 이 강의에서는 다른 방식으로 변수를 설정한 것을 인지해야 한다.
언리얼 엔진 공식 문서 - 보행이동 기반 블렌딩

◼️ 에셋 브라우저 - Animation을 Grid에 드래그 앤 드랍
두 가지 입력값(Speed Side, Speed Forward)에 따라
그리드에 배치한 여러 애니메이션 중 하나를 보여질 애니메이션으로 결정


✅ 캐릭터, 카메라 세팅

◼️ In Character Blueprint Class <BP_Base>

  • Mesh Component
    - Skeletal Mesh 선택

    Mesh
    언리얼 엔진 4에서 Mesh란, 게임에서 사용되는 3D 모델 데이터를 의미합니다. 이는 게임 월드 내에 있는 모든 오브젝트(캐릭터, 환경, 아이템 등)의 외형을 나타내는 기본 요소입니다.
    Mesh는 주로 3D 모델링 소프트웨어(Blender, Maya 등)에서 제작된 후 언리얼 엔진으로 가져옵니다.

    언리얼 엔진 4에서 Mesh 활용 방법

    • 콘텐츠 브라우저를 통해 Static 또는 Skeletal Mesh를 게임에 배치
    • Blueprint를 사용해 Mesh에 동작(애니메이션, 충돌 처리 등) 추가
    • Material Editor에서 Mesh의 외형 커스터마이징
  • Mesh Component - Animation
    - Animation Mode: Use Animation Asset
    - Anim to Play: BSP_Walk

◼️ 카메라

  • Mesh → Spring Arm Component 추가 <Camera Boom>

    Spring Arm Component
    카메라 시야가 막히는 상황을 자동으로 처리하는 데 사용되는 컴포넌트

    • 장점1: 카메라와 타깃 간의 거리 조절 가능
    • 장점2: 캐릭터에 삼인칭 시점을 만들 목적으로 카메라 컴포넌트를 추가할 때, 스프링 암도 같이 추가해서 카메라가 레벨의 다른 오브젝트나 지오메트리에 가려지는 상황을 자동으로 처리
  • Spring Arm Component <Camera Boom>의 자식으로
    Camera 추가 <Follow Camera>
  • Camera Boom, Follow Camera의 Location (0,0,0)으로 조정
  • 카메라와 캐릭터가 바라보는 방향이 일치하도록 캐릭터의 Rotation 조정
  • Spring Arm Component - Camera - Target Arm Length로 거리 조절

◼️ 월드 세팅

  • 기존 Third Person Character 삭제

  • 월드 세팅 패널
    - Game Mode Override: ThirdPersonGameMode
    - Default Pawn Class: BP_Base
    게임 플레이시 Network

◼️ Movement Logic
In Character Blueprint Class <BP_Base>

  • BP_Base - 이벤트 그래프 추가 <Movement Graph>
  • In 이벤트 그래프 <Movement Graph>
    다음 두 코멘트 그룹 복사 붙여넣기
    ThirdPersonCharacter Blueprint - 이벤트 그래프 - Mouse Input, Movement Input

◼️ Camera 속성

3인칭 액션 게임 카메라 설정
캐릭터의 회전은 이동 방향에 따라 별도로 제어되고,
카메라는 플레이어가 원하는 방향을 자유롭게 탐색할 수 있습니다.

  • 컨트롤러(마우스/조이스틱)가 입력하는 회전값은 카메라와 동기화되어 카메라 방향을 제어합니다.
  • 캐릭터 본체는 이 회전값과 별도로 동작하며, 회전은 자동으로 변경되지 않습니다.
  • Camera Boom - 카메라 세팅
    - Use Pawn Control Rotation: True
    폰 제어 회전 사용을 활성화하면 카메라가 스프링 암을 기준으로 회전합니다
  • Camera Options - 카메라 옵션
    - Use Pawn Control Rotation: True
  • Camera Boom - 지연(Lag)
    - Enable Camera Lag: True
  • Character Movement Component - 캐릭터 무브먼트(회전 세팅)
    - Orient Rotation to Movement: True
    캐릭터가 가속되고 있는 방향으로 회전

  • BP_Base(self) - Pawn
    - Use Controller Rotation Pitch,Yaw,Roll: False
    캐릭터의 회전과 카메라의 회전 무관

✅ Animation Blueprint Class

  • New Animation Blueprint <AnimBP_Paladin>
    - Target Skeleton 선택

◼️ In <AnimBP_Paladin> - AnimGraph

  • AnimGraph로 BSP_Walk 드래그 앤 드랍
    (콘텐츠 브라우저 또는 에셋 브라우저에서)
  • BSP_Walk
    Speed Side, Speed Forward 변수로 승격(Promote to Variable)

◼️ In <AnimBP_Paladin> - EventGraph

  • Begin Play Event
    → Character에 형 변환 → As Character(Promote to Variable) → BP_BaseChar
  • Try Get Pawn Owner → Character에 형 변환_Object
    //Try Get Pawn Owner 노드는 Pawn형의 Object를 반환하기 때문에, Character 클래스로 형변환을 해준다
    //실제로 Character Class를 기반으로 생성된 경우만 가능하다
  • Update Animation Event
    ※주의: Speed Forward, Speed Side는 실제 캐릭터의 속도가 아닌, 캐릭터의 애니메이션을 결정하기 위해 사용되는 변수이다
    dot: 두개의 3D Vector의 내적을 반환한다
    //Forward,Right Vector 위로 투영된 크기를 의미

◼️ In Character Blueprint <BP_Base>

  • Mesh Component - Animation
    - Animation Mode: Use Animation Blueprint
profile
RPG 기획자 지망생

0개의 댓글