Mecanim动画系统(三)

一、初识Blend Trees(混合树)

●  混合树 用于两个或多个类似动画的融合。如从walk到run的速度的变化,或在奔跑的时候向左、向右的倾斜角度。

● 2D Simple Directional(简单的定向): 表示在二维每个空间方向只能有一个动作
  最适用于当你的动作片段代表不同方向时,如“向前行走”、“向后行走”、“向左行走”和“向右行走”或是“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”。选一个基础动作放在位置 (0, 0) 处,如 “idle” 和“aim straight”等。在简单方向 (Simple Directional) 类型中,相同方向上不应存在多个运动,如“向前行走”和“向前奔跑”。
● 2D Freeform Directional(自由的定向): 表示在二维每个空间方向可以有多个动作
  这种类型同样用于当你的动作片段代表不同方向时使用,但是你可以在相同方向上具有多个动作,例如“向前行走”和“向前奔跑”。在任意方向 (Freeform Directional) 类型中,在该类型中应设置一个动作在位置 (0, 0)处,如“idle”。
● 2D Freeform Cartesian(自由的坐标):
  最适用于你的动作中不需要代表不同方向时。如你要做的游戏中包括“向前行走不转弯”、“向前奔跑不转弯”、同时可以“向前行走并右转”、“向前奔跑并右转”等运动时,使用这种类型。

 Direct:能够精准的控制每个动画所占的权重(每个动画占用一个不同的float值)。如下图:

● Automate Threshold: 自动化阙值(阙值:临界值)

1、1D 混合树

● Parameter: 参数类型

● Thresholds:阙值。当“Blend Tree”的数值达到某个动画的阙值时,则完全播放该动画

● 在“1D 混合树”中用代码实现walk到run的过度

        //按下W、S键实现"WalkRun"参数由-1到1的动态变化
        float y = Input.GetAxis("Vertical");
        _animator.SetFloat("WalkRun", y);

2、2D 混合树

● 2D Freeform Cartesian

        //按下W、S、A、D键实现行走动画的过度
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        _animator.SetFloat("h", x);
        _animator.SetFloat("v", y);

二、Mecanim动画系统的简单应用

1、遮罩(用于两种动画的不同部位同时播放,如边奔跑边射击等)

● Weight:权重。基础层的权重为默认

● Mask : 遮罩

● Blending:该层动画与其他层动画的混合方式,包括Override(复写方式,即取不同层动画的中间值)和additive(直接叠加)。

● Sync:同步。同步是本层动画直接同步其他层动画状态之间的逻辑状态,一般需要选取同步源。同步之后需要给本层的动画状态添加动画剪辑。

● IK Pass:即本层动画是否支持IK动画。

1)在Layers中新建一个图层“Layer_attack”,调整权重(Weight)、添加动画。

2)右键新建一个Avatar Mask遮罩并调节Humanoid属性,然后在Mask图层中添加遮罩。新建Avatar Mask如下图:

3)可以在Blending属性中将Override改为additive(直接叠加),得到不同的效果

2、动画重定向

1、直接将建好的Animator Controller赋给角色模型
2、在Project视图中右键新建一个Animator Override Controller然后将Animator Controller赋给他。方法二的好处是可以将“Animator Controller”重新命名便于区分。
注意:需要注意Avatar下面有没有Configure Avatar选项,如果没有则需要重新设置Animation Type和Avatar Definition。否则无法进行动画重定向。如下图

3、IK

  IK(Inverse Kinematics)即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学),而IK则倒过来,由骨骼子节点带动骨骼父节点。(插件:FinalIK)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 在Animator Controller添加一个idle
/// 在Hierarchy窗口创建一个游戏物体给角色用
/// 开启IK Pass,绑定脚本即可
/// </summary>
public class IKController : MonoBehaviour
{
    //声明
    Animator _animator;
    public Transform lookAtObj = null;
    public Transform rightHandObj = null;
    void Start()
    {
        _animator = GetComponent<Animator>();
    }
    void OnAnimatorIK()
    {
        if (_animator)
        {
            if (lookAtObj != null)
            {
                _animator.SetLookAtWeight(1);//设置权重
                _animator.SetLookAtPosition(lookAtObj.position);
            }
            else _animator.SetLookAtWeight(0);
            if (rightHandObj != null)
            {
                //“AvatarIKGoal.RightHand”右手的权重为1
                _animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
                _animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1);
                //右手的位置和旋转角度
                _animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);
                _animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);
            }
            else
            {
                _animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 0);
                _animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 0);
            }
        }
    }
}
时间: 2024-12-25 04:58:10

Mecanim动画系统(三)的相关文章

Mecanim 动画系统 三 动画系统参数

Import  Animation :动画控制器是否导入 Bake Animation : Anim. Compression :动画压缩 Keyframe Reduction': 减少关键帧,减少一些不是特别明显的关键帧. Optinal:最佳的 Rotation Error:角度误差,如果上一帧和下一帧移动误差小于0.5 ,就删除该帧,而 Position Error:位置误差 Scole Error:缩放误差 对于fbx 文件 ,带有动画的,他的文件很大, 每个动画Clips 的参数:  

[Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合

大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 这段时间博主将大部分的精力都放在了研究官方演示样例项目上,主要是希望能够从中挖掘出有价值的东西分享给大家.这样博主和大家能够共同学习.好了,那么今天博主想和大家分享的是自己主动寻路与Mecanim动画系统结合起来实现的一个小案例,希望对大家学习Unity3D能够有所帮助. 博主以前告诉大家.博主是一个仙剑迷,平时学习编程累了的时候,博主就会玩玩仙剑.如图是博主偶尔回去玩玩的<新仙剑OL>

Unity 3D游戏开发Mecanim动画系统讲解

本期教程和大家分享Mecanim动画系统的重定向特性,Mecanim动画系统是Unity3D推出的全新的动画系统,具有重定向.可融合等诸多新特性,通过和美工人员的紧密合作,可以帮助程序设计人员快速地设计出角色动画.一起跟着人气博主秦元培学习吧! 博主今天想和大家分享的是Mecanim动画系统的重定向特性,众所周知,<仙剑奇侠传>是一部经典的RPG游戏,这部游戏到今天依然焕发着强大的生命力.博主在网上认识了一个制作<仙剑奇侠传>同人游戏的小团队,他们目前正在着手制作一个称为<仙

【Unity】第10章 Mecanim动画系统

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉并在新版中不再支持.另一种是Mecanim动画系统,这是建议使用的新版动画系统. 如果你是初学者,就不要去学旧版(Legacy)动画了,直接学习Mecanim动画系统即可. 二.什么是Mecanim动画系统 Mecanim(肌肉线条)是Unity提供的新版动画系统,Unity计划将工作流完全并入Me

Unity3D游戏开发之Unity3D动画与Mecanim动画系统

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生.Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期.使用从Unity资源商店找到的动画资源,或

Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画从一个角色模型应用到其他角色模型之上. 提供可视化的Animation编辑器,可以方便的创建和预览动画片段. 提供可视化的Animator编辑器,可以方便的管理多个动画切换的状态. 工作流 模型的准备 Unity不能制作3D模型和进行骨骼绑定,这些需要在专业的建模软件中由美术进行制作,一般常用的建模

Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)

认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什么区别: 唯一的区别就是Montion指向的类型变成了Blend Tree类型,那么一个Blend Tree其实也就是一个状态,和状态不同的地方就是一个状态只能设定一个动画,而一个Blend Tree则可以设定为多个动画的混合. 混合树是Mecanim动画系统中比较复杂的一个内容,且其分为多个维度,

Unity3D之Mecanim动画系统

Mecanim动画系统 Mecanim Animation System Date:2013-05-16 07:48 Unity has a rich and sophisticated animation system called Mecanim. Mecanim provides: Unity有一个丰富并且精密的动画系统叫做Mecanim.Mecanim提供了: Easy workflow and setup of animations on humanoid characters. 为类

二、Mecanim 动画系统(第二部分)

一.Mecanim概述 Mecanim是Unity一个丰富且精密的动画系统,它提供了: 1.为人形角色提供的简易的工作流和动画创建能力. 2.Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上. 3.针对Animation Clips(动画片段)的简易工作流,即针对动画片段以及它们之间的过渡和交互过程的预览能力.这样可以使动画师更加独立地进行工作,而不用过分地依赖程序员,从而在编写游戏逻辑代码之前即可预览动画效果. 4.一个用于管理动画间复杂交互作用的可视化编