본문 바로가기

게임프로그래밍/실습1

[언리얼 실습] 15. 애니메이션 블루프린트 정리하기


목차

  1. 서론
  2. Multiple Animation Blueprints
  3. Control Rig 노드 분리하기

1. 서론

 

 

애니메이션 블루프린트가 점점 복잡해지고 있다. 이대로 놔두면 나중에 유지보수 하기가 힘들어지고 기능하나를 추가하려 해도 정말 힘들 것이다. 그렇기 때문에 이를 정리할 필요가 있다.


2. Multiple Animation Blueprints

 

애니메이션 블루프린트를 여러개로 쪼개어 이를 관리하면 유지보수가 더 쉬워진다.

 

 

새로운 애니메이션 블루프린트를 만들자.

 

 

해당 블루프린트에서는 메인 스테이트를 관리할 것이라 메인 스테이트와 관련된 노드들을 복사해서 가져오자.

 

 

이렇게 붙여넣을 수 있다. 하지만 한가지 문제는 이렇게 복사해서 가져오면 각종 변수들이 동작을 하지 않는다는 것이다. 그렇기 때문에 변수를 다시 지정해주어야 한다.

 

고장난 변수가 있는 곳으로 돌아가자

 

 

노드를 우클릭(변수 이름이 아니라 노드를 우클릭해야한다)해서 변수를 만들자. 작동 안하는 변수를 전부 다시 만들어주어야 하는데 이때 일일이 이걸 다 찾는 것은 힘들 수 있다.

 

그럴때는 그냥 컴파일을 하자

 

컴파일을 하면 하단 컴파일 결과에 오류가 나는 영역을 알려준다. 링크를 눌러 들어가서 에러가 난 부분을 고쳐주면 된다.

 

 

오류를 다 고쳤으면 캐시된 포즈를 사용하여 아웃풋 포즈로 연결해주자.

현재 우리가 여기서 쓰고 있는 변수들은 그냥 만든 것이지 실제로 값이 들어있는 것은 아니다. 그렇기 때문에 이 안에 있는 변수를 실제 값과 연결해주어야 한다.

 

제일 처음 만들었던 캐릭터 애니메이션 블루프린트로 돌아가자

 

 

위와 같은 노드를 추가해주자.

 

 

디테일 패널에서 우리가 방금 만든 메인스테이트 애니메이션 블루프린트를 연결해준다. 그 다음 변수들을 바인드 해주자.

 

Exposable Properties를 보면 메인스테이트 블루프린트에 있는 변수들을 바인드 할 수 있는 것을 볼 수 있다.

 

 

바인딩을 하면 이렇게 변수들이 설정이 된다. 이제 설정이 끝났으니 여기서 나오는 애니메이션 결과를 캐시로 저장하고 이용하도록 하자.

 

 

메인스테이트 캐시에 포즈를 저장하고 있는데 지금 연결되어 있는 부분을 다 삭제하고 ABP_KnightMainState에서 나오는 결과를 캐시하면 된다.


3. Control Rig 노드 분리하기

 

 

이제 이 노드들도 분리해보자. 새로운 애니메이션 블루프린트를 만들고 이것을 옮기면 된다. 이것을 쓰기 위해서는 캐시된 메인 스테이트가 필요한 것을 볼 수 있다.

 

이 값을 받아올 수 있게 설정해보자.

 

 

애니메이션 블루프린트를 링크할때 이렇게 해서도 연결할 수 있다. IK와 연결하자.

 

 

IK로 돌아가 변수들을 설정해주자. 이때 캐시는 사용할 수 없으니 삭제하고 나머지 변수들만 생성 하면 된다.

 

이제 소스 포즈를 가져와야 한다.

 

 

인풋 포즈 노드를 만들자.

 

 

컴파일 하고 캐릭터 애니메이션 블루프린트로 돌아가 링크 노드를 우클릭해서 리프레시를 하면 인풋 핀이 생기는 것을 볼 수 있다.

 

 

이제 캐시된 포즈를 연결해주자. 인풋핀의 이름의 경우 IK 블루프린트 인풋 노드에서 수정하면 바뀐다.

 

 

다시 IK로 돌아가 인풋을 이렇게 연결할 수 있다. 하지만 이렇게 인풋 포즈를 연결하면 하나의 노드밖에 연결을 못한다. 그렇기 때문에 이 포즈를 캐시하고 이것을 사용하자.

 

 

위와 같이 설정하면 된다.

 

이제 기본 애니메이션들 정리가 완료되었다. 다음에는 공격기능을 추가해보자.