[Bohemian] #3 Locomotion -1
음 일기?
요즘 마음이 조급해서 뭐든 후다닥 구현하려고 하니 공부한 것들을 금세 잊어버린다. 내 텐션 찾자~
이번 주랑 다음 주는 로코모션 프로젝트 뜯어보고 구현해 보는 걸로 하자.
로코모션이 제대로 만들어지니 캐릭터가 이동하기만 해도 재밌더라!! 내 프로젝트도 ALS처럼 구현이 잘 되었으면 좋겠다ㅎㅎ
그리고 캐릭터 관련 클래스들을 싹 고쳐야 할 것 같다.
메시를 관리하는 코드가 난잡하고, 무기 종류별로 메시를 전환해 주는 코드도 이렇게 쓰면 안 될 것 같음
무기들을 다 enum으로 관리해서 예쁘게 만들어보자.
지금 장착된 무기 종류에 맞게 애님 블루프린트를 바꾸어 주었는데, 아예 스테이트 머신으로 레이어를 쌓는게 맞다.
애님 블루프린트는 가급적 캐릭터마다 한 개씩 만들어 두는 게 좋겠다…ㅎㅎ
마음을 좀 내려놓으니까 언리얼이 재밌다 !!!! 이 마음가짐으로 프로젝트 쭉 진행해 보자🤭
0. 개요
- Foot IK Offset
- 애님 블루프린트
- 트레이스
1. Foot IK
1.1. IK Setting
짱 신기하다!!!!!!!
Mannequin
에 타기팅된 체인을 기반으로 IK 리타기팅
1.2. Foot Rotation
Foot IK Component
Actor Component
를 부모로 하는 클래스 생성foot_l
과foot_r
위치를 기반으로 lineTrace를 통해 양 발이 닿는 지면 위치 계산- 지면 위치를 기반으로 Normal Vector를 계산한 후 발이 회전할 경사각 저장
TickCompoenet
에RInterpTo
함수를 호출해 양 발 회전값 보간
Animation Graph
FootIK
클래스의 양 발 회전 변수를 본 트랜스폼 인자로 설정
1.3. Hip Offset
Foot IK Component
- 캐릭터의
Capsule Component
위치 변경 - 현재 캡슐 컴포넌트와 낮은 곳에 있는 발을 기준으로 하는 컴포넌트의 위치 보간
Hip
과foot
정보를 불러와 위치 벡터 보간
Animation Graph
- 발의 회전값을 구한 후
pelvis
의 위치 변경 2 본 IK
노드를 두어 발부터 골반까지의 관절 연결
결과 화면
티스토리 블로그를 참고해 코드를 작성했다. 동작 방식과 구현 과정이 잘 정리되어 있다!
이벤트 그래프 부분은 애님 인스턴스 클래스에서 따로 작성했다.
#. 구현하면서~
- 엉망이 되어버린 클래스 코드들을 개선하는 중이다.
- 근데 어쩌다보니 다 뜯어버려야 하는 상황이 와버림
- 앞으로는 설계부터 제대로 준비하고 코드를 쓰자…
- 근데 어쩌다보니 다 뜯어버려야 하는 상황이 와버림
- 그리고 틈틈히 C++ 공부도 해두기
- 요즘 기본기 한계를 여실히 느끼고 있다.🥲
-
IK릭에서 캐릭터의 발 위치를 변경했을 때는 관절이 자연스럽게 움직였는데, 문제가 생겼다.
- 경사가 크면 무릎 관절이 부자연스럽게 꺾인다…!
2본IK
적용 전, 후2본IK 노드를 적용하면 무릎 관절이 안쪽으로 꺾인다.
- 애니메이션 그래프에서도 foot과 thigh를 2본IK로 연결하면 무릎 관절 위치가 바뀌더라.
- foot bone을 2 본 IK 노드로 연결하지 말고, IK릭 Goal을 변수로 만들어 연결하는 방법을 찾아보자.
- 근데 사실 IK릭 본도 2본IK 구조일 것 같아서 큰 차이가 있을 지는 모르겠음
Leave a comment