애니메이션 라이브러리 (IK 및 FK)를 작성하는 데 필요한 노하우는 무엇입니까? [닫은]

애니메이션을위한 좋은 라이브러리를 찾을 수 없습니다. 찾은 라이브러리는 실제로 오래되고 중단되었지만 라이브러리가 상대적으로 작다는 것을 알았습니다. 그래서 스스로 코딩하는 것에 대해 생각하고 있습니다 : 어디서부터 시작해야합니까? ? 이것의 기본은 무엇입니까? 이것에 관한 책이 있습니까?

애니메이션에 적합한 파일 형식에 대한 추가 참고 사항도 높이 평가됩니다.

C ++을 사용하고 있습니다.



답변


답변

순 운동학은 일반적으로 역 운동학의 전제 조건입니다.

정역학의 경우 변환 체인에 대한 지식이 있어야합니다 (예 : 장면 그래프의 의미). 예를 들어, Denavit-Hartenberg 규칙은 좋은 출발점입니다. 역 운동학의 경우, CCD ( Cyclic Coordinate Descent ), Jacobian Inverse, Jacobian transpose 및 pseudo-inverse 솔루션을 연구하십시오 . 이 개념과 알고리즘은이 분야의 수학과 일부 물리학에 대한 적절한 개요를 제공합니다. 마법의 배후에서 일어나는 일 을 이해 하려면 라이브러리, 프로그래밍 언어 또는 파일 형식이 절대 핵심 요소가 아닙니다 .

작업중 인 일부 응용 프로그램에 대한 빠른 솔루션 또는 구성 요소가 필요한 경우 여기에있는 다른 답변에 제공된 라이브러리 중 일부를 살펴보십시오. 로봇 공학에 관심 이 있다면 OpenRAVE 는 언급할만한 가치가 있습니다. 또한 Matlab Robotics Toolbox가 있습니다 (문제의 엔지니어링 측면에서 제공되는 경우).

모든 개념은 즐겨 찾는 검색 엔진에서 관련성 높은 결과를 얻을 수 있으므로 멋진 자료에 대한 많은 링크를 게시하지 않아 죄송합니다.


답변

원본 기사 : 역 운동학에 대해 알아야 할 사항은 무엇입니까?

역 운동학에 대해 들어 보셨을 것입니다. IK는 Unity 및 컴퓨터 그래픽에서 널리 사용되는 도구이지만 이것이 Inverse Kinematics 시스템을 처음으로 만들거나 사용하려고 시도한 경우 자세한 내용을 원할 수 있습니다. IK가 무엇인지 설명하고, 어휘를 정의하고, 사용법을 검토하겠습니다. IK를 이해하는 데 필요한 어휘는 무엇입니까?

IK의 중심에 들어가기 전에 IK 관련 어휘를 정의해야합니다. IK는 관절 형 바디에 적용되는 방법입니다. 관절 체 란 무엇입니까?

관절 바디

관절 형 바디는 골격이있는 인간 및 동물과 같은 대부분의 애니메이션 바디를 나타낼 수 있습니다. 간단히 말하면, 관절 몸체는 연결된 사슬의 나무입니다. 연결된 체인은 조인트와 링크로 구성되며, 링크는 단단한 실린더입니다.

관절의 종류

관절은 두 가지 유형이 있습니다. 첫 번째 유형의 관절은 회전 관절입니다. 주위를 회전하는 링크에 연결되어 있습니다.

회전 조인트는 시계 바늘을 링크로 사용하는 시계의 중앙 핀과 매우 유사합니다.

프리즘 조인트는 연결된 링크가 조인트로부터 연결되어 링크를 연장 / 단축시키는 조인트입니다.

프리즘 조인트는 수하물의 개폐식 핸들 길이를 늘리거나 줄이는 것과 매우 유사합니다. 자세히 살펴보면, 개폐식 수화물 핸들에는 4 개의 프리즘 조인트가 있습니다. 2 개의 프리즘 조인트는 손잡이의 절반 아래, 다른 2 개의 프리즘 조인트는 수화물 상단의 핸들 아래까지 내려갑니다.

프리즘 조인트로 혼란스러워도 걱정하지 마십시오. 그것들은 종종 역 운동학에서 사용되지 않으며, 알 수 있듯이 인간은 프리즘 조인트가 없으며 회전 조인트 만 있습니다.

계층 구조

관절 형 몸체에는 루트 조인트가 있습니다. 루트 조인트는 구조의 기초입니다. 휴머노이드의 근관은 대개 엉덩이의 중심입니다. 관절 형 몸체는 루트 조인트에서 시작하여 조인트와 링크의 나무로 형성됩니다. 새로운 관절과 링크는 나무의 새로운 가지와 비슷합니다. 인보 드 링크 / 조인트는 관절 / 링크와 관련되어 있기 때문에 관절 바디의 트리 계층 구조 내에서 루트 조인트에 더 가까운 링크 / 조인트입니다. 아웃 보드 링크 / 조인트는 관절 바디의 트리 계층 내에서 루트 조인트에서 더 떨어진 링크 / 조인트입니다.

엔드 이펙터

엔드 이펙터는 가장 아웃 보드 링크의 가장 아웃 보드 위치에있는 위치입니다. 교차 조인트 및 링크 체인의 자유 단입니다. 엔드 이펙터는 조인트가 아닙니다. 엔드 이펙터는 단지 관절 몸체 끝의 위치입니다. 관절 형 바디는 이진 트리가 여러 개의 잎을 가질 수있는 것처럼 다중 엔드 이펙터를 가질 수 있습니다.

엔드 이펙터는 여기 녹색 원으로 표시됩니다.

관절과 포즈

관절은 연결된 링크를 이동시키는 조인트의 회전 / 번역입니다. 다른 한편으로, 자세는 관절 관절을 위치시키는 관절 관절 세트입니다. 즉, 포즈는 스칼라 값 대신에 벡터 값입니다.

순 운동학이란 무엇입니까?

Inverse Kinematics가 무엇인지 알아 내기 전에 Forward Kinematics가 무엇인지 알아 내야합니다. Forward Kinematics 함수 / 알고리즘은 포즈를 입력으로 취하고 엔드 이펙터의 위치를 ​​출력으로 계산합니다. 순 운동학은 역 운동학의 역함수입니다. 정역학에서는 포즈 입력을 기능 / 알고리즘에 제공하기 위해 관절 형 바디의 전체 포즈를 정의해야합니다. 이것은 관절 된 몸체에서 각 관절의 관절을 정의해야 함을 의미합니다. 관절 수가 적 으면 괜찮을 수 있지만 관절 수가 많으면 지루한 경향이 있습니다.

역 운동학이란 무엇입니까?

이제 관절의 엔드 이펙터가 특정 목표 위치에 도달하기를 원한다고 상상해보십시오. 이것은 당신이 목표로 삼고 자하는 엔드 이펙터 위치를 알고 있지만, 엔드 이펙터가이 목표 위치에 도달하기 위해 관절 몸체의 자세가 무엇인지 알아야한다는 것을 의미합니다. 역 운동학이 빛나는 곳입니다!

역 운동학은 정역학의 역함수 / 알고리즘입니다. Forward Kinematics 기능 / 알고리즘은 목표 위치를 입력으로 취하고 엔드 이펙터가 목표 위치에 도달하는 데 필요한 포즈를 계산합니다. 포즈는 출력입니다.

보다시피, 입력과 출력은 FK와 IK 사이에서 전환됩니다. Inverse Kinematics를 사용하면 관절 형 바디의 전체 포즈를 정의 할 필요가 없습니다. 이는 IK 알고리즘으로 계산됩니다. IK에서는 위치를 입력으로 만 정의하면됩니다.

역 운동학은 포즈가 무엇인지 계산하는 까다로운 계산 작업을 모두 수행합니다. Before State에는 포즈가 알려진 관절이 있습니다. 엔드 이펙터가 도달하려고하는 목표 위치를 정의합니다. IK 알고리즘이 관절 형 바디에 적용되면 After State에 도달했습니다. After State는 엔드 이펙터가 이제 목표 위치에 있도록 새 포즈가 계산되었음을 나타냅니다.

IK의 용도는 무엇입니까?

이 시점에서 우리는 IK가 관절 형 바디에 적용되고 관절 형 바디가 구성되는 것을 알고 IK와 FK의 차이점을 알고 있습니다. 우리는 지금까지 IK에 대한 좋은 개요를 가지고 있지만 IK의 좋은 사용 사례로 마무리 해 봅시다. 우리가 본 것처럼 IK는 인간형 팔이 물체 / 목표에 도달하는 데 사용될 수 있습니다. 발을 밟는 위치를 알려주고 IK는 다리 관절을 구성하는 방법을 파악할 수 있도록 발 스테핑에 IK를 사용할 수도 있습니다. IK는 일반적으로 애니메이션 자체 (객체에 도달)로 사용되는 것이 아니라 애니메이션 도구로 사용됩니다. 따라서 보행주기를 구현하는 경우 IK 도구를 사용하여 일부 키 프레임을 배치 할 수 있습니다.

IK의 또 다른 핵심은 목표 / 목표가 위치만으로 제한되지 않는다는 것입니다. 목표는 순환으로 정의 할 수 있습니다. 예를 들어, 발이 고르지 않은 지형을 기준으로 회전해야하는 경우 바닥의 법선을 기준으로 IK 회전 목표를 정의 할 수 있습니다. 이렇게하면 경사를 걷을 때와 같이 발이 바닥을 따라 기울어집니다. IK를 사용하여 머리 (또는 눈)가 특정 방향으로 보이도록 할 수도 있습니다. 머리가 물체를 따르도록하려면 IK를 사용하여 머리가 물체를 따라 가도록 할 수 있습니다.