簡(jiǎn)單的IK骨骼動(dòng)畫IK解算方法
2018/11/15??????點(diǎn)擊:
我們知道一般的骨骼動(dòng)畫就是FK骨骼動(dòng)畫即正向骨骼動(dòng)畫,它的實(shí)現(xiàn)相信大家都以經(jīng)很清楚,我假設(shè)你們都已經(jīng)了解了。 IK骨骼動(dòng)畫就是逆向骨骼動(dòng)畫,如果需要高級(jí)的動(dòng)畫效果我們就要用到它。如果對(duì)游戲角色來(lái)說(shuō)FK骨骼動(dòng)畫的作用帶有主觀性,那么IK骨骼動(dòng)畫的作用則是環(huán)境對(duì)角色的客觀影響。
說(shuō)到IK骨骼動(dòng)畫,我們就需要談到IK解算器。在3DSMAX中我們可以很輕易的創(chuàng)建它,我們這里以HI解算器為例,除此之外還有HD解算器IK肢體解算器。
效果說(shuō)明:假設(shè)黃色的線段為父骨頭,綠色的線段為子骨頭,紅色的為IK解算線(姑且這么叫吧),當(dāng)IK解算線的右端向左端靠近時(shí)會(huì)帶動(dòng)骨骼做彎曲運(yùn)動(dòng)。
假設(shè)上圖是當(dāng)前動(dòng)畫幀的骨骼狀態(tài)。
首先我們需要做出IK解算線并記錄下來(lái),即紅色的線段。
其次先讓子骨頭做一次旋轉(zhuǎn)運(yùn)動(dòng),再做一次IK解算線,即橙色的線段。這時(shí)我們就可以算出紅色線段和橙色線段之間夾角。
后讓父骨頭反向旋轉(zhuǎn)相應(yīng)度數(shù),由于父骨頭會(huì)帶動(dòng)子骨頭,使得橙色線段與紅色線段重合。此時(shí)就是想要的結(jié)果了。
說(shuō)到IK骨骼動(dòng)畫,我們就需要談到IK解算器。在3DSMAX中我們可以很輕易的創(chuàng)建它,我們這里以HI解算器為例,除此之外還有HD解算器IK肢體解算器。
效果說(shuō)明:假設(shè)黃色的線段為父骨頭,綠色的線段為子骨頭,紅色的為IK解算線(姑且這么叫吧),當(dāng)IK解算線的右端向左端靠近時(shí)會(huì)帶動(dòng)骨骼做彎曲運(yùn)動(dòng)。
上圖告訴我們可以用圓的當(dāng)然三維空間中是球的方程來(lái)求交點(diǎn)實(shí)現(xiàn),不過(guò)我想誰(shuí)也不希望用計(jì)算機(jī)來(lái)求解這個(gè)方程,所以有一種替代方案它的實(shí)現(xiàn)原理,這是一種獨(dú)立歷史記錄的IK骨骼動(dòng)畫.
實(shí)現(xiàn)方法大致分為三步:假設(shè)上圖是當(dāng)前動(dòng)畫幀的骨骼狀態(tài)。
首先我們需要做出IK解算線并記錄下來(lái),即紅色的線段。
其次先讓子骨頭做一次旋轉(zhuǎn)運(yùn)動(dòng),再做一次IK解算線,即橙色的線段。這時(shí)我們就可以算出紅色線段和橙色線段之間夾角。
后讓父骨頭反向旋轉(zhuǎn)相應(yīng)度數(shù),由于父骨頭會(huì)帶動(dòng)子骨頭,使得橙色線段與紅色線段重合。此時(shí)就是想要的結(jié)果了。
這只是眾多方法中的一種,當(dāng)然這還有缺點(diǎn),比如旋角度不能過(guò)大,骨頭只間不能成一條直線,但是這些都可以通過(guò)加入條件判斷來(lái)解決。
- 上一篇:C# 串口二進(jìn)制協(xié)議數(shù)據(jù)解析范例 2018/12/26
- 下一篇:骨骼反向動(dòng)力學(xué)(INVERSE IK)的實(shí)現(xiàn) 2018/11/15