JSP's Deep learning

[CARLA Simulator] 커스텀 애니메이션 적용 본문

Etc/CARLA Simulator

[CARLA Simulator] 커스텀 애니메이션 적용

_JSP_ 2023. 3. 21. 22:42

1. 커스텀 애니메이션 시퀀스 제작

  • 애니메이션 시퀀스를 제작하기 전, 애니메이션을 적용할 스켈레톤의 Idle 애니메이션 시퀀스를 복사하여 사용한다.
    (애니메이션은 같은 스켈레톤을 가진 블루프린트에 한하여 적용된다.)

  • 커스텀 애니메이션 시퀀스 제작 참고 : YouTube
  • Idle 애니메이션 경로 : Content/Carla/Static/Pedestrian/Animations

커스텀 애니메이션의 저장 경로는 Content 폴더 내에 어디든 상관없다.

2. 애니메이션 블루프린트 수정

  • Carla에서 Actor에 대한 애니메이션은 애니메이션 블루프린트를 통해서 반영된다.
  • 애니메이션 블루프린트는 Male, Female, Kid 등 여러 카테고리마다 존재하며, 모든 Actor에 대해서 적용하기 위해서는 해당 카테고리마다 존재하는 애니메이션 블루프린트를 모두 수정해야한다.

  • 애니메이션 블루프린트를 더블 클릭하면 다음과 같은 편집창이 나오며, 좌측 하단의 AnimGraph를 열어 수정을 진행한다.

  • AnimGraph을 열면 다음과 같은 블록이 나오는데, New State Machine을 통해서 Actor의 상태에 따라 어떤 애니메이션을 적용할지 결정한다.

  • New State Machine의 구성은 다음과 같으며, 기본적으로 RightTurn, LeftTurn, Idle_Walk_Run이 존재하고 Fallen은 커스텀 애니메이션을 적용하기 위해 추가한 것이다.
  • New State Machine에서 각 State로 이어지는 화살표는 각 조건에 따라 어떤 State을 실행할 지 결정하는 일종의 조건문이다.
  • State는 마우스 우클릭 Add State을 클릭하여 생성할 수 있다.

  • 생성한 State에 대해서 더블클릭을 하면 최초에는 Output Animation Pose 블럭이 존재하는데, 마우스 우클릭을 통해 Play 블럭을 찾고 추가하여 노드를 연결해준다.
    (Play 블럭에는 생성하였던 애니메이션 시퀀스를 적용한다.)

  • 이후 Idle_Walk_Run -> Fallen, Fallen -> Idle_Walk_Run로 이어지는 조건 화살표를 연결해주고 각 화살표를 더블클릭하여 내부의 조건을 구성한다.

  • 하나의 조건 화살표를 들어가면 최초에는 Result 블럭만이 존재한다.
  • 필자는 Fallen에 대한 실행조건으로 isMoving 변수를 사용하여 움직이는 상태이면 실행하지 않고 움직이지 않으면 실행하도록 조건을 구성하였다.
  • 반대로, Fallen -> Idle_Walk_Run의 조건은 이동하면 실행되도록 하였다.
  • 해당 예시는 기존 Actor에 대한 BluePrint에 존재하는 변수를 사용하였으나, 다른 조건을 구성하고 싶다면 새로운 변수를 만들어서 적용해도 된다.
    (본 예시에서 기존 변수를 사용하는 이유는 기존 Carla의 pythonAPI를 활용하여 Animation을 적용하고자 하였다. 만약 새로운 변수 및 API 함수를 추가하기 위해서는 RPC 바인딩을 통한 복잡한 과정을 거쳐야한다.)

결과

최종적으로 모든 Actor의 애니메이션 블루프린트를 다음과 같이 수정하면, Actor의 속도를 조절하는 것으로 애니메이션을 재생하거나 재생을 멈출 수 있다.

Comments