언리얼엔진/언리얼 C++

애니메이션 C++과 상태머신 기본

season97 2024. 10. 19. 16:07

 개인적인 공부를 위해 포스팅 하는 글입니다.


# 애니메이션

뼈를 기준으로 움직인다. 작업은 보통 3Dmax같은곳에서 하지만 언리얼에서도 간단한건 할수는있다.

프리미어프로처럼 이런저런 키를 생성해줄 수 있고, 키프레임에 맞게 움직임지정이 잘 된다.

기준을 잡을 뼈를 지정해주고 키를 추가하면 가능

 

 

 


# 애니메이션 C++

 

애니메이션, 인공지능 등은 언리얼에서 제공하는 기능을 이용해 분리해서 관리하는게 좋다. 

 

ㆍ AnimInstance라는것을 상속받는 C++를 만들 수 있다.

ㆍ 해당 클래스를 만들고 이 C++클래스를 기반을 상속받는 AnimBP를 생성해주자 

-> 그렇게 하면 일부 ABP코드를 C++로 관리할 수 있다. 

 

# 언리얼 스타터팩의 AnimBP

ㆍ 이걸 C++코드로 이식하기 위해 AnimInstance의 상속을 받는 C++클래스를 생성해 줬다.

직관적이다.

ㆍ 어찌보면 코드로 하는게 더 간결한거같다

ㆍ 방금 만든 R1Animinstance의 상속을 받는 애니메이션 블루프린트를 만들어주고 해당옵션을 키면 ABP에서 그대로 나온다!

 

 

※ 이렇게 애니메이션을 분리해서 관리하는 이유 

정말 좋은 방법이다. 애니메이션 코드랑 컨텐츠코드랑 합쳐지면 프로젝트 커질수록 꼬일 여지도 크고, 컨텐츠적으로 멀티쓰레드를 돌릴 수도 있고... 핵심 장점은 코드의 분리다. 정말 최소한으로 종속성이 생기는것

바꿔야할 부분이 생기면 딱 Animation쪽만 고치면된다

 

 


포폴로 많이 해봤지만 복습겸 다시 포스팅

스테이트 머신 공식문서 : https://dev.epicgames.com/documentation/ko-kr/unreal-engine/state-machines-in-unreal-engine

# Animation Blueprint

Idle 상태와 Walk / Run을 이렇게 엔트리를 지정해주고 캐쉬포즈로 저장해뒀다

 

ㆍ 캐쉬 포즈를 사용해줬다. 그리고 땅바닥에 떨어져있을때 점프와 관련된 스테이트를 지정해줬다.

 

# 스테이트 에일리어스

ㆍ 스테이트 바로가기 용도라고 생각하자.

선이 직접적으로 연결되어 있는게 아니라 이런식으로 옵션 체크를 통해 연결되어있다고 생각하면 된다. (바로가기)

 

 

# 한 애니메이션이 끝나면 자동으로 다음 애니메이션이 재생되게 하는 기능

ㆍ 번역이 살짝 애매하긴 한데... 원하는 부분의 트렌지션을 선택하고 해당옵션을 체크하면된다!

ㆍ 위 부분에선 점프애니메이션이 끝나면 캐릭터가 추락하는 애니메이션을 재생한다.

 

ㆍ To Land 부분도 Jump와 Fall Loop와 바로가기를 연결해주고,

ㆍ 랜드 애니메이션은 이렇게 구성해줘야 한다. 애디티브... 베이스 포즈에다가 붙혀서 사용해야 하는 애니메이션이다.

ㆍ 이렇게 Local Space라고 설정되어있으면, 단독으론 사용할 수 없고 위와같이 사용해야 쓸 수 있다.

 

 

※ 하나 추가 팁

ㆍ 템플릿 애니메이션으로 다양한 객체들의 애니메이션의 기반이되는 템플릿 애니메이션BP도 만들 수 있다. 추후 자세히 포스팅 예정

'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글

애니메이션 몽타주와 레이어  (0) 2024.10.19
애니메이션 리타게팅  (4) 2024.10.19
Player 키 추가 해보기  (0) 2024.10.18
비동기 로딩 AssetManager  (1) 2024.10.17
AssetManager  (1) 2024.10.16