Unity IK 反动力学动画
Posted 御雪妃舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的手穿插到自己的头上的问题。下一篇我们说说这个问题的解决思路。
以上是关于Unity IK 反动力学动画的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D之Mecanim动画系统学习笔记:IK(反向动力学)动画