<script src="http://widgets.amung.us/classic.js" type="text/javascript"></script> <script type="text/javascript"> </script>
Morphing
这篇文章给大家介绍一下morphing,它是一种变型动画,也是一种关键帧插值动画。在计算机动画中,变型动画用的很多,比如一个动画角色在说话的时候,我们要对它的嘴做一种动画效果,看起来就像是他在说话一样,或者是做一个角色的表情动画,比如笑的时候嘴角是向上的,伤心的时候嘴角是向下的,等等。
那么插值对morphing来说就是很重要的了,但要如何插值才能达到我们需要的效果呢?
下面来讨论一种最简单的情况,比如,我们要对一个角色的脸部做一个变型动画,让角色的表情由一般样子变成在笑的样子。我们把一般样子时,构成脸部的各个顶点坐标记为N,笑的时候脸部各个顶点坐标记为P。那么我们就得到了原始坐标N,和目标坐标P,现在要做的就是在N和P之间,找到一种过渡的状态,也就是插值M,这个状态M是随时间的变化而改变,或者说随参数t的变化而变化,一般来说,这个参数t的范围是0-1之间。当t为0的时候,M和原始状态相同,当t为1的时候M就是我们的目标效果。
看来这个morphing也就是顶点的变化,我们知道,空间中的一个点变换到另一个点我们可以用这个点加上一个向量来表示:
这里的v我们可以用目标顶点减去原始顶点来得到。那么我们可以得到:
上面的公式适用于只有一个目标动画的情况,现在来扩展到k个目标动画,P0到Pk-1的情况。
上面公式中,Pi就是第i个目标动画,如果我们的变型动画是从一个动画变到另一个,然后再变到另一个等等。ti可以考虑成每个插值状态的权重。通过上面这个公式,就可以很容易的进行变型动画了。
但是这个技术简单易用,但是有它的缺点,就是原始状态和目标状态的顶点个数必须相等,且顺序要对应。
*原创文章,转载请著名出处*