지금까지 코어한 캐릭터 무브먼트에 대한 부분을 처리했다면 이제부터는 캐릭터 무브먼트에 어울리는 모션들과 애니메이션 블루프린트에 대한 연계작업을 이어서 진행하게 됩니다. 이 작업을 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를 활성화 했을 때의 기능을 확인할 수 있다.
Head/ Pelvis/ Hand / Arm(각 부위) / Leg(각 부위) 의 각각의 부위별로 매터리얼의 인스턴스 다이내믹 값을 설정하고, 호출하는 방식으로 코드가 작성되어 있다.
애님 시퀀스중 오버레이쪽 모션 애셋들을 열어보면 각각의 Layering 커브값들을 가지고 있는데, 그 커브값들의 커브수치가 모션의 프레임에 해당 되는 모션에 맞게 커브값이 1~ 0으로 출력되도록 설정되어 있다. 상황에 맞춰 Lerp값으로 Layering Color가 발동되도록 설계되어 있다.
Set Reset Colors : 디버그 칼라를 원래색으로 돌리는 역할을 한다. Solid Color False 쪽도 작업이 되어있긴 위의 Update Layering Color 쪽에서 작업이 이루어져서 실질적으로 들어올 일이 없는 부분이다. 지워도 상관없는 부분.
Update Hold Object Animations : 무기를 들었을 때 관련된 이벤트를 처리한다. 아래 펼쳐 확인
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 : 렉돌이 시작되고 끝날 때 캐릭터의 스테이트를 확인하여 무기를 들거나 들지 않도록 처리하는 부분. 현재는 렉돌이 작동할 때 무조건 무기가 사라지도록 처리 되어 있다.