欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity动画状态机融合树与配置Avator

程序员文章站 2022-03-05 14:32:00
首先准备好一个动画状态机,在这里面我提前放入了run、shoot、death三个动画,分别演示下效果,方便后面融合后区分:一、动画融合树我们右键动画状态机中的空白位置,选择Create State->From New Blend Tree创建出来后点击进去融合树:然后他默认给我们生成一个参数,然后我们看到右边的属性中融合树的几种融合模式:1D:一维度融合 最多在两个动画之间的最大最小值中进行融合2D:二维融合 根据两个参数在多个之间融合Direct......

首先准备好一个动画状态机,在这里面我提前放入了run、shoot、death三个动画,分别演示下效果,方便后面融合后区分:

Unity动画状态机融合树与配置Avator

一、动画融合树

我们右键动画状态机中的空白位置,选择Create State->From New Blend Tree

Unity动画状态机融合树与配置Avator

 

创建出来后点击进去融合树:

Unity动画状态机融合树与配置Avator

 

然后他默认给我们生成一个参数,然后我们看到右边的属性中融合树的几种融合模式:

1D:一维度融合 最多在两个动画之间的最大最小值中进行融合

2D:二维融合  根据两个参数在多个之间融合

Direct:直接通过控制权重进行融合

下面分别进行演示

Unity动画状态机融合树与配置Avator

(1) 1D融合:

首先加入3个mation

Unity动画状态机融合树与配置Avator

thrshol简单来说就是用于控制权重,最上面的动画与最下面的动画就是权重的范围,每个动画当前的thrshol就是所在值的位置,比如上图就是均匀分布,如果我改变其中一个值:

Unity动画状态机融合树与配置Avator

那么动画最大值范围就会发生改变。数值图中每个三角形相交的部分动画就会自动进行动画融合,比如我现在设置shoot和run之间作为当前动画效果:

Unity动画状态机融合树与配置Avator

可以看到一边在死亡一边在奔跑,这样就融合好了动画

(2) 2D融合:

在1D中直接通过改变权重即可,但在2D中我们需要通过参数的进行改变,

Unity动画状态机融合树与配置Avator

2D中每个动画就是蓝色的小点,红点就是当前动画的融合状态,越靠近蓝点则这个蓝点的融合占比越大,但上面的图中可以看到无论怎么移动都只能朝斜线方向,因为这都是由参数决定,可以看到在左边的树中根节点的Blend参数的值也在不停变化,所以接下来为了可以让红点任意移动我们还需要设置一个float类型的参数

Unity动画状态机融合树与配置Avator

然后改变右边的参数选项

Unity动画状态机融合树与配置Avator

这个时候你就可以在任意个动画中进行混合。

二、配置 Avator

在人形动画中,Unity支持动画重定向,也就是说一套动画可以给多套模型使用,但在将动画重定向到其他模型后,可能由于模型样式的不同会出现动作畸变或者怪异的情况,为了限制或者改变人物骨骼的移动,我们就需要进入Avator进行骨骼的调节:

Unity动画状态机融合树与配置Avator

然后进入配置界面

Unity动画状态机融合树与配置Avator

可以看到这里有身体、头部等等可以进行配置,哪里可以调节哪里有骨骼都是由美术决定的,下面每一个关联了骨骼的决定了每个节点的位置

Unity动画状态机融合树与配置Avator

我们配置Avator主要是为了限制动作,接下来点开Muscles:

Unity动画状态机融合树与配置Avator

这里可以配置人形每个部分的操作幅度,比如我们点开body:

Unity动画状态机融合树与配置Avator

通过拉动左边的节点运行当前可运动范围,通过右边白色的长条来限制当前的范围,配置好后保存就可以了。

本文地址:https://blog.csdn.net/qq_37872192/article/details/107623195