Unity Inverse Kinematics(IK)的使用

       IK动画全名是Inverse Kinematics 意思是反向动力学,就是子骨骼节点带动父骨骼节点运动。比如跳街舞的少年用手撑着身体在地上转圈,手就是子骨骼,胳膊身体就是它的父骨骼,这时运动手就需要带动胳膊身体来移动。

       IK动画可以在3DMAX 或者Maya中制作(不在本篇的讨论范围内),本篇我么说说在程序中如何动态调用IK动画。IK动画需要使用Unity4新版的动画系统。

       如下图所示,设置模型的骨骼并且给模型添加AnimatorController控制器。

        

      在Unity导航菜单栏中打开Window->Animator打开动画控制器窗口,在这里勾选IK Pass。

        

        代码方面直接使用API中的,我懒得写了,我给大家详细的解释一下。

using UnityEngine;

using System;

using System.Collections;


[RequireComponent(typeof(Animator))]  


public class IKCtrl : MonoBehaviour {


//动画控制

protected Animator animator;

//是否开始IK动画

public bool ikActive = false;

//右手子节点参考的目标

public Transform rightHandObj = null;



void Start ()

{

//得到动画控制对象

animator = GetComponent<Animator>();

}


    //a callback for calculating IK

    //它是回调访法。

    //前提是在Unity导航菜单栏中打开Window->Animator打开动画控制器窗口,在这里必须勾选IK Pass!!!

void OnAnimatorIK()

{

      if(animator)

      {

            //if the IK is active, set the position and rotation directly to the goal.

            //即或IK动画后开始让右手节点寻找参考目标。

if(ikActive)

{

               //weight = 1.0 for the right hand means position and rotation will be at the IK goal (the place the character wants to grab)

               //设置骨骼的权重,1表示完整的骨骼,如果是0.5哪么骨骼权重就是一半呢,可移动或旋转的就是一半,大家可以修改一下参数试试。

   animator.SetIKPositionWeight(AvatarIKGoal.RightHand,1f);

   animator.SetIKRotationWeight(AvatarIKGoal.RightHand,1f);


    //set the position and the rotation of the right hand where the external object is

if(rightHandObj != null)

{

//设置右手根据目标点而旋转移动父骨骼节点

animator.SetIKPosition(AvatarIKGoal.RightHand,rightHandObj.position);

animator.SetIKRotation(AvatarIKGoal.RightHand,rightHandObj.rotation);

}

}

//if the IK is not active, set the position and rotation of the hand back to the original position

//如果取消IK动画,哪么重置骨骼的坐标。

else

{

animator.SetIKPositionWeight(AvatarIKGoal.RightHand,0);

animator.SetIKRotationWeight(AvatarIKGoal.RightHand,0);

}

}

}   

}

       如下图所示,图中哪个小球就是子节点参考的目标。,在Scene视图中移动哪个小球,你会发现主角的右手开始IK动画。

        

        上面代码中我们IK的是主角的右手,实际上IK动画支持两个手和两个脚。

// AvatarIKGoal.RightHand 右手

// AvatarIKGoal.LeftHand  左手

// AvatarIKGoal.LeftFoot  左脚

// AvatarIKGoal.RightFoot 右脚

animator.SetIKPosition(AvatarIKGoal.RightHand,rightHandObj.position);

animator.SetIKRotation(AvatarIKGoal.RightHand,rightHandObj.rotation);

————————————————————————————————

原文:Unity3D研究院之代码使用IK动画(五十五) | 雨松MOMO程序研究院

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity FinalIK是一款用于实现逆向运动学(IK)效果的插件,它能够在Unity中轻松地添加并控制角色的动作,提高角色动画的真实性和流畅度。该插件的最新版本为Unity FinalIK 1.9。 Unity FinalIK提供了多种IK效果,包括全身IK、手臂IK、脚部IK等,可以适应不同类型的角色和动画需求。它还包含了自定义曲线调节、IK重定向、斜面匹配和射线遮挡等功能,可以增强动画的逼真性和自然感。 最新版本的Unity FinalIK 1.9相对于前几个版本做了一些优化和改进。首先,它提供了更高的稳定性和性能,减少了在运行时的运算负荷,使得动画播放更加流畅。其次,该版本加入了新的功能,如动态脚部IK、角色肢体和头部的延迟匹配等,使得角色动画更加真实和自然。 此外,Unity FinalIK 1.9还在输入端口方面进行了改进,增强了用户的控制和定制性。它提供了更多的参数、参数调整选项和回调函数,使得用户能够更加方便地自定义自己的动画效果。 综上所述,Unity FinalIK是一款功能强大的插件,可以帮助开发者快速实现逼真的角色动画效果。最新版本的Unity FinalIK 1.9在稳定性、性能和功能方面都有所提升,为开发者提供了更多控制和定制的可能性。 ### 回答2: Unity FinalIKUnity引擎中的一个强大的求解动画逆向运动学(IK)解决方案。它可以帮助开发者实现更真实的角色动画效果。最新版本的Unity FinalIK提供了更多的功能和改进,让开发者能够更方便地创建高质量的动画。 首先,最新版本的Unity FinalIK增加了更多的IK解算器,例如链式IK和FABRIK。开发者现在可以使用不同类型的IK解算器来实现复杂的角色运动,从而获得更加真实和流畅的动画效果。 其次,Unity FinalIK的最新版本提供了更多的约束和控制选项,例如旋转约束和转向解算器,使得开发者可以更精细地控制角色的姿势和动作。这些约束和控制选项可以帮助开发者解决一些常见的动画问题,例如避免“颤抖”和“拉伸”等现象。 此外,最新版本的Unity FinalIK还改进了算法和性能,提高了IK解算的效率和稳定性。这意味着开发者可以更快地生成和更新IK效果,而不会降低游戏的性能或产生不稳定的效果。 总而言之,最新版本的Unity FinalIK为开发者提供了更多的功能和改进,可以帮助他们创建更真实、流畅和高质量的角色动画效果。无论是制作游戏还是虚拟现实应用,Unity FinalIK都是一个强大的工具,可以提升用户体验,并帮助开发者实现他们的创意。 ### 回答3: Unity Final IKUnity的一个插件,用于实现逆运动学(IK)动画效果。最新版本是Unity Final IK 2.0。 Unity Final IK具有强大的功能,可以实现高质量和逼真的人物动画效果。它提供了多个IK解算器,包括全身IK、手臂IK、脚部IK、头部IK等。使用这些解算器,开发者可以轻松地控制角色的动作和姿势。此外,Unity Final IK还提供了多种限制器和约束,如角度限制器、位置约束器和旋转约束器,以帮助开发者更加精确地控制IK的运动范围。 其中的全身IK解算器可以让开发者实现复杂的角色运动,例如行走、跑步、跳跃等。而手臂IK和脚部IK解算器可以用于控制手臂和脚部的动作,使得角色可以进行各种动作,如抓取物体、行走和攀爬等。头部IK可以用于角色的头部跟随,使得角色的头部可以准确地面向指定的目标或朝向。 Unity Final IK还提供了许多其他功能,如目标传送、注视控制和位移控制等。这些功能都可以很方便地通过插件的编辑器来进行调整和控制。 总之,Unity Final IK是一个功能强大的逆运动学动画插件,它可以帮助开发者实现高质量和逼真的人物动画效果。通过使用其多种IK解算器和约束器,开发者可以轻松地控制角色的动作和姿势,使得游戏的角色表现更加自然和生动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值