来源:http://www.vbgamedev.com/AI/ik.htm
反向动力学
—译zh1110
理论
施加力
力:我们用一个向量描述它——角度和长度(它能产生力),现代的骨骼模型系统中称 cVelocity, 在每次单位时间内改变一定速度.
我们先从一个骨头开始. (我只讨论力加在骨骼末断的情况.)
我用 F(u)表示力 ,用cVel表示加在骨头上的角速度 我们将骨头处理为一向量.
cVel 为 F(u) 垂直于骨头的部分. 我举三个例子:
这些图就是了
影响父体
上面的情况是显然正确的,现在继续举例说明。 首先尝试:如果一个力加在一骨头上,它会影响到父体。
两个骨头的情况 :
-
绿色圆圈的半径 = | F(u) |,
-
| F(u) | = | F(bone1) |,
-
F(u) 平行于 F(bone1).
我可以猜想到父骨骼一定会受其影响.
可以用一个分数求出:
| F(bone1) | = 0.5 * | F(u) |
或更好:
| F(bone1) | = stiffness * | F(u) |
stiffness 为 Single/Double 类型,在 0 到 1之间.
有其他方法取得更好的效果...
如果bone1 和 bone2 垂直, 在bone1上的力最大,当他们平行时力最小 .
我们计算出 bone1投影到 bone2 的部分再除bone2. 这样得到0 到 1间的数.调整它,就有:
也许应该这样
用系数0.5,这样父骨骼影响总是小于子骨骼,你可以根据实际调整它。
站长注:由于作者未提供原码所以本人自行写了一个