2023. 3. 7. 10:56ㆍUnrealEngine/개념
https://djgameprogramming.tistory.com/84
IK(Inverse Kinematic, 역운동학)
스켈레톤을 사용한 애니메이션에는 '운동역학'이라는 개념이 존재한다. 모델에 리깅(Rigging, 3D 모델링에 뼈대를 할당하여 움직이게 함)을 하여 관절부 움직임을 묘사할때 역학관계 계산이 필요
djgameprogramming.tistory.com
Foot IK를 구현하기 위한 단계는 다음과 같다.
먼저 컨트롤 릭 파일을 생성하고 적용할 스켈레톤의 본 계층구조를 불러온다.
이때 IK로 사용할만한 가상 본이 없다면 직접 생성한다.(Root 가상본 -> 양 발의 가상본)
1. 각 발(IK 가상본)에서부터 아래방향으로 스피어 트레이스를 하여 지면까지의 거리를 계산
2. 1항에서 계산된 지면까지의 오프셋을 Interpolate로 부드럽게 변환되도록 조정(다른 변수에 저장)
3. 2항에서 저장된 지면까지의 오프셋으로 ik 가상본과 전체 스켈레톤의 위치를 조정
4. 두 발의 본에 대해 발의 가상 본을 엔드 이펙터로 지정하여 Full Body IK 실행
5. 1~4항을 실행한 컨트롤 릭을 애니메이션 블루프린트를 통한 블렌드
1. 각 발(IK 가상본)에서부터 아래방향으로 스피어 트레이스를 하여 지면까지의 거리를 계산
이렇게 도출된 지면까지의 거리는 ZOffset_L/RTarget으로 저장한다.
2. 1항에서 계산된 지면까지의 오프셋을 Interpolate로 부드럽게 변환되도록 조정(다른 변수에 저장)
Interpolate를 사용하여 ZOffset_L/R 값을 ZOffset_L/RTarget값으로 부드럽게 변환시켜준다.
3. 2항에서 저장된 지면까지의 오프셋으로 ik 가상본과 전체 스켈레톤의 위치를 조정.
전체 스켈레톤의 조정은 더 낮은 값을 기준으로 Pelvis 본의 위치를 바꿔준다.
Additive Global 모드로 설정해줘야 함.
4. 두 발의 본에 대해 발의 가상 본을 엔드 이펙터로 지정하여 Full Body IK 실행
5. 1~4항을 실행한 컨트롤 릭을 애니메이션 블루프린트를 통한 블렌드
달릴때와 점프중일땐 ik가 실행되지 않도록 자체 변수와 블렌딩 노드로 조건을 설정해준다.
(23.03.13 추가)
IK 본에서 위아래로 스피어 트레이스를 하기 전에 진짜 foot 본의 위치로 ik 본을 옮겨주어야 발의 위치가 자연스럽게 출력된다.
해당 과정을 맨 처음 진행해주면 된다.
'UnrealEngine > 개념' 카테고리의 다른 글
IK 릭 애니메이션 리타기팅 (0) | 2023.03.08 |
---|---|
Delegate (0) | 2023.03.07 |
IK(Inverse Kinematic, 역운동학) (0) | 2023.03.07 |
Enhanced Input(향상된 입력) (0) | 2023.03.01 |
Class Default Object (0) | 2023.02.28 |