逆向运动学
概述
逆向运动学(IK)根据末端执行器的目标位置反向推算关节角度,是骨骼动画中实现自然肢体定位的核心技术。
关键内容
基本原理
正向运动学(FK)从根节点出发依次计算各关节位姿;逆向运动学则反过来,给定末端目标,求解各关节的旋转,使末端尽量到达目标位置。
UrhoX IK 系统组件
UrhoX 通过三个组件实现 IK,均继承自 Component:
| 组件 | 职责 | |
|---|---|---|
| IKSolver | IK 求解器,挂载于骨骼根节点,驱动整条 IK 链的计算 | |
| IKEffector | IKEffector</td> </tr> <tr> <td>[[IK约束 | 关节约束,控制关节刚性、伸展性与长度范围 |
求解流程
IKSolver.RebuildChainTrees()— 根据场景节点重建 IK 链树IKSolver.RecalculateSegmentLengths()— 重新计算各段骨骼长度IKSolver.CalculateJointRotations()— 计算关节旋转IKSolver.Solve()— 执行 IK 求解迭代IKSolver.ApplyActivePoseToScene()— 将求解结果应用到场景
姿态管理
- Original Pose:参考/绑定姿态,由
UPDATE_ORIGINAL_POSE标志维护 - Active Pose:当前求解使用的姿态,由
UPDATE_ACTIVE_POSE标志维护 USE_ORIGINAL_POSE:每次求解前从原始姿态开始,避免累积误差
关键参数
algorithm:IK 算法选择(如 FABRIK 等)maximumIterations:最大迭代次数,控制精度与性能权衡tolerance:收敛阈值,误差小于此值视为已解AUTO_SOLVE:每帧自动求解,无需手动调用Solve()CONSTRAINTS:是否启用 IK约束 限制关节活动范围
来源
- raw/articles/personal/ai-dev-kit/engine-docs/api/ik.md — UrhoX Lua API IK 模块文档
相关
- IKSolver — relates_to,IK 求解器组件
- IKEffector — relates_to,末端执行器组件
- IK约束 — relates_to,关节约束组件
- 骨骼系统 — relates_to,IK 操作的骨骼层级
- 动画控制器 — relates_to,与动画混合配合使用