來源: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,這樣父骨骼影響總是小于子骨骼,你可以根據實際調整它。
站長注:由于作者未提供原碼所以本人自行寫了一個