Unity3D C# script覆盖animation的blendshape
在unity的动画使用中,为了一些更加精确和可控的场景,我们需要使用脚本来控制gameobject的blendshape 进行动画,这就与同时加载的animation的blendshape发生了冲突,本文将介绍如何解决此问题。背景知识:
动画原理
unity3d中3D模型的动画可以由3D模型制作软件录制:Maya、blender等等,也可以由unity中的c#脚本控制生成。
3D模型的动画是按照每一帧的画面连续播放组成的,例如60帧的视频每秒由连续的60张图组成。具体到3D模型,动画的生成是由模型的顶点和顶点的位移组成。顶点是模型最基本的元素,顶点构成矩形,若干个矩形组成模型。模型的运动本质上是顶点的位移,顶点拉动矩形的形变和移动。
模型的运动通常由三个方式驱动,骨骼、blendshape、顶点。骨骼和blendshape本质上都是同时操纵若干顶点,区别在于骨骼是树形结构驱动,对身体动作(例如手、身体的摆动)有很好的效果;blendshape驱动一个区域内的顶点,给中心顶点和近邻顶点分配不同的weight值进行位移。更为精微的运动就依靠单一顶点的驱动。以上三种或单独使用或混合使用。
眨眼、表情、口型
眨眼、表情口型用blendshape的方式更容易实现。此类动画都是简单的位移,而且有被脚本控制的需求。blendshape在unity中为0-100的值,我们可以采用插值的方式赋值给blendshape以生成脚本控制的动画。