Final IK學習筆記2:CCD IK

CCD(Cyclic Coordinate Descent)是最簡單和最流行的反向運動學方法之一倚舀,已廣泛應用于計算機游戲行業(yè)。主要思想是一次將一個關節(jié)與末端效應器和目標對齊痕貌,迭代地使最后一個骨骼靠近目標。即使應用了旋轉(zhuǎn)限制舵稠,CCD也非常快速可靠室琢。 CCD傾向于過分強調(diào)靠近目標位置的骨骼的旋轉(zhuǎn)(非常長的CCD鏈只會在其目標周圍滾動)。減少層次結(jié)構(gòu)中的骨骼重量將彌補這種影響盈滴。它設計用于處理串行鏈骨骼轿钠,因此,很難擴展到多個末端執(zhí)行器的問題(在這種情況下使用FABRIK)疗垛。完全地擴展鏈條也需要大量的迭代。

每幀監(jiān)視和驗證IK鏈在性能上會很昂貴贷腕,因此在運行時更改骨骼層次結(jié)構(gòu)必須通過在求解器上調(diào)用SetChain(Transform []層次結(jié)構(gòu))來完成。如果層次結(jié)構(gòu)有效瞒斩,則SetChain返回true涮总。 CCD允許直接編輯它的骨骼旋轉(zhuǎn)(雖然不是通過場景視圖函數(shù))胸囱,但是位置不可以編輯妹卿,這意味著您可以編寫一個腳本,每幀都在CCD鏈中旋轉(zhuǎn)骨骼夺克,但您不應該像FABRIK一樣嘗試更改骨骼的位置。但是柬帕,您可以隨意縮放骨骼,CCD不關心骨骼長度陷寝。

使用步驟:

  • 將CCDIK組件添加到骨骼鏈中的第一個GameObject
  • 將鏈中的所有元素分配給組件中的“Bones”。 父節(jié)點必須設置凤跑,其他可以跳過。
  • 按Play仔引,將weight設置為1。

改變目標位置:

public CCDIK ccdIK;
void LateUpdate () {
    ccdIK.solver.IKPosition = something;
}

在運行時添加CCDIK:

  • 通過腳本添加CCDIK組件
  • 調(diào)用CCDIK.solver.SetChain()

使用帶旋轉(zhuǎn)限制的CCD:
只需將一個旋轉(zhuǎn)限制組件(RotationLimitAngle翘簇,RotationLimitHinge儿倒,RotationLimitPolygonal或RotationLimitSpline)添加到已分配給CCDIK組件的“bone”的骨骼上版保。 請注意夫否,每個旋轉(zhuǎn)限制都會降低求解器的穩(wěn)定性和連續(xù)性。 如果CCDIK無法在某些目標位置解決高度約束的鏈袖裕,那很可能不是FinalIK的錯誤曹抬,而是CCD算法的一個根本障礙(記住,沒有IK算法是完美的)堰酿。


應用了旋轉(zhuǎn)限制的CCD

組件參數(shù):

  • timeStep - 如果為零张足,將更新每個LateUpdate()中的求解器,用于骨骼帶動畫時的情況为牍。 如果大于零,將按頻率更新碉咆,以便求解器將在所有對象上同時到達其目標。
  • fixTransforms - 如果為true茂浮,則將解算器使用的所有Transforms修復為每個Update中的初始狀態(tài)。 這可以防止沒有動畫骨骼和animator的剔除的問題席揽,并且性能成本很低。

求解參數(shù):

  • target - 目標變換幌羞。 如果已分配,則解算器IKPosition將自動設置為目標的位置属桦。
  • weight - 用于平滑地混合IK效果的求解器權(quán)重
  • tolerance - 距離最后到達位置的最小距離。 如果與先前到達位置的差異小于容差愁拭,則將停止求解亏吝。 如果容差為零,將迭代直到maxIterations蔚鸥。
  • maxIterations - 每幀最大迭代次數(shù)。 如果tolerance為0止喷,則將一直迭代直到maxIterations
  • useRotationLimits - 如果為true,將使用附加到骨骼的任何RotationLimit組件
  • bones - 求解程序用于到達目標的骨骼弹谁。 所有骨骼都需要按降序排序(父節(jié)點優(yōu)先)。 可以在層次結(jié)構(gòu)中跳過骨骼沟于,骨骼層次結(jié)構(gòu)不能分支植康,這意味著您無法從雙手分配骨骼旷太。 weight決定了解算器計算時它的權(quán)重销睁。


    CCD組件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冻记,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子檩赢,更是在濱河造成了極大的恐慌违寞,老刑警劉巖偶房,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棕洋,居然都是意外死亡,警方通過查閱死者的電腦和手機掰盘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門愧捕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奢驯,“玉大人次绘,你說我怎么就攤上這事∮寿耍” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵豁跑,是天一觀的道長泻云。 經(jīng)常有香客問我,道長壶愤,這世上最難降的妖魔是什么馏鹤? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮湃累,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒙秒。我一直安慰自己,他們只是感情好晕讲,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓢省,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勤婚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天缨称,我揣著相機與錄音祝迂,去河邊找鬼。 笑死型雳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的四啰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼欧瘪,長吁一口氣:“原來是場噩夢啊……” “哼匙赞!你這毒婦竟也來了佛掖?” 一聲冷哼從身側(cè)響起涌庭,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拴魄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匹中,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡豪诲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屎篱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵蒂。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡重虑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嚎尤,到底是詐尸還是另有隱情,我是刑警寧澤芽死,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布关贵,位于F島的核電站遇骑,受9級特大地震影響揖曾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炭剪,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望媒鼓。 院中可真熱鬧,春花似錦绿鸣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擎厢。三九已至晾剖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間齿尽,已是汗流浹背灯节。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工绵估, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卡骂,地道東北人国裳。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓全跨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浓若。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345