为了得到终点上的连续的导数,两个连续的曲线段的导数必须相对应,
形式如同等式若图片无法显示请联系QQ752018766
和
导数连续性方程提供了两个未知数an和bn的一个方程,所以这有一个自由度。就像Shoemake(1987)提出的,一个在控制点上的导数的好的选择就是使用一个“切线”的平均值,因此,,其中若图片无法显示请联系QQ752018766
(2.1)
现在有了两个方程来决定an和bn。一些代数式将写成这样
(2.2)
因此,
举例说明,立方体插值法认为一个有序的四元数的常项是
和
最后是,
有角的四边形插值法是
这可以被认为是若图片无法显示请联系QQ752018766
在终点上的导数是被集中的差分,是所期望的左和右边的导数的平均值。
给定在三文空间中的单元球体上的两个不同的点,是有可能在他们之间取样创建一条包含这两个点的弧线的,特别是,这种方法可以扩展为将四元数作为点,在四文空间中的超球面上。
构造这个方程,让
其中
其中
以上是对于一些状态角
若图片无法显示请联系QQ752018766 。
。
将球形线性插值法缩写为slerp,它被定义为:
(2.3)
其中
虽然
对于单元四元数,slerp能被写成
(2.4)
无论是还是
Slerp的导数形式为等式(9.4),它是等式(9.1)的一个简单的应用:
(2.5)
它可以添加额外的旋转进插值法。甚至是在两个四元数之间插入最短的弧,它还能够获得目的四元数之前环绕着圆n次。在等式(2.3)的方程中还要求额外的一个到θ的状态角,
在OGRE 的动画模块中有定义SimpleSpline与RotationSpline类,实现了样条的插值算法。变换信息的插值法在概念上是容易的。SimpleSpline用来对Translate和Scale进行插值,它实现Catmull-Rom样条类。样条是易弯曲的曲线。而样条在点间消除锐角形成平滑曲线。Catmull-Rom样条是普通Hermite样条的特例,对于Hermite样条,可定义线条的开始和结束点,还有分别位于开始和结尾的2条切线,Catmull-Rom样条将这些简化,只需要定义一系列的点,切线将自动创建。,使用Vector3 interpolate(unsigned int fromIndex, Real t)将告知样条,是否应为新增加的顶点自动计算切线。
RotationSpline用来对Rotation进行插值。旋转的插值法使用了平滑的四元数插入技术。就是把旋转当作是四元数,然后再插入四元数。与简单样条类类似,它讨论在样条上产生平滑插值。当简单样条类处理位置(我们考虑样条的普通场景)样条时,此类还为方位插值。理论上是相似的,除非我们现在是在4文空间而非3文空间。在定位的样条上,我们使用点和这些点的切线来产生样条的控制点。在这个类中,我们使用四元数和四元数微积分(例如每个点的方位和位置变换)。因正切是位置的导数,这与简单样条一样。在每个实际四元数(用原始四元数构成四元数正切)之间将产生有效的额外四元数。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>