Какое необходимое ноу-хау для написания библиотеки анимации (IK & FK)? [закрыто]

9

Я не могу найти какую-либо хорошую библиотеку для анимации, те, которые я нашел, просто очень старые и больше не выпускаются, но я заметил, что библиотеки относительно маленькие, поэтому я думаю о том, чтобы написать одну самостоятельно: с чего мне начать ? Каковы основы для этого? Есть книга об этом?

Другие замечания о хорошем формате файлов для анимации также высоко ценятся.

Я использую C ++.

user827992
источник

Ответы:

8

Не пытайтесь писать что-либо с нуля. Обратитесь к существующему коду и возьмите его оттуда.

И если вы хотите читать материал:

Вспышка
источник
7

Прямая кинематика - это просто предпосылка для обратной кинематики в целом.

Для прямой кинематики вы должны иметь некоторые знания о цепях преобразований (например, что означает граф сцены). В качестве примера, хорошей отправной точкой является соглашение Денавит-Хартенберг. Для обратной кинематики изучите циклическое координатное спускание (CCD), обратное Якоби, транспонирование Якоби и псевдообратные решения . Эти концепции и алгоритмы предлагают вам хороший обзор того, что представляет собой математика и частично физика в этой области. Библиотека, язык программирования или форматы файлов никогда не являются ключевым элементом, если вы также хотите понять, что происходит за волшебством.

Если вам нужно быстрое решение или компонент для какого-либо приложения, над которым вы работаете, то взгляните на некоторые библиотеки, представленные в других ответах здесь. Если вы увлекаетесь робототехникой, то OpenRAVE - монстр, о котором стоит упомянуть. Кроме того, есть Matlab Robotics Toolbox (при условии, что вы разбираетесь в инженерной стороне этого вопроса).

Все концепции приводят к большому количеству релевантных результатов в вашей любимой поисковой системе, поэтому извините за то, что вы не публикуете столько ссылок на интересные материалы.

teodron
источник
1

Оригинальная статья: Что мне нужно знать об обратной кинематике?

Вы, наверное, слышали об обратной кинематике. IK - популярный инструмент в Unity и компьютерной графике, но если вы впервые пытаетесь создать или использовать систему Inverse Kinematics, вам может потребоваться больше деталей. Я собираюсь объяснить, что такое IK, определить словарный запас и рассмотреть использование. Каков необходимый словарный запас, чтобы понять IK?

Прежде чем мы углубимся в суть IK, нам нужно определить некоторый словарь, связанный с IK. ИК - это метод, который применяется к сочлененному телу. Что такое сочлененное тело?

Сочлененное тело

Сочлененное тело может представлять большинство анимированных тел, таких как люди и животные со скелетами. Проще говоря, сочлененное тело - это дерево связанных цепей. Связанные цепи состоят из соединений и звеньев, где звено представляет собой жесткий цилиндр.

введите описание изображения здесь

Типы Суставов

Что касается суставов, есть два типа. Первый тип сустава - это вращающийся сустав. Это связано со ссылкой, которая вращается вокруг него.

Вращающееся соединение очень похоже на центральный штифт часов - со стрелкой часов в качестве звена.

введите описание изображения здесь

Призматическое соединение представляет собой такое соединение, что соединенное звено перемещается от соединения, чтобы удлинить / укоротить звено.

введите описание изображения здесь

Призматическое соединение действует так же, как удлинение / убирание длины выдвижной ручки вашего багажа. Если присмотреться, выдвижная ручка для багажа имеет 4 призматических шва. 2 призматических шарнира на полпути вниз по ручке, и еще 2 призматических шарнира на полпути внизу ручки вверху багажа.

Если вас смущают призматические суставы, не волнуйтесь. Они не используются так часто в обратной кинематике, и, как вы могли бы сказать, ни у кого нет призматических суставов - только вращающиеся суставы.

Иерархическая структура

Шарнирное тело имеет корневой сустав. Корневой шов является основой структуры. Корневой сустав у гуманоида обычно является центром бедер. Шарнирное тело формируется из дерева суставов и звеньев, начиная с корневого сустава. Новое соединение и ссылка похожи на новую ветку на дереве. Внутренняя связь / соединение - это связь / соединение, которое находится ближе к корневому соединению в древовидной иерархии сочлененного тела, поскольку оно относится к данному соединению / связи. Внешняя связь / соединение - это связь / соединение, которая находится дальше от корневого соединения в древовидной иерархии сочлененного тела.

Рабочий орган

Конечный эффектор - это позиция в самой внешней позиции самой внешней подвески. Это свободный конец цепи чередующихся соединений и звеньев. Конечный эффектор не является суставом. Конечный эффектор - это просто положение в конце сочлененного тела. Сочлененное тело может иметь несколько конечных эффекторов, как у бинарного дерева может быть несколько листьев.

введите описание изображения здесь

Конечный эффектор изображён здесь зелёным кружком.

Артикуляции и позы

Артикуляция - это вращение / перемещение сустава, который перемещает связное звено. С другой стороны, поза - это совокупность сочленений суставов, в результате которых устанавливается шарнирное тело. Другими словами, поза представляет собой векторное значение вместо скалярного значения.

Что такое прямая кинематика?

Прежде чем мы сможем понять, что такое обратная кинематика, нам нужно выяснить, что такое прямая кинематика. Функция / алгоритм прямой кинематики принимает позу в качестве входных данных и вычисляет положение конечного эффектора в качестве выходных данных. Прямая кинематика является обратной функцией обратной кинематики. При использовании прямой кинематики вам необходимо определить всю позу сочлененного тела, чтобы обеспечить функцию / алгоритм входной позой. Это означает, что вам нужно определить сочленение каждого сустава в сочлененном теле. Это может быть хорошо, если у вас небольшое количество суставов, но с большим количеством суставов это, как правило, утомительно.

Что такое обратная кинематика?

Теперь представьте, хотите ли вы, чтобы конечный эффектор вашего шарнирного тела достиг определенной заданной позиции. Это означает, что вы знаете конечную эффекторную позицию, на которую хотите нацелиться, но не знаете, какой должна быть поза сочлененного тела, чтобы конечный эффектор достиг этой целевой позиции. Вот где сияет обратная кинематика!

введите описание изображения здесь

Обратная кинематика - обратная функция / алгоритм прямой кинематики. Функция / алгоритм прямой кинематики принимает целевую позицию в качестве входных данных и вычисляет позу, необходимую для достижения конечным эффектором целевой позиции - поза является выходной.

Как видите, вход и выход переключаются между FK и IK. С помощью Inverse Kinematics вам не нужно определять всю позу сочлененного тела - это рассчитывается для вас по алгоритму IK. С IK вам нужно только определить позицию в качестве входных данных.

Обратная кинематика выполняет всю сложную вычислительную работу по вычислению того, что представляет собой поза. В состоянии «До» есть сочлененное тело с известной позой. Он определяет целевую позицию, которую конечный эффектор пытается достичь. Как только алгоритм IK применен к сочлененному телу, мы достигли состояния после. После состояния показывает, что была вычислена новая поза, так что конечный эффектор теперь находится в целевой позиции.

Каковы виды использования IK?

На данный момент мы знаем, что IK применяется к сочлененному телу, мы знаем, из чего состоит сочлененное тело, и мы знаем разницу между IK и FK. Пока у нас есть хороший обзор IK, но давайте округлим его и некоторыми хорошими примерами использования IK. Как мы уже видели, IK можно использовать для гуманоидной руки, чтобы достичь объекта / цели. IK также может быть использован для степпинга ног, так что мы сообщаем ноге, куда нужно шагать, и IK выясняет, как настроить суставы ног. IK обычно не используется как анимация (для достижения объекта), а скорее как инструмент анимации. Итак, если вы реализуете цикл ходьбы, вы можете расположить некоторые ключевые кадры с помощью инструмента IK.

введите описание изображения здесь

Другой ключевой момент в IK заключается в том, что ваша цель / цель не ограничивается только позицией - ваша цель может быть определена как ротация. Например, если ваши ноги должны вращаться в зависимости от неровной местности, ваша цель вращения IK может быть определена на основе нормы пола. Таким образом, ваши ноги наклоняются вдоль пола, например, когда вы идете вверх по склону. Обратите внимание, что вы также можете использовать IK, чтобы ваша голова (или даже глаза) смотрела в определенном направлении. Если вы хотите, чтобы ваша голова следовала за объектом, вы можете использовать IK, чтобы голова следовала за объектом вокруг.

Луис Б
источник