Unity动画系统入门

动画系统通用基础知识

1.物体的动画系统
对一个物体来讲,动画系统主要是由Animator与Animation两部分组成。
Animation代表着动画,Animator代表动画控制器,一个物体所有的动画在控制器当中汇总。
一个物体有动画效果,是需要在Aniamtor组件当中指定一个控制器,之后播放的便是控制器中的动画。
2.对Animation的设定
动画的设定是Animation窗口中通过改变或者创建关键帧来实现效果的实现。
创建了一个物体的动画后,可以选定该物体上的相关组件作为关键帧的属性,通过设置不同属性的关键帧,实现动画效果。
从动画的创建原理可以看出,每个动画都对应了一个物体(模型),一个模型的动画的不能随意指定给另一个模型的控制器。

UI动画创建

1.按钮动画
Button组件中选项切换为Animation,再点击Auto Animation,完成对各个状态的按钮动画生成。

2d图片动画创建

1.快速创建
将多张图片选中拖入场景中,自动生成带动画的物体。
2.手动创建
手动创建好一个控制器,创建一个动画,动画的属性选择为Sprit Rederer,将帧图片设定在对应帧位置即可

3d模型动画创建

1.模型导入及基础设置(Model)
3d模型由动画师利用3d软件制作后导入unity使用。一个完整的模型文件由模型、材质、贴图组成,导入过程可能让模型与材质贴图联系中断,之后则需要手动重新关联起来。(skin mesh renderer->meterials->textrials)
2.模型操纵方式(Rig)选择
有三种操纵方式,每种方式都可以生成自己的动画,但是各方式生成的动画未必对同一模型通用。
①legacy
老版本的操作方式,现如今很少使用,该方式创建的动画不能用控制器控制,只能用Animation组建播放。
②genetic
模型的通用方式,会创建出一个avatar,动画可以由控制器控制,但是不同模型的动画不可以重引用。
③humanoid
适用于人形模型的创建,会创建一个avatar,动画可以由控制器控制,且若是同为人形模型的动画可以互相重引用。

Blend Tree

Blend Tree是动画控制器中对多个动画进行融合控制的功能,其有多种Type类型
1.1D
动画通过一个float参数控制,每个动画有一个thread值(可自己设定,也可以由unity对动画分析再生成,一般选择后者)。相当于坐标轴上的一个点。对应的是当参数等于该值时,只播放该动画。参数等于余值时,是相邻动画的插值放映。
2.2D
动画由两个float参数控制,每个动画有x值与y值(有多种生成方式,一般选择由unity生成),相当于在坐标平面中的一个点。对应的是两个参数都分别与x值y值相等时,只播放该动画。参数对应的点位于其他位置时,是相邻动画的插值放映

Match Target

MarcgTarge是animator类中的一个方法,作用是让可以让一段动画中的人某个部位贴合到指定的位置,从而让动画与场景的贴合更加良好。

动画效果叠加与IK动画

Ik动画用于动画效果的叠加。
首先,叠加效果的实现是通过控制器中的多个层级(layer),再通过设置层级的权重(weight),与叠加方式(addative或是override)完成不同效果的融合叠加。但这种方式只能实现整体的融合,若是需要实现局部效果的实现,就需要使用骨骼遮罩(Avatar Mask)。
Avatar Mask
Avatar Mask相当于一个人体各个部分的罩子,创建好后指定给某个动画层级使用。其中被选中的人体骨骼部分才会在动画融合中起作用,被禁用的骨骼部分则不发挥作用。
在各个骨骼当中,手掌和脚部分还具有ik动画效果,可以进行更加细致的微调。
IK动画
IK动画是animator类中的方法,使用时,想用unity自带的方法定位到使用了IK动画的层级,之后就对该层级的IK进行调节,具体实现方法如下。

void OnAnimatorIK(int layerIndex)//Unity 调用的方法
{
    animator.SetIKPosition(AvatarIKGoal.RightHand,position);
}

上述方法能让动画中人物的右手保持在position的位置上。

Timeline

TimeLine的创建和动画一样,需要想选定某个的物体,然后才能创建。播放是通过Playable Direct进行。
在我的理解当中,TimeLine和视频剪辑比较像,效果是将多个动画放在一起进行统一编辑,操作上就是进行多个动画编辑,实现效果。
播放的话,可以勾选Play Awak,开始就播放。
更一般的方式,则是通过PlayableDirect.Play()方式进行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值