안녕하세요.
문의 주신 내용의 커브 값은 애니메이션 블루프린트에서 여러 방면으로 사용되고 있습니다. Game Animation Sample에서의 사용 방법을 설명 드리겠습니다.
FootSpeed_L, FootSpeed_R
이 커브값은 Foot Placement 노드 내부에서 활용 됩니다.
이 노드에 속도를 제공함으로써 발의 속도와 높이가 낮을 때 발을 지면에 고정시켜 줍니다.
또한 캐릭터의 골반을 위아래로 이동 시켜 발이 지면에 닿을 수 있도록 도와줍니다.
그리고 이 노드와 IK를 활용하면 발의 미끌림 현상을 효과적으로 제거할 수 있습니다. 자세한 구현은 FAnimNode_FootPlacement을 참고 해보시면 되겠습니다.
Phase
해당 포즈 값은 Pose History 노드에서 사용되고 있습니다.
사용 중인 애니메이션의 Curve 값을 모션 매칭에 사용될 히스토리로 남겨서 포즈 서치 스키마 애셋의 Curve Channel에 커브 값을 명시하여 데이터 베이스에서 포즈를 찾는 데 활용됩니다.
관련된 코드는 PoseSearchHistory.h/cpp, UPoseSearchFeatureChannel_Curve, FSearchContext 를 참고하시기 바랍니다.
MaxDynamicPlayRate, MinDynamicPlayRate, MoveData_Speed
이 값은 현재 실험기능으로 사용되는 State Machine이 Blend Stack을 구동해 모션 매칭을 제어하는 하이브리드 형태의 시스템에서 사용됩니다.
이 값을 활용하여 스테이트 머신 기반으로 동작하는 모션 매칭의 애니메이션의 최대 재생 속도를 제한합니다. 자세한 구현은 ABP_SandboxCharacter의 Get_DynamicPlayRate를 참고 하시기 바랍니다.
Enable_Orientation Warping
해당 값은 현재 Orientation Warping의 활성/비활성화에 사용되고 있습니다.
직선으로 이동하지 않는 경우에 Orientation Warping에 약간의 문제가 있어서 사용되고 있는 상황입니다.
DCC 툴에서의 애니메이션 커브 값 임포트는 언리얼 엔진의 애니메이션 커브 | 언리얼 엔진 5.6 문서 | Epic Developer Community 해당 문서를 참고하면 도움이 될 것 같습니다.
이 외에도 샘플에서는 Animation Modifier를 활용하여 커브 트랙을 제작하고 있습니다.
Game Animation Sample의 AM_FootSpeed_L, AM_BakePhaseCurveFromFootstepNotifies, AM_OrientationWarpingAlpha 와 같은 제작된 사례를 참고하면 도움이 되겠습니다.
현재 LocoTransitions에서 사용되고 있는 애니메이션 시퀀스들은 하이브리드 형태의 로코모션 시스템에서 활용되고 있습니다.
이 구조에서 모션 매칭을 실행할 때, ABP_SandboxCharacter의 SetBlendStackAnimFromChooser 내부에서 UPoseSearchLibrary::MotionMatch함수를 호출하여 서칭 대상 애니메이션 목록을 바탕으로 적절한 포즈 서치 데이터베이스에서 매칭 포즈(애니메이션)를 선택합니다.
Traversal 파이프라인도 유사하게 애니메이션 몽타주를 찾아 실행합니다.
PoseSearchBranchIn 애님 노티파이 스테이트는 UPoseSearchLibrary::MotionMatch 함수에서 서칭해야 할 애니메이션 애셋의 포즈 서치 데이터베이스에 접근하여 노티파이 스테이트에 구간화된 포즈를 비교할 수 있도록 해줍니다.
자세한 구현은 UPoseSearchLibrary::MotionMatch와 UE::PoseSearch::AddToSearch 함수를 참고하시면 이해에 도움이 될 것 같습니다.
PoseSearchExcludeFromDatabase 애님 노티파이 스테이트로 지정한 구간은 포즈 서치에서 검색, 선택, 재생에서에서 제외됩니다.
데이터베이스 인덱스에 등록되지 않으므로, 칼로 도려낸 것처럼 그 구간은 후보에 등장하지 않습니다.
반면 PoseSearchBlockTransition 애님 노티파이 스테이트는 해당 구간이 데이터베이스에는 남아 있지만, 포즈 서치 결과로는 반환되지 않도록 막습니다.
예를 들어,점프 착지 직후와 같이 그 구간에서 새로 시작되면 안 되는 동작을 차단할 때 유용합니다.
모션 매칭을 이해하는데 도움이 되는 영상입니다.
https://youtu.be/tNw9lD2PW3U?si=hPXPyaWpfht5c-TW
공식은 아니지만, 모션매칭을 시작하는데 있어서 좋은 시작 점을 제공하는 영상입니다.
https://www.youtube.com/watch?v=-r4nafTJI5c&list=PLSCf9vYpqk3O3H-vOqPDVJDUZM4k0zSFz
감사합니다.