Unity IK 反动力学动画 (一)

今天下雨,无法去公园表演胸口碎大石,就在家好好写写博客吧。

最近接触了Unity IK用于VR AR的开发还是很有用的,可以使虚拟人物接近人物的操作运动,前一阵也看了头号玩家,虽然没有原书《玩家1号》那么精彩,但也是VR AR未来的大势所趋。

写说说IK是啥:
全称是Inverse Kinematics 反向动力学的意思,举个例子:获取人物手部的骨骼,是手跟随着手柄移动时,手臂也会随着人体动力学的原理运动,简而言之就是不会出现断胳膊,断手,之类的情况出现,手动了,胳膊自然跟着动。

下面写个demo:
场景中有个人,人要用右手去够左边的胶囊体。
这里写图片描述

操作步骤:
1.打开任务动画的IK
这里写图片描述

2.新建一个脚本,脚本代码如下:

public class IKControl : MonoBehaviour {

    //我们的目标胶囊体
    public Transform target;

    //获取要操作的animator
    public Animator animator;

    //unity自带的ik方法,开启ik通道会执行
    private void OnAnimatorIK(int layerIndex)
    {
        //设置左手骨骼的权重,0-1,可自行改变查看效果
        animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1f);
        animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1f);

        //设置左手骨骼的ik目标为胶囊体的坐标和旋转
        animator.SetIKPosition(AvatarIKGoal.RightHand, target.position);
        animator.SetIKRotation(AvatarIKGoal.RightHand, target.rotation);
    }
}

3.把脚本挂到人物上,并设置对应的参数:
这里写图片描述

4.运行结果如图:
这里写图片描述

我们移动胶囊体或者旋转胶囊体,会看到右手会一起移动:
这里写图片描述

基本就是这样了,在VR中把胶囊的位置设置成手柄的动态位置,手就随着人运动了,但是这个可以满足一些动作需求,但是不能满足VR AR中如果手放到后面或者过头顶,就会出现Ethan的手穿插到自己的头上的问题。下一篇我们说说这个问题的解决思路。

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值