Final IK详解
Final IK是 Uinty3D中的一个付费插件,它提供了多种反向动力学解决方案。
———————————————————————————————————————————
[Ⅰ] Limb IK
Limb IK 基于 Trigonometric IK,主要用于解决三段式手或腿类型的肢体上的反向动力学问题。
(其中 Trigonometric IK 是最基本的IK解算器,基于余弦定理解决了三段式骨骼结构。)
Limb IK扩展Trigonometric IK只是为了添加一些额外的参数,比如多种弯曲修改器,即上图中的Bend Modifier:
(1)动画:用于动画时,尝试保持弯曲方向;这个在用于胳膊三段式IK时会造成弯曲方向错误(用于腿部和躯干暂时没发现问题),但是它的好处是不穿模,保证外层蒙皮的完整。
(2)目标:旋转弯曲方向与目标 IKRotation一致;用于胳膊三段式IK时,动作角度大,不一定存在弯曲方向错误,且会破坏蒙皮
(3)父级:旋转弯曲方向与父变换组件(骨盆或锁骨)一致;用于胳膊三段式IK时,弯曲方向错误。
(4)胳膊:保持胳膊以生物自然的放松方式弯曲;保证胳膊三段式IK正确,但是会破坏蒙皮,这个是最适合胳膊三段式IK的,尽管有些姿态不准确。
(5)目标:使胳膊朝着弯曲目标组件的方向弯曲;用于胳膊三段式IK时,弯曲方向错误。
(注意:只有当弯曲修改器权重Bend Modifier Weight大于0时,才应用弯曲修改器)
Maintain Rotation属性允许末端固定骨在求解完成之前保持在空间坐标中的旋转,这个主要用于脚向地面落下,需要重新放置脚但要脚旋转自如的时候。
Fix Transforms:当勾选时,则将在求解的所有Transforms 修复成每帧的初始状态。这样可以以较小的性能防止一些潜在问题出现
Bone1:第一根骨头(一般是大腿或者上臂)
Bone2:第二根骨头(前臂或者小腿)
Bone3:末端骨(手或脚)
Target:目标对象的变换组件,如果分配了,求解器会将 IKPosition 和 IKRotation 自动设置为目标位置
Position Weight:求解到目标位置的权重(IKPosition)
Rotation Weight:解算到目标旋转的权重(IKRotation)
Bend Normal:由骨骼位置定义的平面的法线。 当四肢弯曲时,第二根骨头将始终位于该平面上的某个位置。其实也是就是选择一个弯曲面。比如,利用IK我们可以知道膝盖的弯曲角度,但是膝盖的位置我们还是不知道。
比如上图中,膝盖的弯曲角度都是90度,脚踝、大腿根的位置也都一样。膝盖的位置却不一样。所以虽然确定了弯曲角度后位置的解仍然有无数个。这个时候就要选择一个“弯曲面”了。因为人体的特殊性,在站着的时候大腿的朝向和脚的朝向一样。所以而我们选择脚所在的平面为弯曲面,就可以确定膝盖的空间位置了。当你添加完三块骨骼时,求解器会自动求解你可能选择的弯曲面。
Avatar IK Goal: 仅由“手臂”弯曲修改器使用。