💭회고
State Machine을 활용한 캐릭터 동작 애니메이션 적용에 대해 학습했다.특히 애니메이션 블루프린트의 개념, 캐릭터 이동 상태 감지, State Machine 설계를 중심으로 실습을 진행했다. 그리고 Blend Space와 캐싱된 포즈 활용이 퍼포먼스 최적화에 큰 도움이 된다는 점을 확인했다.다음에는 공격 모션과 상호작용 애니메이션을 추가하는 방향으로 학습을 해보면 좋을 거 같다.
🗺️마인드맵
📒학습 내용
1️⃣ 애니메이션 블루프린트 이해하기
✅ 애니메이션 블루프린트 (Anim Blueprint)란?
- 스켈레탈 메쉬(Skeletal Mesh) 기반 캐릭터 애니메이션을 제어하는 블루프린트
- State Machine 및 블렌딩(Blend)을 활용하여 동작 간의 전환을 설정할 수 있음
- 이벤트 그래프(Event Graph)에서 캐릭터의 속도, 점프 여부 등의 변수를 활용해 애니메이션을 동적으로 변경 가능
✅ 애니메이션 블루프린트 생성 과정
- Content Browser에서 우클릭 → Animation → Animation Blueprint 생성
- 스켈레톤(Skeleton)을 선택하여 블루프린트 생성
- Anim Graph에서 기본적인 Output Pose 연결
- Event Graph에서 이동 데이터를 받아올 수 있도록 캐릭터 Movement Component와 연동
📌 애니메이션 블루프린트는 캐릭터의 모든 애니메이션 상태를 관리하는 중추적인 요소이다!
2️⃣ 이벤트 그래프에서 Movement Component 정보 받아오기
✅ 캐릭터 Movement Component 변수화
- Movement Component는 캐릭터의 이동 속도, 점프, 낙하 여부 등의 데이터를 제공
- 애니메이션 블루프린트와 연동하기 위해 Movement Component 변수를 선언
✅ 구현 과정
- Event BlueprintInitializeAnimation 노드를 추가하여 초기화 시 Movement Component 가져오기
- `Get Owning Actor` 노드로 현재 애니메이션을 재생 중인 `액터`를 가져온다.
- 캐릭터는 액터의 자손이지만, 우리가 필요한 것은 캐릭터의 `Character Movement` 이므로 캐릭터로 캐스팅해준다.
- 캐릭터를 변수로 승격해준다.
- 캐릭터에서 Get Charater Movement한다.
- `CharacterMovement`도 변수 승격(선언)하고 `Get Character Movement` 노드를 활용해 값 저장
3️⃣ Locomotion State Machine 설계하기
✅ State Machine이란?
- 캐릭터의 현재 상태를 기준으로 애니메이션을 전환하는 구조
- 예: Idle(정지) → Walk(걷기) → Run(뛰기) → Jump(점프) 등으로 상태가 변경됨
✅ Locomotion State Machine 설계 과정
- State Machine 추가 → Locomotion이라는 이름 설정
- Idle, Walk, Run 상태 생성 및 전환 설정
- Blend Space 연결 → 이동 속도에 따라 자연스럽게 애니메이션 변경
// 전환 조건 설정 (Blueprint)
bShouldMove = GroundSpeed > 3.0f;
📌 State Machine을 활용하면 복잡한 애니메이션 전환을 직관적으로 관리할 수 있음!
4️⃣ Main States State Machine 설계하기
✅ Main States 개념
- 이동(Locomotion) 뿐만 아니라 점프, 착지, 추락 등의 상태를 추가적으로 관리하는 State Machine
- Locomotion을 포함한 상위 개념의 State Machine으로 구성됨
✅ 구현 과정
- Main States State Machine 생성 → Locomotion을 캐시 포즈로 저장하여 재활용
- 점프, 착지, 추락 상태 추가 → bIsFalling, bIsJumping 변수를 활용해 상태 전환
- State Transition Rule 설정 → 자동으로 애니메이션이 전환되도록 로직 구현
📌 이 방식은 실제 게임 개발에서 가장 많이 사용되는 구조이며, 확장성이 뛰어남!
5️⃣ 현업에서 자주 사용되는 최적화 기법
✅ Blend Space 활용
- 이동 속도에 따라 걷기/달리기 애니메이션을 부드럽게 전환하는 기법
- 캐릭터 애니메이션의 부자연스러운 전환을 방지하고 자연스럽게 표현 가능
✅ 캐싱된 포즈(Cached Pose) 사용
- 자주 사용하는 State Machine을 캐싱하여 연산 비용 절감
- 예: Locomotion State Machine을 캐시 포즈로 저장하여 다른 State에서 재사용
✅ Control Rig을 활용한 IK 적용
- 발이 지형에 맞게 자동으로 조정되도록 하는 기능
- IK(Foot Placement)를 적용하여 언덕이나 계단에서도 자연스러운 동작 가능
캐릭터가 제자리 걸음만 하는 문제 발생🚨🚨🚨
: 스타터팩에서 제공하는 IK를 사용해서 발생했던 문제...
IK 노드를 끊고 해보니 문제 해결함.
➡️애니메이션 리타겟터처럼 이 에셋을 재활용할 방법이 있지 않을까 찾아봐야겠다!
🟣오늘의 옵시디언 현황
'Dev. > UE 언리얼 엔진' 카테고리의 다른 글
[TIL_250211_1] 머티리얼 시스템 이해 (기초) #Graphics (1) | 2025.02.11 |
---|---|
[TIL250210_2] 인터페이스 기반 아이템 클래스 설계하기 (0) | 2025.02.10 |
[TIL_250203] EnhancedInputSystem으로 입력 매핑, 캐릭터 동작 구현하기 (0) | 2025.02.03 |
[TIL_250131] Character 클래스를 활용한 캐릭터 구현하기(3인칭 카메라 설정, GameMode 설정) (0) | 2025.01.31 |
[TIL_250130] GameMode 이해하기 (0) | 2025.01.30 |