FABRIKRoot是FABRIK的多个效应器系统。
它将FABRIK链连接在一起形成极其复杂的IK系统的组件,具有多个分支,末端效应器和旋转限制。
使用步骤:
- 创建多个FABRIK链,将它们定位为你希望它们连接的位置。 链条不必彼此成为父对象
- 确保子链的第一个骨骼与其父骨骼的最后一个骨骼位于同一位置
- 创建一个新的GameObject,添加FABRIKRoot组件
- 将所有FABRIK链添加到FABRIKRoot组件中的“Chains”
- 运行测试
访问FABRIKRoot的链:
public FABRIKRoot fabrikRoot;
void LateUpdate () {
Debug.Log(fabrikRoot.solver.chains[index].ik.name);
}
限制:
- 单独的FABRIK链不能使用相同的骨骼,它们必须完全独立
- FABRIK链的最后一根骨骼必须与其子链的第一根骨骼位于同一位置
组件参数:
- timeStep - 如果为零,将更新每个LateUpdate()中的求解器,用于骨骼带动画时的情况。 如果大于零,将按频率更新,以便求解器将在所有对象上同时到达其目标。
- fixTransforms - 如果为true,则将解算器使用的所有Transforms修复为每个Update中的初始状态。 这可以防止没有动画骨骼和animator的剔除的问题,并且性能成本很低。
求解参数:
- weight - 用于平滑地混合IK效果的求解器权重
- iterations - 每帧最大迭代次数。
- rootPin - 将第一个链固定到组件所连接的Transform的权重
- chains - 此FABRIKRoot使用的FABRIK组件列表
链参数:
- IK - 使用的FABRIK组件
- pull - 对于父链条拉力。
- pin - 对于子链条的抵抗力。 如果是1,这条链不能被它的子链条拉出来。
- children - 此链的直接子节点的索引(“Chains”数组)。 不要添加子节点的子节点。