UE4 - Creating a RPG #3 - Importing A Custom Character

노기현·2024년 9월 25일

Today's Lesson: Importing A Custom Character

Summary

1. We take a look at how we can import a custom character for our RPG game inside of Unreal Engine 4.

2. We go over importing the character model, animations and set up the initial blend space for its use.

3. Take a look at using the animation blueprint to finish up our player character, creating the logic to generate the player's direction, speed & feed it into our blendspace.

4. Go over changing the mesh in the character blueprint.

Virtus Learning Hub


✅ Character Import

Mesh?

1. Mesh 정의
3D 모델의 기하학적 데이터를 의미.
FBX 파일을 언리얼 엔진에 임포트하면, 모델의 구조적 데이터(즉, 폴리곤으로 이루어진 형태)가 Skeletal Mesh 또는 Static Mesh로 변환된다.

2. 캐릭터 임포트 시 Mesh 종류
Skeletal Mesh (스켈레탈 메시)
애니메이션이 가능한 캐릭터 모델.
뼈대(스켈레톤)와 스킨(표면 데이터)이 포함된 메시.
캐릭터, 몬스터, NPC 등의 움직이는 에셋은 대부분 Skeletal Mesh 이다.
Static Mesh (스태틱 메시)
움직임이 없는 정적인 3D 오브젝트.
건물, 가구, 배경 오브젝트 등에 주로 사용된다.

3. fbx 파일
FBX 파일에는 캐릭터의 메시뿐 아니라 애니메이션, 머티리얼, 텍스처, 스켈레톤(뼈대) 등 다양한 데이터가 포함될 수 있다. 이 데이터들이 각각 언리얼 엔진에서 개별적으로 활용된다.

폴더 만들기 <Characters>
→ 미리 준비한 Characer fbx 파일을 드래그 앤 드롭

Convert Scene Unit 옵션에 대하여
//강의에서는 false로 설정했지만, true로 설정한 이유

언리얼 엔진에서 FBX 형식의 스켈레탈 메시를 임포트할 때 Convert Scene Unit 옵션은 중요하다. 이 옵션은 FBX 파일의 단위를 언리얼 엔진의 기본 단위(cm)로 변환할지 여부를 설정한다.
▪️Maya: 기본 단위가 cm라면 변환 필요 없음.
▪️Blender: 기본 단위가 meters라면 변환 필요.
▪️3ds Max: 기본 단위가 inches라면 변환 필요.

선택 기준

  • True: FBX 파일의 단위가 언리얼 엔진과 다를 때, 예를 들어 FBX 파일이 센티미터로 작성되었다면 이 옵션을 활성화하여 미터 단위로 변환하는 것이 좋다. 이렇게 하면 모델의 크기가 정확하게 유지된다.
  • False: FBX 파일이 이미 언리얼 엔진의 단위와 일치할 때는 이 옵션을 비활성화해도 된다. 이 경우 모델의 크기가 변경되지 않는다.

권장 사항
모델의 원래 단위가 무엇인지 확인한 후, 그에 맞게 옵션을 설정하는 것이 가장 좋다. 일반적으로 FBX 파일의 단위가 언리얼 엔진과 일치하지 않는 경우가 많으므로 True로 설정하는 것이 안전한 선택이다.

✅ Animation Import

  • 폴더 만들기 <Animations>
    → 애니메이션 파일 드래그 앤 드롭
  • Skeleton 선택: 위에서 import한 Character를 토대로 만들어진 Skeleton 설정

✅ Animation Blueprint

애니메이션 블루프린트
스켈레탈 메시 의 애니메이션을 제어하는 특수 블루프린트.
그래프는 애니메이션 블루프린트 에디터 에서 편집하며, 여기서 애니메이션 블렌딩, 스켈레톤의 본 직접 제어, 로직을 구성하여 각 프레임에 사용할 스켈레탈 메시의 최종 애니메이션을 최종 결정한다

◼️ 애니메이션 블루프린트 생성

  • 폴더 만들기 <Blueprints>
  • In 폴더 <Blueprints>
    Animation - Animation Blueprint 생성
    - 스켈레톤 선택
    - 이름: Eve_BP

◼️ 애니메이션 블루프린트 에디터

1. 툴바
블루프린트 컴파일, 저장 및 콘텐츠 브라우저 에서 애니메이션 블루프린트 애셋 위치 찾기는 물론 블루프린트 에디터 툴바 처럼 클래스 세팅 및 클래스 디폴트 세팅 정의가 가능합니다.

2. 뷰포트
선택된 스켈레탈 메시에서 애니메이션 애샛 재생을 미리보거나 애셋 관련 정보를 제공할 수 있습니다. 라이팅 모드 변경, 스켈레톤의 본 표시 또는 숨김, 애니메이션 재생 속도 조절, 심지어 스켈레탈 메시를 턴 테이블에 올려놓고 회전시키며 모든 각도에서 확인하는 것도 가능합니다.

3. 그래프
크게 두 개의 그래프 유형이 포함됩니다. 이벤트 그래프 는 스켈레탈 메시 포즈의 업데이트를 발동시키는 데 사용되는 애니메이션 이벤트 노드를 포함하며, 애님 그래프 는 스켈레탈 메시가 현재 프레임에 실제로 들어갈 최종 포즈를 구하는 데 사용됩니다. 이 두 개의 그래프가 조합되어 로직 및 캐릭터가 게임플레이 도중에 취할 포즈가 구동됩니다.

4. 디테일/ 프리뷰 씬 세팅
디테일 패널은 블루프린트 에디터의 디테일 패널 와 같으며, 그래프에 배치한 노드 및 생성한 변수 관련 프로퍼티도 여기서 접근하여 편집할 수 있습니다.

또 이 섹션에는 프리뷰 세팅 탭이 있습니다. 여기서는 프리뷰로 사용할 애니메이션 모드 또는 애니메이션 과 같은 뷰포트 세팅 설정, 프리뷰에 사용되는 스켈레탈 메시 전환, 적용되는 뷰포트 라이팅 및 포스트 프로세스 세팅을 정의하여 세팅에 다양한 라이팅을 적용하여 미리볼 수 있습니다.

5. 내 블루프린트
블루프린트 에디터에도 있는 것으로, 여기에는 애니메이션 블루프린트 안에 들어있는 그래프, 함수, 변수, 기타 관련 프로퍼티 목록이 들어있습니다.

6. 애님 프리뷰 에디터/ 애셋 브라우저
변수를 변경하여 뷰포트의 스켈레탈 메시를 업데이트할 수 있습니다. 디폴트 편집 모드로 전환하여 변수를 변경한 뒤 기본 값에 바로 적용할 수도 있습니다. 별도의 탭에 도킹되어 있는 애셋 브라우저 에서는 스켈레톤 애셋에 연관되어 거기서 사용할 수 있는 모든 애니메이션 애셋을 볼 수 있습니다.

✅ State Machine

스테이트 머신
스켈레탈 애니메이션을 여러 상태별로 나누어,
상태 전환시 일어나는 블렌딩을 완벽히 제어할 수 있다.

결국 최종 애니메이션 포즈에는 하나의 애니메이션만을 입력값으로 넣을 수 있는데, 스테이트 머신을 이용하면 여러 개의 애니메이션 중 하나를 설계한 규칙에 따라 편리하게 입력값으로 결정할 수 있다

  • StateMachine 추가: Eve_States

  • In State Machine <Eve_States>
    - State 추가: Idle
    - State 추가: Walk/Run
    - State간 Transition 생성

  • 각 State의 Animation 설정
    Animation 설정이 필요한 State 더블 클릭
    → 애셋 브라우저에서 원하는 Animation 드래그 앤 드롭 → 노드 연결

✅ Blend Space

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

◼️ Animation - Blend Space 생성 <Eve_BS>

  • Horizontal Axis
    - Name: Direction
    - Min: -180
    - Max: 180
  • Vertical Axis
    - Name: Speed
    - Min: 0
    - Max: 600
    //Why 600? Character Movement Component 참조한 결과
  • In Grid
    - Direction, Speed 값에 맞게 Animation 드래그 앤 드롭
    - Shift+마우스: 녹색 점 이동 가능(Animation Preview)

✅ State Machine에서 Blend Space 사용

◼️ 사용할 블렌드 스페이스를 애니메이션 블루프린트의 AnimGraph에 추가

  • 오른쪽 하단의 에셋 브라우저에서 Blend Space <Eve_BS> 드래그 앤 드랍

  • Eve_BS
    Direction → Promote Variable(변수로 승격)
    Speed → Promote Variable(변수로 승격)

◼️ In Animation Blueprint - Event Graph

  1. Direction 구하기
  • Blueprint Updae Animation → Cast to Third Person Character
    //조종할 캐릭터의 블루프린트에 맞게 형변환
  • Get Player Character → Cast to Third Person Character_Object
  • Calculate Direction 노드 생성
    Third Person Character → Set Direction
    Third Person Character_As Third Person Character → Get Actor Rotation, Get Velocity → Calculate Direction_Rotation, Calculate Direction_Velocity
  • Calculate Direction_return value → Set Direction
  1. Velocity 구하기
  • Get Velocity → VectorLengthSquared → Set Speed
    //벡터의 크기 구하는 공식
  • Direction → Speed 연결
    ⚠️연결을 하지 않으면 실행되지 않음

◼️ In AnimGraph - State Machine <Eve_States>

  1. Transition Rule: Idle → Walk/Run
    Speed가 10 이상이면 true

  2. Transition Rule: Walk/Run → Idle
    Speed가 10 미만이면 true

✅ Character에 Mesh, Animation 적용

◼️ In Blueprint <ThirdPersonCharacter>

  • Mesh 선택
  • Animation 선택

✅ Result

  • Character Mesh, Animation 적용
profile
RPG 기획자 지망생

0개의 댓글