Инверсная кинематика
Инверсная кинематика (инверсная кинематическая анимация, англ. inverse kinematics, IK) — процесс определения параметров связанных подвижных объектов (например, кинематическая пара или кинематическая цепь) для достижения необходимой позиции, ориентации и расположения этих объектов. Инверсная кинематика является типом планирования движения[англ.]. Инверсная кинематика активно используется в робототехнике, трёхмерной компьютерной анимации и в разработке компьютерных игр. Она используется в основном в тех ситуациях, когда необходимо точное позиционирование подвижных сочленений одного объекта относительно других объектов окружающей среды. Алгоритм инверсной кинематики противоположен алгоритму прямой кинематики.
Описание
Инверсная кинематика, как и прямая, применяются к моделям каких-либо персонажей или объектов, которые созданы с использованием скелетной анимации. Суть скелетной анимации состоит в том, что объект состоит из набора твёрдых сегментов (компонентов), соединённых сочленениями (англ. joint). При этом сегменты могут объединяться в кинематические пары, которые в свою очередь объединяются в кинематические цепи. Данные сегменты образуют иерархические цепочки, которые имеют «верхний» и «нижний» уровень. Сегменты (компоненты) верхних уровней называются компонентами-предками (или родительскими сегментами), а компоненты нижних — компонентами-потомками (или дочерними сегментами). Например, если рассмотреть руку человека, то плечевой сустав будет самым верхним уровнем, а кончик пальца — самым нижним, т. е. компонентом-потомком к плечевому суставу. Локтевой сустав находится внутри цепочки, он будет иметь как родительские (плечо), так и дочерние (запястье, пальцы) сегменты.[1]
Основным отличием прямой кинематики от инверсной кинематики является то, что при прямой любое воздействие передается по иерархической цепочке сверху вниз. Например, при движении тазобедренного сустава двигаются все потомки, т. е. коленный сустав и все остальные. Инверсная кинематика использует принцип, диаметрально противоположный принципу прямой — перемещение компонентов-потомков приводит к изменению положения компонентов-предков, то есть алгоритм рассчитывает положение и ориентацию компонентов-предков, исходя из положения и ориентации компонентов-потомков.[1]
В инверсной кинематике дочерний сегмент (компонент-потомок), который вызывает изменение положения и ориентацию других объектов и расположен в середине отдельной иерархической цепочке сегментов, называется эффектором (англ. effector)[1]. Если эффектор является конечным объектом данной иерархической цепочки, то он называется конечным эффектором (англ. end effector). Именно через эффектор осуществляется манипулирование всей иерархической цепочкой. Изменение положения и/или ориентации конечного эффектора приводит к изменению положения и/или ориентации всех сегментов иерархической цепочки по законам инверсной кинематики. Изменение положения и/или ориентации простого (не конечного) эффектора приводит к тому, что положение объектов, стоящих по иерархии ниже его, меняется по законам прямой кинематики, а объектов с более высокой иерархией — по законам инверсной кинематики.
Ключом к успешной реализации инверсной кинематики является анимация в пределах ограничений (англ. constraints): конечности модели персонажа должны вести себя в разумных антропоморфических пределах. Точно такая же ситуация и с робототехническими устройствами, которые имеют физические ограничения, такие как среда, в которой они работают, ограничения движения их суставов и ограниченные физические нагрузки и скорости, с которыми они в состоянии работать.[1]
Использование и примеры
Инверсная кинематика является инструментом, который часто используют художники трёхмерной графики. Для художника проще выразить желаемое пространственное действие, чем непосредственно манипулировать углами сочленений. Например, инверсная кинематика позволяет художнику двигать рукой модели трёхмерного гуманоидного персонажа к желаемой позиции и ориентации. При этом сам алгоритм, а не художник, выбирает правильные углы запястья, локтя и плечевого сустава.
Например, если человек хочет схватить дверную ручку рукой, то его мозг должен сделать необходимые вычисления для правильного позиционирования руки и туловища человека. Основная цель состоит в том, чтобы двигать рукой, но нужно задействовать много сложных суставов с несколькими сочленениями, чтобы добраться рукой к желаемому объекту. Подобным образом происходит процесс в технологических приложениях — чтобы достичь желаемой цели, должны быть выполнены математические вычисления инверсной кинематики для расположения конечностей правильным образом. Примером, когда вычисления инверсной кинематики часто необходимы, является робототехника. Например, оператор робота хочет поместить какой-либо объект с помощью манипулятора, однако, естественно, он не хочет управлять каждым сочленением манипулятора отдельно.
Другими приложениями, где используется инверсная кинематика, являются приложения компьютерной графики и анимации. Например, аниматоры хотят управлять моделью гуманоидного персонажа, анимация которого генерируется компьютером, однако очень трудно анимировать индивидуальные сочленения. Решение состоит в том, чтобы смоделировать виртуальные сочленения «марионеточной куклы» и позволить аниматору двигать руками, ногами и туловищем куклы, а компьютер с использованием инверсной кинематики автоматически сгенерирует необходимые позиции конечностей для достижения результата.
Инверсная кинематика часто используется в компьютерных играх для создания анимации гуманоидных персонажей. В основном инверсная кинематика используется для создания анимации ног моделей человекоподобного существа или человека. Например, довольно просто создать анимацию передвижения (ходьба, бег) человека или наземного животного, если он движется по ровной плоскости. Однако если ландшафт неровный (бугристый, ухабистый, пересечённая или горная местность), то создание точной анимации ходьбы является фактически невозможной задачей. Анимация ног не будет соответствовать рельефу поверхности, что проявится в таких эффектах, как проскальзывание ног по поверхности и неточном позиционировании ног относительно её (ступня будет «утопать» в поверхность или «не доставать» до неё). Именно для качественного и эффективного решения этих проблем используется инверсная кинематика.[1]
К другим приложениям, которые используют инверсную кинематику, относятся интерактивная манипуляция, управление анимацией и избежание столкновений.
Примечания
- ↑ 1 2 3 4 5 Юрий Ильин. Скелетная анимация, прямая и инверсная кинематика . Mir3D.ru (27 июля 2009). Дата обращения: 7 декабря 2009. Архивировано 13 августа 2011 года.
Внешние ссылки
Англоязычные источники
- Hugo Elias. Inverse Kinematics (англ.). freespace.virgin.net. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Hugo Elias. Inverse Kinematics - Improved Methods (англ.). freespace.virgin.net. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Robot Inverse Kinematics (англ.). www.learnaboutrobots.com. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- How do the characters in video games move so fluidly? (англ.). Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Martin John Baker. 3D Theory - Kinematics - Joints Inverse Kinematics (англ.). www.euclideanspace.com. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Lydia E. Kavraki. Protein Inverse Kinematics and the Loop Closure Problem (англ.). cnx.org. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Diego Park. Computer Graphics (англ.). diegopark.googlepages.com. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Bill Baxter. Fast Numerical Methods for Inverse Kinematics (англ.). billbaxter.com (21 февраля 2000). Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
- Dress Up Game with Axe Guitar Girl (англ.). http://www.virtualitoy.com. — Флэш-скрипт на сайте, который позволяет "одеть" человеческую модель. Для анимации одевания используется инверсная кинематика. Дата обращения: 5 июня 2009. Архивировано 13 августа 2011 года.
Русскоязычные источники
- Hugo Elias (перевод на русский — Pavel A. Chuvanov). Инверсная кинематика . GameDev.ru (8 июня 2002). Дата обращения: 5 июня 2009.
- Компьютерная анимация Инверсная кинематика . Живопись, рисунок, графика и анимация. Начертательная геометрия, черчение. Дата обращения: 5 июня 2009.
- Светлана Шляхтина. 3D Studio MAX: первые шаги. Урок 22. Инверсная кинематика . журнал КомпьютерПресс. Дата обращения: 7 июня 2009.
- Инверсионная кинематика . Дата обращения: 5 июня 2009. Архивировано из оригинала 18 января 2011 года.
- ГЛАВА 6. СКЕЛЕТ И ДЕФОРМАЦИЯ КАРКАСА ЧАСТЬ I Инверсная кинематика . Уроки Flash. Дата обращения: 7 июня 2009.
- Глава 6. Анимация иерархии объектов Инверсная кинематика (IK) . Teapot 3-dimension. Дата обращения: 7 июня 2009.
- Алексеев В. Сплайновая инверсная кинематика . 3d-Уроки (10 января 2008). Дата обращения: 5 июня 2009. Архивировано 29 января 2008 года.
- Майкл Комет. 3D Studio MAX: настройка обратной кинематики (IK Setup) . Mir3D.ru. — Урок по созданию инверсной кинематике в 3ds Max. Дата обращения: 7 декабря 2009.