FinalIK反向动力学插件学习
1.Full Body Biped IK组件
全局属性
FixTransform 刷新IK位置(不勾选该选项时,拖动骨骼点,人物会像在太空运动)
Weight 表示应用程度
Iterations 更新其他点的频率。当不用时可改为0,这样托动手时,只有手动,其他部位不会受到影响
Body属性
UseThighs 使用大腿肌肉,默认勾选,运动会缓和更柔和。
Spine 是腹部(胸腔)那一块位置。权重应为1,这样旋转拉伸时,胸腹会跟着身体动,胸腹不会因为其他位置变化而变形了
MaintainHeadRot 头部默认动画占的权重。当为0时,头部不跟着其他位置动,保持原动画。1时,很柔和了
Arm手臂
重点了解Target属性,比如Hand下的Target,拖动场景内物体至Target中,然后调整Position Weight权重为1,此时拖动Target物体,可以发现人物手部会跟随物体移动
代码控制
设置总权重
GetComponent<FullBodyBipedIK>().solver.SetIKPositionWeight(1);
设置左右Arm、左右腿
GetComponent<FullBodyBipedIK>().solver.SetChainWeights(FullBodyBipedChain.LeftArm,1, 1);
设置权重:Body位置、左右手、脚、肩膀、大腿Thigh
GetComponent<FullBodyBipedIK>().solver.SetEffectorWeights(FullBodyBipedEffector.Body,1, 1);
2.Aim Ik组件—瞄准组件
Target 瞄准的物体
Pole Target 物体的位置可以控制人物左右探头(如枪战游戏的左右探头效果)
Aim Transform 使用哪个部位瞄准目标(一般使用在枪口新建空物体,使用该空物体)
Axis 将aim target的轴指向目标,默认为z轴,一般不修改
weight 混合IK效果的权重,与clampWeight 配合使用
clampWeight solver的旋转取值。 0是自由旋转,1是完全固定到没有效果。
一般weight为1,clampWeight为0.5左右
Bones 拖入人体骨骼,一般为脊柱到脖子,然后调整各骨骼的Weight权重,表示人体随目标转动时各部位的影响程度,一般脖子越往下权重越低
3.Grounder Full Body Biped IK组件---人物脚部贴合地形
使用该组件,人物需要有Full Body Biped IK
Layers 脚步检测的层级,需要与地形的层级一致
Max Step 最大抬脚高度
重点了解Spine--人物爬坡之类运动时全身骨骼都会有一定影响,在Spine中添加元素,选择EffectorType,调节Weight即可完成人物运动时该部位受影响权重
4.Interaction System------交互系统,即人物与按钮,门等物体的交互
使用该系统需要在人物上加Full Body Biped IK组件,然后增加Interaction System组件,然后目标物体需要有Interaction Object组件,然后添加Weight Curves,选择Type并配置曲线,然后可以增加Event事件,可选择交互时暂停(Pause)和拾取(Pick Up)。
然后给人物添加简单脚本,如下
public class FinalIKInteractionController : MonoBehaviour
{
public InteractionSystem Interaction_System;
public InteractionObject Interaction_Object;
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
//此处选择与物体交互使用哪个部位
Interaction_System.StartInteraction(FullBodyBipedEffector.LeftHand,Interaction_Object, true);
}
else if (Input.GetKeyDown(KeyCode.B))
{
//取消暂停
Interaction_System.ResumeAll();
}
}
}
若需要手与物体贴合的更好,需要复制模型手部,调整手指旋转,并复制一份到目标物体下作为目标物体的子物体,然后给该子物体添加Interaction Target组件,将目标物体赋给Pivot,并调整Twist Axis旋转轴,可完成人物与物体交互时手部的自然感。
然后还可以给物体添加Animation动画,实现按按钮、开门等动画交互效果。
具体效果调整可参考Unity插件教程合集中FinalIk教程第5讲。
5.CCDIK---自定义骨骼关节
CCDIK适用于非人体骨骼,存在多个关节的物体,如多关节机械臂。
其中Target、Weight、等参数与之前的无异,主要是Bones需要将机械臂的关机分别加载进入并调节Weight即可,有时需要限制机械臂个骨骼节点的旋转,可以添加
Rotation Limit Angle(锥形范围限制),Rotation Limit Hinge(扇形范围限制)