Unity动画状态机融合树与配置Avator
首先准备好一个动画状态机,在这里面我提前放入了run、shoot、death三个动画,分别演示下效果,方便后面融合后区分:
一、动画融合树
我们右键动画状态机中的空白位置,选择Create State->From New Blend Tree
创建出来后点击进去融合树:
然后他默认给我们生成一个参数,然后我们看到右边的属性中融合树的几种融合模式:
1D:一维度融合 最多在两个动画之间的最大最小值中进行融合
2D:二维融合 根据两个参数在多个之间融合
Direct:直接通过控制权重进行融合
下面分别进行演示
(1) 1D融合:
首先加入3个mation
thrshol简单来说就是用于控制权重,最上面的动画与最下面的动画就是权重的范围,每个动画当前的thrshol就是所在值的位置,比如上图就是均匀分布,如果我改变其中一个值:
那么动画最大值范围就会发生改变。数值图中每个三角形相交的部分动画就会自动进行动画融合,比如我现在设置shoot和run之间作为当前动画效果:
可以看到一边在死亡一边在奔跑,这样就融合好了动画
(2) 2D融合:
在1D中直接通过改变权重即可,但在2D中我们需要通过参数的进行改变,
2D中每个动画就是蓝色的小点,红点就是当前动画的融合状态,越靠近蓝点则这个蓝点的融合占比越大,但上面的图中可以看到无论怎么移动都只能朝斜线方向,因为这都是由参数决定,可以看到在左边的树中根节点的Blend参数的值也在不停变化,所以接下来为了可以让红点任意移动我们还需要设置一个float类型的参数
然后改变右边的参数选项
这个时候你就可以在任意个动画中进行混合。
二、配置 Avator
在人形动画中,Unity支持动画重定向,也就是说一套动画可以给多套模型使用,但在将动画重定向到其他模型后,可能由于模型样式的不同会出现动作畸变或者怪异的情况,为了限制或者改变人物骨骼的移动,我们就需要进入Avator进行骨骼的调节:
然后进入配置界面
可以看到这里有身体、头部等等可以进行配置,哪里可以调节哪里有骨骼都是由美术决定的,下面每一个关联了骨骼的决定了每个节点的位置
我们配置Avator主要是为了限制动作,接下来点开Muscles:
这里可以配置人形每个部分的操作幅度,比如我们点开body:
通过拉动左边的节点运行当前可运动范围,通过右边白色的长条来限制当前的范围,配置好后保存就可以了。
本文地址:https://blog.csdn.net/qq_37872192/article/details/107623195