Unity中的逆向动力学

前向动力学是通过父关节点的移动来计算子关节点的位置,这样一步步确定骨骼链上所有关节的位置。而逆向动力学(Inverse Kinematics,后文简称IK):通过子关节的位置,反求推导出所在骨骼链上n级父关节点的位置。

逆向动力学的优缺点:

  • 优点:工作效率高,不需要手动控制的关节数目。
  • 缺点:解方程需要耗费较多的计算机资源。

比如在射击游戏中,我们要设置一个角色左手右手的持枪姿势,同时目光看向枪口瞄准处。直接设置左手、右手以及视线最终落在枪身上的位置。通过IK可以反推算出左右手臂以及头部的骨骼链。

在Unity引擎中,可以以如下步骤,实现上述任务:

  1. 有一个具有有效Avatar的角色模型

  2. 为该角色创建一个 至少含有一个animation的 Animator Controller 。然后在该动画层中勾选IK Pass选项。

  3. 写一个脚本,可以简单命名为IKController。其中只是简单设置一些IK目标。关键语句如下:

    animator.SetIKPositionWeight(AvatarIKGoal.RightHand,1);
    animator.SetIKRotationWeight(AvatarIKGoal.RightHand,1); animator.SetIKPosition(AvatarIKGoal.RightHand,rightHandObj.position);
    animator.SetIKRotation(AvatarIKGoal.RightHand,rightHandObj.rotation);

  4. 将脚本绑定在角色对象上,再在场景中设置一些空对象。将空对象绑定在IKController上。空对象的transfer组件中的position和rotation分量会以IK形式,影响模型。具体看步骤3中的脚本。

  5. 进入play模式,就可以看到IK的作用了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值