IK FK之全面了解

2022-04-28 15:27:11 字數 1117 閱讀 7896

很久以前就想寫這麼乙個帖子,但是覺得要寫起來需要配圖比較麻煩,但是又經常看到有人對ik/fk有錯誤的認識。所以決定還是開始寫,慢慢去完善和補充。我想這個帖子看下來,應該可以讓美術以及不了解ik/fk的技術美術有個正確的概念。

ik是inverse kinematics,逆向運動或者叫反向運動。與之相對應的是fk全名forward kinematics,正向運動也可以叫前向運動。

在美術的思維中,正向運動就是父物體帶動子物體,子物體無法影響父物體,反向運動則相反,子物體可以帶動父物體,而父物體對子物體的影響僅限於參與整個ik骨骼鏈的根骨骼,其他的骨骼無法影響子物體。

如果想要正確理解逆向運動,比如明白為什麼不存在所謂的「無縫切換」。平時說的無縫切換是指切換的時候沒有抖動,但許多人以為,「無縫切換」就是無需切換,自動換用正向或逆向。要正確理解逆向,首先要換個方式去理解什麼是正向以及什麼是逆向。正向,就是從物體的變化求結果;逆向則是從結果求物體的變化。

比如說乙個球在 0 0 0這個位置,正向運動就是向x方向移動10個單位,結果就是10 0 0。而逆向則是目標位置是10 0 0,這個球移動到該位置。

這個例子看起來似乎正向和反向沒什麼差別,不過如果是乙個複雜一點的結構的話。比如說人的胳膊,正向運動就是上臂旋轉四十五度,小臂旋轉四十五度,然後手腕處在乙個位置,假設是 10 10 10。這裡需要上臂和小臂的旋轉值。逆向呢,則是直接給出手腕的目標點 10 10 10,然後計算出小臂和上臂的旋轉值,當然在三維空間裡這個的結果是無限多個,所以,動畫軟體裡的逆向需要有個朝向約束。

為什麼會需要有逆向運動和正向運動,比如說乙個引體向上的動作,手的位置是固定的,身體被胳膊帶動,逆向運動很符合的子物體帶動父物體的需求。再比如乙個人揮舞一塊板磚,如果只調節板磚或手腕的位置就可以完成整個胳膊的動畫是很便捷的。而正向運動呢,比如說乙個掰手腕的動作,是在乙個平面上,以肘部為支點以上臂的朝向為軸向旋轉,這個動作用逆向是非常難做的,不信的大可以用逆向做一下看看。二者都有其很方便的場合而且有時候乙個很方便的時候恰恰是另乙個很麻煩的時候。

我想現在應該已經可以理解為什麼沒有「無縫切換」,二者的動畫計算方式是不同的,不可能同時使用兩種計算方式,在某一時刻整個骨骼鏈要麼是正向運動要麼是逆向運動。如果要切換二者,必須有乙個引數裡控制當前是正向還是逆向,如果是正向就從父級一層層變換下來,如果是逆向,就從目標體推算當前骨骼正確的變換。

全面了解 Powerset

人們期待已久的自然語言搜尋引擎 powerset 終於亮相,powerset 將改變人們從 wikipedia 搜尋和發現資料的方式。基於 parc 專利許可,以及專有的搜尋技術的 powerset 將是自然語言搜尋技術的一種突破,它可以就任何主題或領域,從 wikipedia 的文章中抓取句子的含...

CSS margin全面了解

一 margin可以為負值 在盒模型中,內容區的width height padding border都不能為負值,但是margin例外,它可以為負值。關於margin負值的使用技巧,了解不多,日後有機會再補充,此處先貼乙個經典應用,margin left負值結合浮動實現不改變dom結構的流體布局。...

全面了解「設計模式」

其他設計模式介紹 單例模式 singleton 最易懂的設計模式解析 簡單工廠模式 factorypattern 最易懂的設計模式解析 工廠方法模式 factory method 最易懂的設計模式解析 抽象工廠模式 abstract factory 最易懂的設計模式解析 策略模式 strategy ...