1

我找到了一个解释 2D 逆运动学的网站:

Starting from the joint nearest the
end point:
1. Calculate a force vector from the end of the bone to the target.
2. Calculate the dot product of the force vector and the Right angle
vector.
3. Multiply it by a small value, like 0.01.
4. Add it to the angle of the joint.

http://freespace.virgin.net/hugo.elias/models/m_ik.htm

所以我的应用程序中骨骼的设计方式是根据关节和角度来设计的。每个“骨骼”都是一个关节、一个角度和一个长度。骨骼的终点是它的起点和角度的单位向量,乘以它的长度。

所以我认为对于第 1 步,我只需生成一个方向指向目标的单位向量,然后将其乘以终点和目标点之间的距离。

第2步是我不确定的地方。我知道如何产生一个点积,但我不确定如何获得他们所说的这个直角矢量。

谢谢

4

2 回答 2

1

“直角矢量”是与骨骼长度成直角的矢量。

如果你沿着它的长度推动骨头,它不应该移动。在这种情况下,这个“直角矢量”和你的力矢量之间的角度是 90 度,所以点积为零。因此,骨骼的角度没有变化。

于 2011-06-02T22:18:21.480 回答
0

Right-Vector 是 2D-inv-kinematics-section 图片中的 R-Vector。它是正交于骨骼的归一化向量。

一个小提示:向量 A 和归一化向量 B 的点积只是向量 A 到向量 B 的直线的投影长度,也就是 cos(角度)。更多细节在这里:http ://en.wikipedia.org/wiki/Dot_product#Geometric_interpretation

因此,如果目标向量与右向量几乎相同,则 cos 将接近 1,并且该算法将比目标向量与您的骨骼向量几乎相同时更多地校正您的骨骼角度( cos 接近 0)

于 2011-06-02T22:24:41.100 回答