正向運動學和反向運動學

2021-09-09 03:11:39 字數 1253 閱讀 1269

正向運動學和反向運動學

上次製作的骨骼動畫例子程式並不完美,我在程式裡面也說了,因為沒有牽涉到反向運動學的知識,所以人物運動起來感覺腳無法收縮、頭髮無法飄逸的感覺。其實在現實中這樣的情況是要避免的,但是由於在動畫設計的時候要指定每乙個關節,顯得非常費事。所以引入了反向運動學這個概念。在介紹反向運動學之前,首先讓我們看一下正向運動學。

正向運動學,通俗來說是給定父骨骼位置以及它的變換來得出子骨骼的位置以及變換,打乙個比方,就像運動手臂,可以帶動手肘,進而帶動手掌運動。正向運動學的概念是非常容易理解的,實現起來也比較方便,即在場景中先繪製父骨骼,應用父骨骼的變換,然後根據這個變換繪製子骨骼,以此類推。我們可以用下面偽**來表示:

pushmatrix( );

renderparentbone( );

pushmatrix( );

renderchildbone( );

……popmatrix( );

popmatrix( );

反向運動學的概念知道了後,我們該思考一下如何實現反向運動學,即給定n個骨骼以及n-1個關節形成乙個關節鏈,已知末端關節的位置和首端關節的位置求出中間關節的位置。目前網路上有關反向運動學的資料偏少,可能這是乙個存在時間並不長的課題吧。我所看到的中文資料僅限於二維的as3相關實現,於是開始研究在三維條件下反向運動學的實現。

解決三維中反向運動學的問題的方法是分析型(一稱解析型)的和數值型方法。分析型的方法給出了乙個完整的求解思路,可是求解的效率不高,尤其是反向運動學的關節鏈很長的時候,在實時演算的領域(比如說遊戲領域)就不是乙個可行的方法。數值型方法是乙個好方法,它類似於啟發式搜尋的方法,即先試錯然後逐步修正,最終得到近似解。下面簡單介紹一下數值型方法中兩種解法:迴圈座標下降(cyclic coordinate decent)法和雅可比矩陣(jacobian matrix)法。

雅可比矩陣法描述了整個關節鏈,每乙個矩陣的列表示了每個關節的末端變化。解雅可比矩陣可不是一件容易事情,所以這只在非實時領域或者高階ik解算器中會得到使用。

迴圈座標下降法是一種簡單而可行的辦法,它由關節鏈的末端出發,層層向上遞推旋轉到目標位置,而且層層迭代以確保準確性,但是效果可能並不好,常常發生在與末端關節連線的關節上,導致的是扭轉變形的關節鏈。但是速度還是***的。

我在研究了幾種方法之後覺得還是從迴圈座標下降方法開始研究,於是在參考資料和前輩們的原始碼幫助下製作出了下面的演示程式。

質點運動學

概述我們忽略物體的大小和形狀,只考慮它的運動情況,這就是質點運動學。本章將討論和物體的運動相關的知識,包括運動 速度和加速度的一些概念。質點定義 忽略物體的大小和形狀,把物體簡化為乙個有質量的物質點,叫質點 把物體看做質點的條件 物體的大小和形狀對研究問題的影響可以忽略 物體在平動 物體內任意兩點的...

正運動學 機械臂運動學筆記(一)

link i 1兩端的關節 關節i 1繞axis i 1旋轉,關節i繞axis i旋轉。在三維空間中一定存在一條線與兩個轉軸 axis 所在的直線都垂直而且是唯一解 軸不平行時 連線兩條轉軸且與兩條轉軸都垂直的這條線段的長度被定義為link lengthai 1a ai 1 兩個轉軸之間的角度差定義...

物理運動學公式彙總

一 直線運動,自由落體運動 二 曲線運動 萬有引力 三 力 常見的力 力的合成與分解 四 動力學 運動和力 五 振動和波 機械振動與機械振動的傳播 六 衝量與動量 物體的受力與動量的變化 一 質點的運動 1 直線運動 1 勻變速直線運動 1.平均速度v s t 定義式 2.有用推論vt vt vo ...