UE5 Create IDLE Animation Using Editor Utility part.2/3
정리를 좀 하고 더 진행 해 보겠습니다.
frame range 를 바꿀경우 start frame, end frame 이 우선 변경되어 전체 키를 삭제 하지 못하는 문제를 해결 했습니다.
DeleteAllKey 함수가 아래와 같이 변경되었습니다.
DeletedAllKey 불리언 변수 가 추가 되었습니다.
키를 다 지운후 새로운 Frame range를 적용하기 위해서 입니다.
위치가 변경되었습니다.
키를 다 지운 후 새로운 셋팅으로 진행됩니다.
initial setting 함수에 추가된 노드 입니다.
중요하진 않습니다.
프레임 변경에 따른 view range time 도 바꿔줍니다. 저는 불편해서 추가 했습니다.
전체 노드를 보면 현재는 이런 상태 입니다.
이제 spine 과 head 움직임을 만들어 줄겁니다.
pelvis와 반대 방향으로 회전해 중심을 잡아줍니다.
spine 로테이션에 사용할 변수를 하나 만들어 줍니다.
pelvis의 rotation 값을 참고해 반대 회전을 만들어 줍니다.
아직은 좀비가 삐딱하게 보입니다.
두번째 spine이 첫번째와 반대 방향으로 돌아 수평을 유지 했으면 좋겠습니다.
두번째 spine도 첫번째와 같은 방식으로 만들어 주면 됩니다.
아직 썩 마음에 들지는 않네요, 좀 더 다듬어 보겠습니다.
가슴은 제법 숨 쉬는 느낌이 납니다.
이제 머리를 수정 해 줍니다.
이렇게 스파인과 같은 각도로 움직여 주면 원래 위치를 유지 할 수 있습니다.
머리가 너무 고정된 느낌이니 움직임을 추가 해 주도록 합니다.
해드 컨트롤러를 이렇게 추가 해 주고,스크립트를 실행해 주면
이제 양 팔을 작업 해 보겠습니다.
포즈를 좀 수정 해 줬습니다.
팔이 기본 FK 모드로 되어 있습니다.
스파인 회전에 따른 움직임을 일단 상쇄 시켜 주겠습니다.
상황에 따라 팔은 ik fk 구분을 해서 키를 생성 해 줘야 겠습니다.
현재 arm 불리언 값은 0 입니다.그래서 fk
변수를 만들어 주고 아래와 같이 만들어 줍니다.
그냥 두면 fk, 체크를 하면 ik로 바꿔주도록 하겠습니다.
SwitchArmIkFk 함수를 하나 생성해 줍니다.
해당 채널의 풀네임을 확인 합니다.
이건 그냥 풀네임 사용하면 됩니다.
LogBlueprintUserMessages: [None] Root:Spine:Shoulder:Arm:arm_l_fk_ik_switch_95182
LogBlueprintUserMessages: [None] Root:Spine:Shoulder_1:Arm:arm_r_fk_ik_switch_95183
Root:Spine:Shoulder:Arm:arm_l_fk_ik_switch
Root:Spine:Shoulder_1:Arm:arm_r_fk_ik_switch
각각의 네임으로 로컬변수를 만들어 줍니다.
그리고 함수 노드는 아래와 같이 만들어 줍니다.
initialSetting 함수 뒤에 달아줍니다.
테스트 해 보면,좋아요 정상적으로 작동 합니다.
FK
Clavicle |
upperArm |
Hand |
퀄리티는 나중에 올리기로 하고 구현만 해 보겠습니다.
FK는 이렇게만 해 주고 스크립트를 실행해 보면,
일단 봐줄만은 합니다.
IK
IK Clavicle |
ik hand가 좀 까다롭네요
ik 핸드 transform 변수를 만들어 줬고, 위와 같이 만들었습니다.
왼쪽의 반대 방향으로 움직이게 하기 위해 오른손에 음수 값을 곱해 줍니다.
X값을 만져줬는데 실제 움직임은 위와 같은 형태로 움직입니다.
왜냐하면
해당 컨트롤러의 로컬 축이 위와 같은 형태이기 때문에 X축으로 로케이션 이동이 이루어 지고 있는게 맞습니다.
이건 그냥 느낌적인 느낌으로 그냥 보기 좋은 원형 형태의 루핑만 만들어 주도록 합니다.
이렇게 코사인을 ZY에 연결 해 주면,
직선 움직임이 아닌 원형 움직임이 나옵니다.
이제 멀티플라이 값을 줄여주면,
나쁘진 않은데 조금 심심하네요, 로테이션 값을 주도록 합니다.
일단 전체적인 구현은 모두 완료 되었고 마지막으로 애니메이션 디테일도 올리고 지저분한 코드도 다듬어 봐야겠습니다.
- custom event를 하나로 관리 할 필요가 없을거 같습니다.
- 좀더 세밀한 설정이 필요 해 보입니다.
- 아직 원인은 알수 없지만 스크립트가 무거워 졌습니다.
댓글
댓글 쓰기