手部反向动力学的实现(final ik)

在unity官网中提供了功能十分强大的final ik,让我们能够很容易的实现我们想要实现的功能

而手部的反向动力学更适合与所提供组件中的CCD IK

本文用到的资源如下,读者可自行下载

Final ik百度网盘资源如下:

链接:https://pan.baidu.com/s/1YBeH8FKOzuMmJwa0LFfhpw

提取码:123q

接下来可按照如下步骤完成手部反向动力学的设置。

1.导入手部模型到Assets下,点击import:

手部反向动力学的实现(final ik)_第1张图片

2.导入Final IK到Assets,点击import

手部反向动力学的实现(final ik)_第2张图片手部反向动力学的实现(final ik)_第3张图片

 

 

3.选择其中一只手,点击Add component,选择CCD IK

手部反向动力学的实现(final ik)_第4张图片

 

4.在CCD IK中的Bones处点击四次加号按钮

手部反向动力学的实现(final ik)_第5张图片

 

5.以食指为例,依次打开每根骨节并在DEF-f_index.03.R处Create Empty

手部反向动力学的实现(final ik)_第6张图片

 

6.移动该GameObject到指尖位置

手部反向动力学的实现(final ik)_第7张图片

 

7.依次将食指的DEF-f_index.01.R,DEF-f_index.02.R,DEF-f_index.03.R,GameObject拖入第8部创建的四个骨节中

手部反向动力学的实现(final ik)_第8张图片

 

8.点击运行,发现可移动指尖达到手指反向动力学的目的

手部反向动力学的实现(final ik)_第9张图片

 

9.停止运行,再在Sci-FiHandModel中新加一个CCD IK插件

手部反向动力学的实现(final ik)_第10张图片

 

10.按照第7到10步的方法为另一根手指添加IK操作

手部反向动力学的实现(final ik)_第11张图片

 

11.重复第12到13步依次为其余每一根手指添加IK操作

手部反向动力学的实现(final ik)_第12张图片

 

12.点击运行,可以拖动任一指尖观察效果

手部反向动力学的实现(final ik)_第13张图片

 

13.停止运行,按照同样的方法,为另一只手添加手指IK操作

手部反向动力学的实现(final ik)_第14张图片

 

14.点击运行,拖动指尖查看效果

手部反向动力学的实现(final ik)_第15张图片

 

15.此时我们发现,手部放平移动手指是,关节不在一条直线上,这是不符合生活常识的,由此,我们还可以为手部添加旋转限制,但是,考虑到可能存在有人的关节活动范围较广,且我们是根据手指头的位置来推断手指的位置,因此我们可以将范围尽量放宽,但要保证手指活动符合常识。

手部反向动力学的实现(final ik)_第16张图片

 

16.每根关节的限制也不尽相同,先选择根关节,点击Add Component,选择 Rotation Limit Angle

手部反向动力学的实现(final ik)_第17张图片

 

17.再分别进行如下配置,注意x,y,z的设置及limit的设置

手部反向动力学的实现(final ik)_第18张图片

 

18.再设置中指其余两关节,这两个关节的设置可以相同,分别选择第二第三关节添加Rotation Limit Hinge,再进行如下配置,注意x,y,z轴设置及Min和Max设置

手部反向动力学的实现(final ik)_第19张图片

 

19.点击运行,发现其运行符合常识

手部反向动力学的实现(final ik)_第20张图片

 

CCD IK基本原理可参考如下内容:

循环坐标下降反向动力学(CCD Ik)_呀啊嘿的博客-CSDN博客

你可能感兴趣的:(c#,unity,游戏引擎,骨骼绑定,机器人)