Unity跨平台技术分享游戏编程

反向动力学(Inverse kinematics) 学习笔记

2018-03-06  本文已影响106人  勺子波

1 背景

1.1 骨骼动画

将动画分为两个部分:用于绘制外观的蒙皮,以及用于控制动作的骨架(摘自维基百科)。这些骨架以树状结构组织,每片骨骼包含自身相对于父物体的位置、旋转、缩放信息。

1.2 前向动力学(FK)和反向动力学(IK)

前向动力学是给定运动骨骼点的位置、旋转、缩放信息,计算出骨骼点的位置。

反向动力学则与之相反,先给出骨骼点的位置,然后要求出运动骨骼以什么样的位移、旋转、缩放可以使得骨骼点到达指定的位置。

用加法来做比喻的话,前向动力学是已知算式1+1+3,求结果;反向动力学是已知结果5,求算式。可以看出,反向动力学计算得到的结果往往不是唯一的,因此比前向动力学要复杂许多。

2 反向运动系统的运算

由于对前向动力学算式求逆很困难,并且有可能得到空的结果空间,现在的做法往往是通过迭代优化来获得近似的最优解。核心思想是使用泰勒级数展开,这样比起原始算式,更容易求逆并求解。

2.1 Jacobian inverse technique

2.2 Heuristic Methods

2.2.1 CCD

2.2.2 FABRIK

上一篇 下一篇

猜你喜欢

热点阅读