有没有一种在骨骼动画关键帧之间进行插补的标准插值方法?现在我正在使用glm::slerp()。
除了slerp和lerp外,还有其他的插值方法吗?
根据glm文档,glm::mix(quat1, quat2, a)对两个四元数进行球面线性插值,glm::slerp(quat1, quat2, a)对两个四元数进行“短路径球面线性插值”。有什么关系呢?
发布于 2015-11-18 15:20:33
当有疑问时,看在源代码。唯一的区别是这个部分(除了不同的x/y/z命名):
// If cosTheta < 0, the interpolation will take the long way around the sphere.
// To fix this, one quat must be negated.
if (cosTheta < T(0))
{
z = -y;
cosTheta = -cosTheta;
}基本上它们是相同的,除了slerp保证插值在球体上采用较短的路径,而mix不关心,并且可能采取相反的更长的路径。
还有许多其他的插值方法;可能最先进的是bezier曲线(使用了我最常用的动画软件),但是它需要更多的内存和计算能力。
https://stackoverflow.com/questions/33780690
复制相似问题