Інверсна кінематика

Інверсна кінематика(інверсна кінематична анімація, англ. inverse kinematics , IK) — процес визначення параметрів пов'язаних гнучких об'єктів (наприклад, кінематична пара або кінематичний ланцюг) для досягнення необхідної позиції, орієнтації та розташування цих об'єктів. Інверсна кінематика є типом планування руху (англ.). Інверсна кінематика активно використовується в робототехніці, тривимірній комп'ютерній анімації та розробці комп'ютерних ігор. Вона використовується в основному в тих ситуаціях, коли необхідне точне позиціонування гнучких зчленувань одного об'єкта щодо інших об'єктів довкілля. Алгоритм інверсної кінематики протилежний алгоритму прямої кінематики.

Зміст

Інверсна кінематика, як і пряма, застосовуються до моделей будь-яких персонажів чи об'єктів, створених з використанням скелетної анімації. Суть скелетної анімації у тому, що об'єкт складається з набору твердих сегментів (компонентів), з'єднаних зчленуваннями (joint ). При цьому сегменти можуть об'єднуватися в кінематичні пари, які об'єднуються в кінематичні ланцюги. Дані сегменти утворюють ієрархічні ланцюжки, які мають верхній і нижній рівень. Сегменти (компоненти) верхніх рівнів називаються компонентами-предками (або батьківськими сегментами), а компоненти нижніх - компонентами-нащадками (або дочірніми сегментами). Наприклад, якщо розглянути руку людини, то плечовий суглоб буде найвищим рівнем, а кінчик пальця - найнижчим, тобто компонентом-нащадком до плечового суглоба. Ліктьовий суглоб знаходиться всередині ланцюжка, він матиме як батьківські (плечо), так і дочірні (зап'ястя, пальці) сегменти. [1]

Основною відмінністю прямої кінематики від інверсноїкінематики є те, що при прямій будь-яка дія передається по ієрархічному ланцюжку зверху вниз. Наприклад, при русі кульшового суглоба рухаються всі нащадки, тобто колінний суглоб і всі інші. Інверсна кінематика використовує принцип, діаметрально протилежний принципу прямої - переміщення компонентів-нащадків призводить до зміни положення компонентів-предків, тобто алгоритм розраховує положення та орієнтацію компонентів-предків, виходячи із положення та орієнтації компонентів-нащадків. [1]

В інверсній кінематиці дочірній сегмент (компонент-нащадок), що викликає зміну положення та орієнтацію інших об'єктів і розташований в середині окремого ієрархічного ланцюжка сегментів, називається ефектором (англ. effector) [1] . Якщо ефектор є кінцевим об'єктом даного ієрархічного ланцюжка, він називається кінцевим эффектором (англ. end effector ). Саме через ефектор здійснюється маніпулювання всім ієрархічним ланцюжком. Зміна положення та/або орієнтації кінцевого ефектора призводить до зміни положення та/або орієнтації всіх сегментів ієрархічного ланцюжка за законами інверсної кінематики. Зміна становища та/або орієнтації простого (не кінцевого) ефектора призводить до того, що положення об'єктів, що стоять за ієрархією нижче за нього, змінюється за законами прямої кінематики, а об'єктів з вищою ієрархією - за законами інверсної кінематики.

Ключем до успішної реалізації інверсної кінематики є анімація в межах обмежень (англ. constraints): кінцівки моделі персонажа повинні поводитися в розумних антропоморфічних межах. Така сама ситуація і з робототехнічними пристроями, які мають фізичні обмеження, такі як середовище, в якому вони працюють, обмеження руху їх суглобів іобмежені фізичні навантаження та швидкості, з якими вони можуть працювати. [1]

Інверсна кінематика є інструментом, який часто-густо використовують художники тривимірної графіки. Для художника простіше висловити бажану просторову дію, ніж безпосередньо маніпулювати кутами зчленувань. Наприклад, інверсна кінематика дозволяє художнику рухати рукою моделі тривимірного гуманоїдного персонажа до бажаної позиції та орієнтації. При цьому сам алгоритм, а не художник, вибирає правильні кути зап'ястя, ліктя та плечового суглоба.

Наприклад, якщо людина хоче схопити дверну ручку рукою, то її мозок має зробити необхідні обчислення для правильного позиціонування руки та тулуба людини. Основна мета полягає в тому, щоб рухати рукою, але потрібно задіяти багато складних суглобів з декількома зчленуваннями, щоб дістатися до бажаного об'єкта. Подібно відбувається процес у технологічних додатках — щоб досягти бажаної мети, повинні бути виконані математичні обчислення інверсної кінематики для розташування кінцівок правильним чином. Прикладом, коли обчислення інверсної кінематики часто потрібні, є робототехніка. Наприклад, оператор робота хоче помістити якийсь об'єкт за допомогою маніпулятора, однак, природно, він не хоче керувати кожним зчленуванням маніпулятора окремо.

Іншими програмами, де використовується інверсна кінематика, є програми комп'ютерної графіки та анімації. Наприклад, аніматори хочуть керувати моделлю гуманоїдного персонажа, анімація якого генерується комп'ютером, проте дуже важко анімувати індивідуальні зчленування. Рішення полягає в тому, щоб змоделювати віртуальні зчленування «маріонеткової ляльки» та дозволити аніматору рухати руками, ногами татулубом ляльки, а комп'ютер із використанням інверсної кінематики автоматично згенерує необхідні позиції кінцівок досягнення результату.

Інверсна кінематика часто використовується в комп'ютерних іграх створення анімації гуманоїдних персонажів. В основному інверсна кінематика використовується для створення анімації ніг моделей людиноподібної істоти чи людини. Наприклад, досить просто створити анімацію пересування (ходьба, біг) людини або наземної тварини, якщо вона рухається рівною площиною. Однак якщо ландшафт нерівний (горбистий, вибоїстий, перетнута або гірська місцевість), то створення точної анімації ходьби є фактично неможливим завданням. Анімація ніг не буде відповідати рельєфу поверхні, що виявиться в таких ефектах, як прослизання ніг по поверхні та неточному позиціонуванні ніг щодо неї (ступня «втопатиме» в поверхню або «не діставати» до неї). Саме для якісного та ефективного вирішення цих проблем використовується інверсна кінематика. [1]

До інших програм, які використовують інверсну кінематику, відносяться інтерактивна маніпуляція, керування анімацією та уникнення зіткнень.