最新国产在线视频_一色一伦一区二区三区的区别_欧美成人影院亚洲综合图_国产亚洲一区精品_大胆欧美熟妇xxbbwwbw高潮了_久久午夜无码鲁丝片

  • 您的位置:首頁 > 新聞動態 > 技術文章

    骨骼反向動力學(INVERSE IK)的實現

    2018/11/15??????點擊:
    反向動力學,Inverse Kinematics,簡稱IK。簡單地說,由父骨骼的方位和子骨骼的相對變換得到子骨骼的方位,稱為正向動力學(Forward 

    Kinematics,FK);而IK則是先確定子骨骼的方位,反向推導出其繼承鏈上n級父骨骼方位的方法。

    IK在游戲里常見的應用是foot 
    placement,就是當角色站在一個不平的表面上(臺階,斜坡)時,自動調整兩腳的高低(當然,同時會影響小腿和大腿的姿態)以便看上去腳是真正“踩”在地面上的,而不是浮在空氣中或者陷入地面以下。

    如果不用IK的話,要解決這個問題就只能為所有可能的地形起伏情況制作不同的角色動作,其工作量是不可想象的。另外的應用就是象《波斯王子》,《古墓麗影》這樣的游戲,經常會需要主角向前躍起然后抓住一樣東西,比如一根旗桿。主角的彈跳能力通常是固定的,游戲也不可能要求玩家控制角色在一個準確的特定地點朝一個準確的特定方向跳躍,一般都是允許一個誤差范圍。那么問題就出現了,當主角飛到旗桿附近時,可能旗桿在頭頂上,也可能在肩膀之下,或者偏左偏右都有可能,這時IK就可以使主角的雙手自然地伸向旗桿,不管它在哪里(當然,必須physically 
    possible,也就是在生理學上夠得著的距離內)。

    如何實現IK呢?容易想到的是求解方程,但這樣通常會得到無窮多的解。用自己的身體試驗一下,即使手和肩膀都不動,小臂和大臂仍然可以自由靈活的轉動,更不用說涉及超過2級骨骼的IK了。現在常用的IK實現方法稱為CCD(Cyclic 
    Coordinate 
    Descent,中文不知道叫什么),這是一種迭代的方法,在絕大多數情況下,目標骨骼的位置都會收斂到指定位置。見下圖,即使不寫程序,自己拿幾根火柴棍也很容易驗證這個算法的有效性。

    對所有受IK影響的骨骼,按從子骨骼到父骨骼的順序執行迭代操作:旋轉當前骨骼,使當前骨骼位置到目標骨骼的連線指向IK目標位置。由于所有骨骼是從一個特定狀態出發開始IK計算,所得到的結果也會比較穩定。通常5~10次迭代之后就能得到很好的結果。

    目前為止,指定骨骼到達指定位置已經沒問題了,但通常這是不夠的。如果是人體骨骼的話,不是所有的關節都可以向任意方向旋轉,所以我們必須對骨骼的旋轉加以限制,比如肘關節實際上只有一個軸的自由度,而且不能向后彎曲。由于通常骨骼動畫都是用四元數來表示旋轉,而關節的角度限制只能用歐拉角來表示,所以在迭代過程中每次算出骨骼的旋轉后都要轉成歐拉角,看是否超過很限值,如果超過則需要校正,然后再轉回四元數進行計算。

    限制了旋轉角之后,結果看起來就很好了。但是還有一個細節需要注意,當所有需要IK控制的骨骼正好在一條直線上,而IK目標位置正好在也落在這條直線上時(如下圖),算法就會失敗,因為不論迭代多少次,每一個骨骼都會認為自己不需要旋轉。所以一個小技巧是,如果發現骨骼鏈“很直”,就向骨骼允許的任意方向加一些細微的旋轉;或者干脆在骨骼的限制角度數據中就禁止完全“伸直”。



    主站蜘蛛池模板: 日本三级香港三级人妇久久 | 亚洲精品久久婷婷丁香51 | 国产麻传媒精品国产AV | 亚洲AV无码一区二区三区18 | www.四虎在线观看 | 无遮无挡三级动态图 | 无码欧美毛片一区二区三在线视频 | 国产亚洲精品自在久久 | japanesexxxx日本妇伦 | 舌头伸进去搅动好爽视频 | 国产尤物AV尤物在线看 | 又粗又黄又猛又爽大片免费 | 91嫩草在线免费观看 | 偷偷操任你操 | china熟女熟妇乱老女人 | 美女精品一区二区 | 亚洲欧洲精品一区二区三区波多野 | 成·人免费午夜视频强伦 | 精品综合久久久久久97 | www.com.日本一级 | 色狠久久 | 6080亚洲人久久精品 | 区一区二在线观看 | 亚洲一二三精品 | 国产精品人妻无码久久久免费看 | 色琪琪一区二区三区亚洲区 | 免费日批 | 中国XXXXXL19学生 | 黑鬼大战白妞高潮喷白浆 | 国产下药迷倒白嫩丰满美女BD | 在线成人免费观看视频 | 国产色情理论在线观看视频 | 国产精品igao视频网网址不卡日韩 | 4438xx亚洲最大五色丁香 | 最近新中文字幕大全高清 | 好吊妞在线 | 国产chinese男男gaygay网站 | 成年视频在线观看免费 | 欧美日韩人妻精品一区二区三区 | 天干天干夜啦天干天干国产 | 国产在线播放一区二区三区 |