반응형

지금까지 코어한 캐릭터 무브먼트에 대한 부분을 처리했다면 이제부터는 캐릭터 무브먼트에 어울리는 모션들과 애니메이션 블루프린트에 대한 연계작업을 이어서 진행하게 됩니다. 이 작업을 override라고 이야기 합니다.

해당 작업을 통해 Advanced Locomotion V4의 모든 동작이 정상적으로 작동하려면 AnimMan과 연결되어있는 모든 애니메이션 소스들과 AnimBP를 가져와야 정상적으로 작동하게 되므로 원본 프로젝트에서 ALS_AnimMan_CharacterBP 를 이주하여 모든 소스를 한꺼번에 이주시키도록 합니다.

  • 이 때 기존 작업된 데이터에 덮어 씌우겠냐고 물음이 오면 전체 덮어 씌우도록 하여 기존 작업에서 이어나가면 됩니다.
  • 파일을 덮어씌우면서 이주할 때는 이주하려는 언리얼 에디터를 닫고 하시는걸 추천드립니다. 언리얼 에디터가 실행된 상태에서는 이주가 잘 안되는 경우가 빈번히 발생합니다.

 

  • 위 내역이 정상적으로 이주가 완료되었다면 이제 AdvancedSkeletonV4의 모든 움직임과 모션이 정상적으로 연결되어 작동됨을 확인할 수 있습니다.
잘 움직이는 것도 중요하지만, 왜 이렇게 움직이지는 파악하는 것은 더 중요하다!!

 

  • 여기서 잠깐!!
    • 잘 움직인다고 해서 여기서 작업을 끝내버리면 내가 사용할 캐릭터로 다시 만드는 것이 불가능합니다. 이제부터 왜 저렇게 움직일수 있는지 파악해가며 하나 하나 더 구체적으로 뜯어보도록 하겠습니다!

 

  • Anim Man BP에서 처리하게 될 내역들.
    • 무브먼트 디버깅을 위한 동적 색상 지정('U'버튼으로 활성화)
    • 무기 장착을 위한 표시 기능 추가
    • 카메라 대상 정보 업데이트
    • 현재 오버레이 상태에 따른 적절한 몽타주 재생 기능.
    • 아래 기능등이 메인 Pawn 스켈레탈 메시에 맞춰 오버라이드 되어 재정의 됩니다.
      • BPI_Get_3P_PivotTarget - 뷰모드에 따라 카메라 위치 변경
      • BPI_Get_FP_CameraTarget - 뷰모드에 따라 Fov 변경
      • BPI_Get_3P_TraceParams - 뷰모드에 따라 Traceparameter 변경
      • OnOverlayStateChanged - 애님 BP의 Overlay state 오버라이드
      • GetRollAnimation - Rolling 모션 오버라이드
      • GetMantleAsset - Mantle 기능 오버라이드
      • MantleEnd - MantleEnd모션 오버라이드
      • MantleStart - MantleStart모션 오버라이드
      • GetGetUpAnimation - 스냅샷 이후 일어나는 모션 오버라이드
      • RagdollStart - 렉돌 시작 모션 오버라이드
      • RagdollEnd - 렉돌 끝 모션 오버라이드

 

  • 컨스트럭션 스크립트 가이드 : 메인 Pawn의 마스터 포즈와 디버그용 Layer Color에 사용될 다이내믹 메터리얼 등을 c최초로 설정하게 된다.

 

  • Tick Graph 가이드

 

  • Update Coloring System : Show Layer Colors 부분을 활성화 시키면서 애니메이션 Overlay 되는 부분(하얀색)과 애니메이션이 완전히 블렌딩  부분(검은색)을 칼라로 표시해 준다.

 

  • 아래 영상을 통해 확인 Show Lauer Colors를 활성화 했을 때의 기능을 확인할 수 있다.

 

  • 아래를 펼쳐 Color Layering 시스템이 어떻게 작동하는지 확인해 보자.
더보기

 

  • Head/ Pelvis/ Hand / Arm(각 부위) / Leg(각 부위) 의 각각의 부위별로 매터리얼의 인스턴스 다이내믹 값을 설정하고, 호출하는 방식으로 코드가 작성되어 있다.
  • 애님 시퀀스중 오버레이쪽 모션 애셋들을 열어보면 각각의 Layering 커브값들을 가지고 있는데, 그 커브값들의 커브수치가 모션의 프레임에 해당 되는 모션에 맞게 커브값이 1~ 0으로 출력되도록 설정되어 있다. 상황에 맞춰 Lerp값으로 Layering Color가 발동되도록 설계되어 있다.

 

  • Set Reset Colors : 디버그 칼라를 원래색으로 돌리는 역할을 한다. Solid Color False 쪽도 작업이 되어있긴 위의 Update Layering Color 쪽에서 작업이 이루어져서 실질적으로 들어올 일이 없는 부분이다. 지워도 상관없는 부분.

 

  • Update Hold Object Animations : 무기를 들었을 때 관련된 이벤트를 처리한다. 아래 펼쳐 확인

 

더보기

실질적으로 무기의 별도 애니메이션이 들어가는 것은 Bow만 있기 때문에 Bow에 관련해서는 애님 인스턴스를 연결하는 등의 특수 처리가 되어있다.

Bow_AinmBP에서 Draw값에 활이 당겨지는 순간이 오면 아래 애니메이션이 작동하도록 설계되어 있다.

 

 

 

 

  • Override 정리.

    • 함수부분에서 오버라이드를 눌러주면 부모 블루프린트의 함수들을 가져와서 새롭게 오버라이드시킬수 있다.

 

각각의 오버라이드 부분을 아래를 펼쳐서 확인해보자.

 

더보기

BPI Get 3P Pivot Target : 스켈레탈 메시의 head와 root의 위치를 기반으로 Pivot의 위치를 정하기 위한 함수. 카메라의 움직임을 처리하기 위한 보조 장치.

  • BPI Get FP Camera  Target : 스켈레텔메시의 'FP_Camera'카메라 소켓 위치를 얻어오는 반환 노드
  • BPI_Get_3P_TraceParams : 키보드 "C" 버튼을 누르면 카메라가 좌우 배치가 달라지는데 이 역시 캐릭터에 미리 달려 있는 소켓을 참고해서 반환하게 된다.
  • On OverlayStateChanged : 키보드 'Q'버튼을 누르면 무기를 바꿀수 있는데, 무기 변경에 따른 무기 메시 변경을 처리하는 부분.
  • Get Roll Animation : 왼쪽 Alt를 더블 클릭하면 Roll 모션이 발동되는데, 해당 Montage 파일을 연결하는 부분입니다. 무기별 Rolling 모션이 있을 경우 해당 탭에 연결하면 됩니다.
  • GetMantleAsset : 멘틀 관련 모션을 무기별 몽타주 모션을 연결하는 부분입니다.
  • MantleEnd / MantleStart : 멘틀 시작과 끝 몽타주 상황에 해당 되는 모션이 나올 때 그에 맞게 무기를 연결하거나 해제하는 기능을 추가합니다.
  • GetGetUpAnimation : "X"버튼을 눌러 렉돌을 발생시키고 한번 더 누르면 다시 일어서게 되는데, 현재 누운 자세를 기억하는 SnapShot 기능과 함께 앞으로 엎어졌는지, 뒤로 엎어졌는지 판단하여 적절한 몽타주가 작동되어 자연스럽게 캐릭터가 일어나게 된다. 거기에 사용되는 무기별 몽타주 모션을 연결해주는 곳이다.
  • RagdollStart / RagdollEnd : 렉돌이 시작되고 끝날 때 캐릭터의 스테이트를 확인하여 무기를 들거나 들지 않도록 처리하는 부분. 현재는 렉돌이 작동할 때 무조건 무기가 사라지도록 처리 되어 있다.

 

 

반응형

+ Recent posts