1. 정의
- 월드에서의 걷기, 달리기, 점프, 비행, 수영 등이 가능한 직립 플레이어를 표현하기 위해 디자인 된 것
- 플레이어나 AI가 제어할 수 있는 고유의 클래스: 이동 / 충돌 가능
2. 특징
1) CapsuleComponent 소유: 충돌표현
- CapsuleComponent를 가지고 있어 다른 오브젝트와의 충돌 처리 / 관리 가능
2) CharacterMovementComponent 소유: 이동 가능
- CharacterMovementComponent를 가지고 있어 캐릭터 이동: 중력 / 속도 / 점프 기능 설정 가능
3) SkeletalMeshComponent 소유: 뼈대 구조
- SkeletalMeshComponent를 가지고 있어 캐릭터의 뼈대 표현: 애니메이션 적용 가능
4) Pawn(폰)과 비교
비교 | Pawn | Character |
공통점 | 플레이어 / AI가 제어할 수 있는 Actor | |
기본구조 | Actor를 상속받음 | Pawn을 상속 받음 |
MovementComponent | 없음: 필요 시 수동으로 추가 | 있음: 자유로운 이동 처리 가능 |
CapsuleComponent | 없음: 필요 시 수동으로 추가 | 있음: 자유로운 충돌 처리 / 관리 가능 |
Skeletal mesh | 없음: 애니메이션 적용하려면 복잡함 | 있음 : Skeletal Mesh와 Animblueprint를 통해 Blend와 State Machine 사용 가능 |
사용 예시 | 이동이 필요 없는 오브젝트 ex) 카메라 드론 | 복잡한 이동이나 애니메이션이 필요한 플레이어 캐릭터나 AI 캐릭터 |
3. 애니메이션 에셋 제작 흐름
1) 콘셉트 원화 → Modeling Sheet(모델링시트)로 변환
2) 캐릭터 모델링
(1) 3D 모델링 / Texturing : Blender, Maya, 3ds Max 등과 같은 3D 모델링 소프트웨어를 사용해 캐릭터 모델링
(2) Rigging(리깅)
- 본 애니메이션과 바이패드 애니메이션 모두에 해당하는 뼈대(Bone) 설정
- 사용할 뼈대의 구조 정의 / 움직임 설정
3) 애니메이션 제작
- 애니메이션 소프트웨어 사용: 애니메이션 제작을 위해 다양한 소프트웨어 사용
(1) 애니메이션 제작 유형
- Bone Animation(본 애니메이션)
: 3D모델의 뼈대(Bone)를 사용해 애니메이션을 생성하는 기법
: 최대한 적은 개수의 본(Bone)으로 애니메이션을 구현해 성능을 최적화 하는게 관건
- Biped Animation(바이패드 애니메이션)
: 두 개의 다리로 걷는 캐릭터의 움직임을 표현하는 기법
: 애니메이션 소프트웨어에서 제공하는 바이패드 도구를 사용해 설정 가능
4) 언리얼 엔진에 애니메이션 임포트
- 리깅한 애니메이션을 FBX(File BoX) 형태의 파일로 Export해 언리얼엔진에 Import
* FBX(Film BoX)
- 각종 3D DCC(ex. HUD)에서 사용하는 범용적 3D 데이터 포멧
: 바이너리 데이터로 구성, 리깅된 애니메이션 정보를 추출한 파일
* 바이너리 데이터: Vertex / Normal / UV / Bone Hierarchy / Animation(Bake FK) 관련 정보 값 등
- 게임에서 주로 3D 모델 / 애니메이션 등에 활용
: 상용화게임(특히 모바일)에서 마네킨 에셋을 사용하기에는 매 프레임별 real time 연산(=DrawCall)을 하기에
이 연산을 줄이고자 Bone의 개수를 줄임
4. 언리얼엔진에서의 캐릭터 구성
- ★★★주요 5가지 에셋 ★★★
1) Skeleton(스켈레톤)
- 3D모델의 뼈대 구조를 정의 하는 에셋
- 스켈레탈 메시에서 bones(joints) 을 정의하는데 사용하는 계층구조
: 스켈레탈 계층 구조 / 애니메이션 시퀀스 저장 / 연결하는데 사용
- 게임 내에서 시각적으로 보이지 않음: 게임 내에서 플레이어나 카메라에 의해 직접적으로 보이지 않음
- 캐릭터와 1 : 1 관계( 캐릭터 하나에 하나의 Skeleton만 생성 가능)
- skeleton생성하기: 스킨을 입힌 캐릭터 FBX를 임포트해 언리얼엔진에서 스켈레탈 메시로 변환
- Skeleton asset의 종류
1) Skeleton(골격)
- Skeletal Mesh의 형태(위치, 동작)을 정의 / 변형하기 위해 사용되는 뼈의 집합
* Skeletal Asset(스켈레탈 에셋)
- 스켈레탈 메시 + 캐릭터의 모든 동작과 시각적 표현(애니메이션, 물리 설정, 머티리얼)
- Root bone을 시작으로 계층구조(hierarachy) 방식으로 구성
2) Bone(뼈)
- Skeleton의 hierarchy를 구성하는 요소
3) Joint(관절)
- Skeleton의 Bon과 Bone 사이를 연결해 형태를 변형시키는 기능을 하는 요소
- 게임에서는 대부분 Joint를 Bone과 혼합해 사용
2) Skeletal Mesh(스켈레탈 메시)
- 캐릭터용 기본 에셋(= 캐릭터의 껍데기): 메시 + 본 데이터(스켈레톤)
- 스켈레탈 메시 에디터에서 캐릭터의 메시, 스켈레톤, 피직스 에셋, 애니메이션 시퀀스 등의 컴포넌트 확인 / 편집 가능
: 리깅, 애니메이션, 본 구조 등을 포함하고 있는 FBX 파일로 스켈레탈 메시 생성 가능
- 캐릭터와 1 : N 관계( 캐릭터 하나에 여러 개의 스켈레탈 메시 생성 가능)
3) Animation(애니메이션)
- 리깅된 메시인 스켈레탈 메시를 기반으로 제작해 캐릭터의 동작 표현 가능
- 애니메이션 시퀀스(특정 동작(ex. 걷기, 뛰기) 정의한 시퀀스) 생성 가능
- 캐릭터와 1 : N 관계(캐릭터 하나에 여러 개의 애니메이션 생성 가능)
- 특정 스켈레톤에는 특정 애니메이션이 적용되어있으니 해당 애니메이션을 다른 스켈레톤에 적용하려면 리타겟팅을 통해 변경해야함
* 타겟팅(Targeting): 애니메이션이 스켈레톤에 적용되어있는 것
4) Animation BluePrint(애니메이션 블루프린트)
- 복잡한 애니메이션 행동을 만들고 제어하는데 사용하는 비주얼 스크립트
- 캐릭터와 1 : N 관계(캐릭터 하나에 여러 개의 블루프린트 생성 가능)
- 구성요소
(1) Animation Slot(애니메이션 슬롯)
: 애니메이션 블랜드 / 결합할 수 있는 노드
: 애니메이션 몽타주(일회성 애니메이션)를 사용할 때 유용
: 블렌딩 노드와 함께 사용해 캐릭터의 특정 본(ex. 상단 바디 / 팔 등)에서만 재생하도록 분리 가능
(2) State Machine(스테이트 머신)
: 게임 내 애니메이션용 유한상태기기(FSM) - 애니메이션의 상태 정의 / 상태 간 전환 관리
* FSM(Finite State Machine) : 캐릭터나 게임 오브젝트 상태(State)와 이 상태를 변화시키는 Event / Conditions 으로 구성
: 종류
- 로코모션(Locomotion) : Idle / Walk / Run / Swimming
- 액션(Action) : Jump / Attack / 각종 스킬
: 블랜딩 가능 - 하나의 상태만 재생하는 것이 아니라 여러 동작을 동시에 표현하는 것 ex) 달리면서 칼 휘두르기
5) Physics Asset(피직스 에셋)
- 물리적인 애니메이션이 들어간 애셋: 콜리전과 피직스 정의
- 캐릭터와 1 : 1 관계(캐릭터 하나에 한 개의 피직스 에셋 생성 가능)
'Unreal Engine🎮 > 블루프린트 - 이론' 카테고리의 다른 글
블루프린트와 C++ 연동 (0) | 2025.05.27 |
---|---|
사용자에게 입력 데이터 받아오기 (6) | 2024.10.09 |
Pawn(폰) (0) | 2024.10.09 |
FPS와 Delta Time (2) | 2024.09.29 |
기하학(Geometry) (5) | 2024.09.25 |