IK,反向动力学与FK正向动力学对应,正向运动学就是根骨骼带动节点骨骼运动。而反向运动学就是反过来,由子节点带动父节点运动,实现牵一发而动全身的动画效果。
动画是在导入的FK动画基础之上 ,在游戏中通过与场景元素的交互,实时调整动画状态。
如果我们要使用IK,Unity的Humanoid类型,是内置了IK API的,但是实现完全依赖于自身,所以除非自己的项目需要攻克这一部分,大概率是使用其他的IK插件了,这里推荐一下FinalIK,这个插件比较全,基本上常用的行走、看向这些IK都是可以一键搞定的。也支持Generic和Humanoid类型。
一个问题 :想给角色设置ik 以实现代码控制的 更为自然的 角色动作
比如角色头跟随点击转动 身体也有相应扭转
https://docs.unity3d.com/Manual/InverseKinematics.html
这部分是很容易实现的 ,unity有现成的方法只需要调用一些带ik的API
具体方法见链接
用IK需要fbx的rig 的animation设置为humanoid
这样会有个问题就是 那些附属品 比如裙摆 武器 和很奇怪的跟随着角色的xxxx 这些附属品的animation会失效
而换回generic ik又会失效
解决方法是 fbx 的Animation 的mask 里面把 那些附属品勾选让他们不受IK影响就可以了
官方IK:反向动力学 - Unity 手册
动态骨骼/布料Dynamic Bone,Obj Cloth 也就是比如🐻、飘带、裙子的抖动之类的,会在播放动画的过程中,根据物理更加真实的反应身上物件的变化。
Dynamic Bone | Animation Tools | Unity Asset Store
布娃娃布娃娃系统表现,比如糖豆人、动物派对那种软软的效果。
动画制作要点3DS Max中使用IK的情景还是非常多的。比如一个小章鱼,每个脚上面绑上IK,然后就可以通过脚步移动控制整条腿的运动。如果不用IK的话操作起来很麻烦而且不自然。 而FBX的格式里面也是有IK信息的。只是Unity过滤了相关的数据而已。美术在导出动画之前做这么的操作,然后动画就正常了。 1) Set up the bone structure as you please. 2) Create the animations you want, using FK and/or IK 3) Select all bones and/or IK solvers 4) Go to Motion->Trajectories and press Collapse. Unity makes a key filter, so the amount of keys you export is irrelevant 5) "Export" or "Export selected" as newest FBX format 6) Drop the FBX file into Assets as usual 在3dmax中ctrl+A选中所有所有骨骼,在右侧的选项卡中选择Motion->Trajectories,如果已经选择好骨骼,Collapse按钮就可以正常点击,点击这个按钮,然后正常的导出动画。这样Unity中的动画表现就跟3dmax一致了。
注意,使用Collapse功能会修改动画的帧(使帧间隔变得一样),这样我们很多动作播放的时候就会被改变,比如攻击动作会变得很慢,没有力度。美术应该在Collapse后再次修改动画(或者是在制作动画之前使用Collapse)以保证动画的正确性。
相关基础概念从Unity的角度来讲,模型动画类型有三种分别是 Legacy、Generic、Humanoid。Legacy基本是在被舍弃了,用的多的是Generic和Humanoid。而从程序的角度来讲模型动画是:顶点动画、蒙皮骨骼动画等等分类。
Unity Generic与Humanoid的若干基础点除盲:
Humanoid类型使用范围与Generic类型使用范围是等价的,但是内部实现方式不一样,即是说使用Generic能达成的效果,Humanoid基本都能达成。但是Unity对Humanoid做了更多上层应用的封装.Generic满足于一般的动画需求,而Humanoid类型结合Unity的Avartar可以使用Unity内置的IK、AvartarMask、重定向等等功能(提出这个是因为不少同事都是基于商业引擎开始学习的,误将Avartar这类定义在概念层面与3D模型动画绑定在了一起,这里除下盲)。 Humanoid的性能消耗>Generic。一般的模型动画播放,使用Generic也可以满足要求,即使是人形态的模型动画。
常见的几种程序和美术意义上的动画类型:
骨骼蒙皮动画(SkinnedMesh)骨骼蒙皮动画(SkinnedMesh):类比于:如同人体运动骨骼带动皮肤。概述一下就是,由世界矩阵驱动根骨骼,根骨骼矩阵驱动子骨骼,逐层递进驱动全身骨骼,再通过蒙皮信息决定每个骨骼对物体模型网格上每个顶点的权重影响,最终决定物体上每个顶点的实际运算位置。这一篇blog写的
混合形状动画(BlendShape)混合形状动画(BlendShape):这个和骨骼动画不同,它是由相同网格顶多,预定义出不同的网格形状,进行插值运算,而不是通过骨骼层层递进去运算,
顶点动画顶点动画:在Unity中很少直接接触到顶点动画,顶点动画与混合动画类似,不过它是记录每一帧的所有顶点数据,逐帧播放。这种对于大顶点数的模型,会占据相当大的内存,不过没啥运算压力。而在一些动画解决方案中,会有bake烘焙动画的功能,其实就是把骨骼动画的每帧计算结果转化成顶点动画,记录下来.由于用得少,这里只提一下.
unity插件-Umotion进阶技巧-合并FK/IK、曲线的使用_哔哩哔哩_bilibili
Unity快速入门之四 - Unity模型动画相关_翕翕堂的博客-CSDN博客_unity动画类型