UE4动画的骨骼重定向:

是一种将动画数据从一个骨架拷贝到另一个骨架的过程。

动画重定向技术主要针对骨骼动画的方案,由骨骼来描述动作信息,用蒙皮来表示模型网格与骨骼之间的关系从而得到模型最终的样子。

动画重定位允许在共用相同骨架资源但是比例差异很大的角色之间复用动画。通过重定位,可以防止生成动画的骨架在使用来自不同外形的角色时丢失比例或产生不必要的变形。通过动画重定位,还可以在使用 不同骨架 资源的角色之间共享动画,前提是他们使用相似的骨骼层级,并使用名为 绑定(Rig) 的共享资源在骨架之间传递动画数据。

其实即使不使用重定位,也可以在任何共用相同骨架资源的网格之间使用同一套动画,但是如果不同角色的身材由较大差异,效果就会很差。例如矮角色被拉高,高角色被拉矮等。

重定位原理:

骨架资产指的是一个骨骼名称和一个层次结构数据的列表,也存储了定义骨骼的原始蒙皮的比例,该数据以骨骼平移数据的形式存储。重定位系统只会重定位骨骼的平移分量,骨骼的旋转分量来自于动画。

当在由不同比例的mesh的时候,就需要进行重定位。如果不进行的话就会出现具有不同比例的骨骼网格使用原始网格的平移数据。

 

 

UE的骨架编辑器中的骨架树的设置:

这些设置用来更改处理骨骼之间平移重定位的方式:

动画重定向技术分析和Unity中的应用 动画重定向是啥意思_AnimDynamic

 

 

一共有三种。

Animation(动画):骨骼平移来自动画数据,不做改变。0

Skeleton(骨架):骨骼平移来自目标骨架的绑定姿势。

AnimationScaled(比例动画):骨骼平移来自动画数据,但是按照目标骨架和源骨架的比例调整。

 

 

骨骼动画原理:

顶点动画:早期的3D模型动画,将每帧的顶点数据输出到文件中,模型的动画就是一系列的模型数据。(使用存储空间来代替顶点位置的计算)现在的模型过于精细,如果每一帧的动画都使用全部的顶点数据进行存储则数据量太庞大。解决方法就是骨骼动画,通过将模型抽象为一些关键点的集合,整个模型的运动就是这些关键点的运动,而模型的顶点的运动是受到这些关键点的影响,关键点的集合就是骨骼。

而对于关节附近的点,由于受到了多段骨骼的影响,对不同的骨骼赋予不同的权值。

制作过程:rigging(创建骨骼)->skinning(将点映射到骨骼)

 

class Point
{
float x,y,z; //顶点的位置
int  Bone[n]; //影响肌肉的骨头
float Weight[n]  //每一个骨头对顶点的影响度,例如 肘关节的影响度对手臂很多,而肩关节要少。
}
for( int i = 0 ;i < n ; ++ i)
{
(x,y,z) += 骨头[i] * 骨头的影响度[i];
}


骨骼动画制作流程:modeling,rigging, skinning, animation

Rigging:根据模型和角色可能做出的动作制作出一套对应的骨骼,骨骼包含joints和bones,以及joints的自由度。

Skinning:将mesh的顶点绑定在对应的骨骼上,当骨骼运动的时候,蒙皮也运动到相应的位置。

 

AnimDynamic(动画动态)

AnimDynamic是一个小型求解器,用于为骨骼mesh提供基于物理的辅助动画。该处理发生在AnimGraph动画处理期间。在AnimDynamic中,动态的骨骼使用box来表示,用于计算每一个部分的惯性,并且不会计算碰撞,但是可以使用constraints属性来限制动作,其中包括了线性约束,角度约束和平面约束,线性约束和角度约束时被springs来驱动的,来提供更好的弹力感,平面约束用于防止动态的部分发生平面的交叉。

AnimDynamic支持链,可以选择一段骨骼的开始和结束骨骼,并且将为它们链接生成链,但是开销会大很多。

动画重定向技术分析和Unity中的应用 动画重定向是啥意思_动画重定向技术分析和Unity中的应用_02

 

Bound Bone(绑定骨骼):受节点(即AnimDynamic)影响的骨骼。

Box Extents(框范围):创建将产生惯性并且驱动运动的体积,因为体积的不同会导致运动效果的不同。如果希望摆动的运动会持续时间较久并且摆动较为缓慢,则需要一个比较高并且比较宽的盒子,但是如果希望摆动幅度更大而且会较快归位的话,则需要一个比较矮的盒子。该值越小,越容易摆动起来,灵活性越强,且摆动幅度越大。Box Extents用于计算惯性张量,Box的体积大小和惯性大小成正比。

Local Joint Offset(局部关节偏移):用于将运动的constraints附加到骨骼上,并且决定附加点到旋转轴的距离。如果该值设为0则没有任何效果,因为没有offset,也就没有摆动。调整合适的值可以获得合适的运动效果,即类似于钟摆的效果。