목록게임/Inverse Kinematics (7)
센로그
◆ Motion Capture란? Motion Capture는 물체나 사람들의 움직임을 기록하는 것을 의미함. 초당 몇번씩 움직임을 샘플링해서, 디지털 데이터로 바꾼다. 이 기록 데이터는 2D 또는 3D 캐릭터 애니메이션을 만드는 데 쓰임! 만약 얼굴이나 손가락, 또는 미묘한 표정이 포함되면 performance capture라고도 불림. (구분하는 이유는, 얘네는 캡쳐하기 까다롭기 때문. 세밀하고 정교한 캡쳐가 필요함.) 보다 진짜같고 자연스러운 애니메이션을 만드는 것을 목표로 Motion Capture을 사용한다. ◆ Character Animation을 만드는 몇가지 방법들 캐릭터 애니메이션을 생성하는 방법들로는 몇가지가 있다. key frame animation procedural animatio..
대충 잘~ 그럴듯하게 IK를 푸는 법에 관한 이야기. 뉴턴 방법은 느리고 풀기 어려우나, 정확성을 요구하는 로보틱스 분야에서 많이 사용한다. FABRIK과 같은 Heuristic Algorithm은 실시간 속도가 중요하고 그럴듯하게 보여야 하는 게임 분야에서 많이 사용한다. 다음의 휴리스틱 IK 알고리즘들을 살펴볼 것임 CCD Triangulation IK SIK FABRIK FABRIK 확장 ◆ Cyclic Coordinate Descent (CCD) Inward: end effector ~> root joint까지 joint 단위로 시행하며, 임계점까지 반복. 각 step마다 end effector가 target position에 최대한 가깝게 하는 방향으로 각 joint를 돌림. CCD는 휴리스틱 ..
◆ Quasi-Newton Method Quasi-Newton method는 Hessian을 정확히 구하는 것이 아닌, Hessian의 근사를 구하는 방법이다. 2차 미분을 사용하는 Newton method의 경우 종종 수렴이 매우 빠르게 되지만, Hessian의 역함수를 구해야 하므로 큰 계산비용이 요구된다. 따라서, 많은 사람들이 Quasi-Newton Method를 선호한다. 초기 추측을 정하고, 그 지점에서의 gradient(1차 미분)을 구한다. gradient의 변화량을 통해 Hessian을 근사한다. 근사된 Hessian을 이용해 해를 업데이트한다. 종료 조건에 도달할 때까지 반복한다. ◆ Quasi-Newton VS Newton method - 계산 비용 ..
◆ Newton Method for IK Newton method는 IK 문제와 같은 비선형 방정식을 풀기위해 (자코비안과는 다르게) 반복적으로 접근하는 방법이다. root finding optimization 단변수 (uni-variate) 다변수 (multi-variate) ㆍ문제 정의 : IK 문제는 joint angle 등의 변수를 모르는 비선형 연립 방정식의 형태이다. 우리는 end effector가 최대한 target position에 가까이 가도록 하는 연립방정식의 해를 구해야 한다! ㆍ뉴턴 방법 특징 : Newton method는 비선형적인 문제를 선형적으로 접근한다.(Problem linearization) 매 st..
◆ Singular Value Decomposition (SVD) 뒤에 나올 pseudo-inverse matrix의 개념을 이해하기 위해, SVD(특잇값 분해)의 개념부터 설명하고 넘어가겠음! ■ SVD Introduction SVD(Singular Value Decomposition)는 고윳값 분해(Eigen Decomposition)과 극분해(Polar Decomposition)과 관련이 있음. 선형 대수에서, 행렬의 SVD는 해당 행렬을 세 개의 행렬로 factorization하는 과정입니다. 더보기 ※ Matrix factorization(decomposition)이란? Matrix factorization는 행렬을 여러 부분으로 분해하여 곱셈을 통해 원래의 행렬을 재구성하는 과정입니다. 이를 ..
◆ Introduction n개의 joint가 있다고 할 때, θ_1~θ_n까지의 joint angle이 존재한다. θ_j는 j번째 joint의 회전 각도. (회전축을 알고있다고 가정) IK를 풀기 위해, end effector가 최대한 target position에 가깝도록 하는 joint angle들이 결정되어야 함. s_1~s_k : root에 대한 end effector들의 상대 좌표라 하자. s 벡터 : end effector position들을 {s_1, s_2, ... , s_k}^T 열벡터 형태로 표현. t 벡터 : target position들을 {t_1, t_2, ... , t_k)^T 열벡터 형태로 표현함. t_i는 i번째 end effector의 targe..