💭회고
언리얼 엔진에서 AI NPC를 위한 애니메이션 시스템을 구축하는 기초를 학습했다:
1. 외부 애니메이션 데이터 임포트 방법
2. AI NPC 애니메이션 블루프린트 설정
3. 플레이어와 AI NPC의 애니메이션 메커니즘 비교
📒학습 내용
1. AI NPC 애니메이션 데이터 임포트하기
1.1 애니메이션 데이터 준비
UE에서는 주로 `.fbx` 확장자의 파일을 통해 3D 모델과 애니메이션을 가져온다.
1.2 애니메이션 임포트 프로세스
언리얼 엔진에 애니메이션을 가져오기 위해 다음 순서로 진행:
1. 먼저 메인 스켈레톤 메시(0번 SKM 파일)를 임포트.
2. 그 다음, 1~5번 애니메이션 파일을 임포트.
3. 애니메이션 임포트 시 중요 설정:
- `Import Only Animations` 옵션 체크.
- `Skeleton` 필드에 앞서 임포트한 0번 SKM 선택.
애니메이션 임포트 시 주의사항 ⚠️
1. 스켈레톤 일치: 모든 애니메이션은 반드시 동일한 스켈레톤을 사용해야 한다. 스켈레톤이 다르면 애니메이션 리타게팅을 별도로 설정!!
2. 애니메이션 프레임 최적화: 프로덕션 단계에서는 불필요한 본(bone)의 애니메이션 데이터를 제거하여 메모리 사용량 줄이는 것이 좋다.
3. 임포트 설정 템플릿화: 반복적인 임포트 작업을 위해 자주 사용하는 설정을 Import Preset으로 저장해두면 시간을 절약할 수 있다.
2. AI NPC 애니메이션 블루프린트 세팅
2.1 AI NPC 클래스 생성
우선 AI NPC 캐릭터를 위한 C++ 클래스 생성:
플레이어 캐릭터를 기반으로 하는 `MyFriendCharacter` C++ 클래스 생성.
이 C++ 클래스를 기반으로 `BP_Friend` 블루프린트 생성.
이 `MyFriendCharacter`는 플레이어 친구 AI 역할을 수행하도록 설계될 예정. AI의 역할과 목적에 맞는 명확한 클래스 이름을 사용하는 것이 코드 가독성과 유지보수에 도움된다.
2.2 애니메이션 블루프린트 생성 및 설정
애니메이션 블루프린트는 AI NPC 모든 애니메이션 로직을 관리하는 중요한 요소:
1. 에디터 내 Animation Blueprint 생성하고 `ABP_FriendCharacter`로 이름 지정.
- 방법: 콘텐츠 브라우저 빈 공간에서 우클릭 → Animation → Animation Blueprint
2. 생성 과정에서 `0_Anim_Model_SKM_Skeleton`을 ABP 스켈레톤으로 선택.
3. `BP_FriendAI`의 Details 패널에서 AnimClass에 `ABP_FriendCharacter` 지정.
🔹애니메이션 블루프린트 구조화 전략
1. 상태 머신 계층화: 복잡한 캐릭터의 경우, 애니메이션 상태 머신을 상체/하체로 분리하거나 기본 동작/특수 동작으로 계층화하면 관리가 용이해진다.
2. 애니메이션 블루프린트 성능 최적화: 불필요한 변수 업데이트나 무거운 계산은 Event Graph 대신 애니메이션 그래프에서 처리하는 것이 좋다. 매 틱마다 실행되는 이벤트를 최소화하는 것이 성능에 도움된다.
3. 애니메이션 캐싱: 자주 사용되는 애니메이션 시퀀스나 블렌드 스페이스는 변수로 캐싱해두면 메모리 접근 효율이 높아진다.
3. 플레이어 캐릭터, AI NPC 애니메이션 작동 메커니즘 비교
플레이어 캐릭터와 AI NPC는 비슷해 보여도 애니메이션이 트리거되고 실행되는 방식에 근본적인 차이가 있다. 이 차이점을 이해하는 것은 AI NPC 애니메이션을 효과적으로 설계하는 데 필수적!
3.1 입력 방식의 차이
구분 | 플레이어 캐릭터 | AI NPC |
제어방식 | 플레이어 입력(키보드, 마우스, 컨트롤러 등)이 이동 및 행동을 결정 | `AIController`가 이동 및 행동 결정 |
이동 처리 | 플레이어의 입력 값을 받아 `AddMovementInput` 사용 | `MoveToActor` 또는 `MoveToLocation`을 통해 네비게이션 기반 이동 |
애니메이션 트리거 | 입력 값에 따라 직접 애니메이션 블렌딩 수행 | AI 상태, 이동속력(예: Idle, Chase, Attack) 등에 따라 애니메이션 변경 |
3.2 애니메이션 전환 방식
구분 | 플레이어 캐릭터 | AI 캐릭터(NPC) |
애니메이션 상태 전환 | Animation Blueprint에서 플레이어 입력 값을 기반으로 Speed, Direction 등의 변수를 사용해 애니메이션 블렌딩 | AI의 Behavior Tree와 Blackboard에서의 AI의 행동 감지 또는 애니메이션 블루프린트 로직으로 변경 |
애니메이션 적용 방식 | 플레이어가 입력하는 값(Axis Value)을 받아 캐릭터의 Speed를 계산하고, 이를 애니메이션 블루프린트에서 사용 |
🔹AI 애니메이션 디버깅 테크닉
1. Visual Logger 활용: AIController의 행동과 애니메이션 상태를 Visual Logger를 통해 시각적으로 확인하면 문제 해결 용이 (Window → Developer Tools → Visual Logger)
2. Print String으로 상태 모니터링: 개발 단계에서는 주요 전환 지점마다 Print String 노드를 배치하여 애니메이션 상태 전환을 실시간으로 확인하는 것이 도움된다.
3. Animation Slot 활용: 복잡한 AI 동작의 경우, 애니메이션 슬롯을 사용하여 몸의 부위별로 다른 애니메이션을 재생하는 방식이 유용. (예: 달리면서 공격하기)
🟣오늘의 옵시디언 현황
'Dev. > UE 언리얼 엔진' 카테고리의 다른 글
지뢰, 곰덫 사운드 & VFX (0) | 2025.05.18 |
---|---|
[WIL] VFX & 게임 사운드 : Wwise-UE 통합 및 반응형 환경 구현 (0) | 2025.05.16 |
[TIL_250424] 언리얼 엔진 AI Controller로 플레이어 자동 추적 구현하기 (0) | 2025.04.24 |
[TIL_250423] 언리얼 엔진 RVO 시스템으로 AI의 동적 장애물 회피 구현하기 (0) | 2025.04.23 |
[TIL_250422] 언리얼 엔진 AI 이동 명령 및 경로 탐색(Pathfinding) (0) | 2025.04.22 |