关于unity IK的记录学习

1:IK介绍

IK是Inverse Kinematic的缩写,也就是反向动力学。是根据骨骼的终节点来推算其他父节点的位置的一种方法。比如通过手的位置推算手腕、胳膊肘的骨骼的位置
应用:比如角色需要拿各种不同的东西,让角色的手能符合各种不同的东西的握持位置,如果不用IK,那么就需要制作非常多的动画,显然是没发这样做的
unity官方文档:反向动力学 - Unity 手册
https://docs.unity3d.com/cn/current/Manual/InverseKinematics.html

2:Animation Rigging组件

Animation Rigging组件的原理,该组件利用了IK(Inverse Kinematics)反向动力学的原理,通过建立骨骼约束来控制你所指定的某个骨骼的运动,例如可将手骨骼约束在一个点(比如球,或者鱼竿的握点,枪的握点),手将跟随握力点托进行移动和旋转,而左手父骨骼的运动将由组件根据IK来控制,从而实现手自然准确的握住需要握的点


1.png

可以在unity Package包里安装改组件
其基本组件如下:
1:Rig Builder 依赖Animator组件,所以将其与Avatar的Animator组件挂载于同一个物体上,支持同时控制多个Rigs,帮助我们实现动画融合。
2:Rig 约束控制组件,与骨骼根节点位于同一层级,将其添加到Rig Builder组件的Rig Layers列表
3:Two Bone IK Constraint :Root、Mid、Tip是我们想要进行约束的骨骼节点,Source Objects中的Target是新建的一个空节点,用于控制Avatar的胳膊到指定的位置

3:简单的实验(实现一个手臂握住球)

下面是简单做一个案例测试,我们先建立了一个父节点,Hand节点,然后Hand下面模拟一个手的节点,有Root->Middle->Tip可以想象成是手的三个关节点


10.png

可以看下我转动不同部位,就算类似一个手臂的感觉了


500.gif

接下来就是建立Rig约束节点,然后建立Target节点,在通过Position Constraint位置约束组件把Target的位置约束到篮球的位置上,这样手就会跟着球的位置动了
可以看下这些节点关系
2.png
3.png
4.png

这样就大功告成了,最终运行后的效果如下,这里只是模拟手臂 看起来有点不自然


600.gif

4:拓展

IK还能实现很多效果,比如人物眼睛跟随物体,手扶着墙走,感兴趣的可以在了解下FinalIK反向动力学插件,这个就更加强大了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容