牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

反向动力学

来源: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,这样父骨骼影响总是小于子骨骼,你可以根据实际调整它。

站长注:由于作者未提供原码所以本人自行写了一个

posted on 2008-01-15 16:55 杨粼波 阅读(347) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理