개요



이 문서에서는 1인칭 캐릭터에서의 이동 및 애니메이션에 대해서 다룹니다.


1인칭 애니메이션 애셋은 "Content/RestrictedAssets/Animations/Universal/1stPerson/UT4_Base_1stP_AnimBP.uasset" 입니다. 이 블루프린트 안에는 여러 가지 애니메이션 블렌딩 루틴들이 있는데요, 이 중에서 이동과 관련한 부분만 살펴 볼 것입니다.


1인칭 이동 애니메이션은 FSM( Finite State Machines )로 표현됩니다. 다음과 같은 순서로 이동 애니메이션을 분석해 볼 것입니다.


    • 먼저 FSM 이 어떤 식으로 구성되어 있는지를 알아 볼 것입니다.
    • 다음으로 FSM 에 값을 공급하기 위해서 이벤트 그래프가 어떻게 구성되는지 살펴 볼 것입니다.
    • 다음으로 각 State 에서 어떠한 애니메이션들이 블렌딩되는지를 살펴 볼 것입니다.
    • 마지막으로 각각의 애니메이션 애셋들이 어떻게 구성되어 있는지를 살펴 볼 것입니다.


Main_Motion FSM



1인칭 이동 애니메이션에서 핵심은 "Main_Motion" FSM 입니다. AnimGraph 를 보면, "Main_Motion_Cache" 라는 것을 만들기 위해서 "Main_Motion" FSM 을 사용합니다. "Main_Motion_Cache" 가 뭐냐라는 질문에 대한 답은 다른 문서에서 하도록 하겠습니다. 여기에서는 "Main_Motion" 에 대해서만 집중합시다.


그림1. Main_Motion_Cache.


이 "Main_Motion" 노드를 더블클릭하면, 아래와 같은 FSM 을 볼 수 있습니다.



너무 그림도 작은데다가 Hierarchical FSM 이기 때문에 State 안쪽의 내용을 볼 수 없습니다. 게다가 Transition 조건도 마우스를 올리거나 클릭해야 나오기 때문에 한 눈에 볼 수 없습니다. 그래서 따로 UML State Diagram 을 준비했습니다.



Transition 까지 전부 표현하다 보니 그림이 좀 지저분한 감이 있긴 하지만, 보시는데 큰 문제는 없을 것입니다.


Movement 를 중심으로 Jump, Fall, Slide 라는 동작을 수행하게 됩니다. 물론 각각은 여러 개의 state 로 나뉘어 있거나 sub-state 를 가지게 됩니다.


 State

Animation & Desc

 Transition Desc

 Target State

 Movement

  • 이동 관련 하위 상태를 포함함.
    • Idle.
    • Start_Run.
    • Run.
    • Stop_Run.
    • Change_Direction.
  • 11 번 transition.

 Falling

  • 18 번 transition.
 Slide

 Idle

  • 1stP_Idle_Ready_Rif( 대기 동작 ).
  • 대기 상태.
  • 1 번 transition.

 Start_Run

  • 5 번 transition.

 Run

 Start_Run

  • 1stP_Run_Fwd_Rif( 전방 달리기 동작 ).
  • BS_1stP_Run_Transition_Direction_Change_Rif( 방향에 따른 팔 블렌딩 ).
    • 1stP_Run_Transition_Fwd_to_Bwd_Rif.
    • 1stP_Run_Transition_Right_to_Left_Rif.
    • 1stP_Run_Transition_Bwd_to_Fwd_Rif.
    • 1stP_Run_Transition_Left_to_Right_Rif.
  • 달리기 시작함.
  • 원하는 이동방향에 따라서 팔을 흔드는 모양이 달라짐.
  • 2 번 transition.

 Run

  • 8 번 transition.

 Stop_Run

 Run

  • 1stP_Run_Fwd_Rif( 전방 달리기 동작 ).
  • 앞으로 달려감.
  • 3 번 transition.

 Stop_Run

  • 5 번 transition.

 Idle

  • 9 번 transition.

 Change_Direction

 Stop_Run

  • 1stP_Idle_Ready_Rif( 대기 동작 ).
  • BS_1stP_Run_Transition_Direction_Change_Rif( 방향에 따른 팔 블렌딩 ).
    • 1stP_Run_Transition_Fwd_to_Bwd_Rif.
    • 1stP_Run_Transition_Right_to_Left_Rif.
    • 1stP_Run_Transition_Bwd_to_Fwd_Rif.
    • 1stP_Run_Transition_Left_to_Right_Rif.
  • 멈추기 시작하거나 달리기 시작함.
  • 원하는 이동방향에 따라서 팔을 흔드는 모양이 달라짐.
  • 4 번 transition.

 Idle

  • 7 번 transition.
 Start_Run

 Change_Direction

  • BS_1stP_Run_Transition_Direction_Change_Rif( 방향에 따른 팔 블렌딩 ).
    • 1stP_Run_Transition_Fwd_to_Bwd_Rif.
    • 1stP_Run_Transition_Right_to_Left_Rif.
    • 1stP_Run_Transition_Bwd_to_Fwd_Rif.
    • 1stP_Run_Transition_Left_to_Right_Rif.
  • 원하는 이동방향에 따라서 팔을 흔드는 모양이 달라짐.
  • 10 번 transition.

 Run

 Falling
  • 점프 관련 하위 상태를 포함함.
  • Jump_Start.
    • 1stP_Jump_Start_Rif( 점프 시작 동작 ).
  • Jump_Loop.
    • 1stP_Jump_Loop_Rif( 점프 활강 동작 ).
  • Jump_Start 애니 끝나면 바로 Jump_Loop 로 전이됨.
  • 12 번 transition.

 Jump_Land

  • 14 번 transition.

 Slide

 Jump_Land
  • 1stP_Jump_Land_Rif( 착지 동작 ).
  • 바닥에 착지함. 
  • 13 번 transition.
 Movement
  • 15 번 transition.
 Slide

 Slide

  • 1stP_KneeSlide_Fwd_Rif( 미끌어지는 동작 ).
  • 경사면에서 미끌어짐.
  • 왼손의 총에 대한 IK 가 해제됨.
  • 16 번 transition.

 Slide_End

  • 19 번 transition.
 Movement
 Slide_End
  • 1stP_KneeSlide_Fwd_End_Rif( 미끌어지는 동작 종료 ).
  • 왼손의 총에 대한 IK 가 복구됨.
  • 17 번 transition.

 Movement

 

+ Recent posts