骨骼动画关键帧之间的插值是否有标准的插值方法?现在我正在使用 glm::slerp()
。
除了slerp和lerp之外还有插值方法吗?
根据glm docs ,glm::mix(quat1, quat2, a)
对两个四元数进行球面线性插值,glm::slerp(quat1, quat2, a)
进行“短路径”两个四元数的“球面线性插值”。有什么区别?
最佳答案
如有疑问,look来源code 。唯一的区别是这部分(除了不同的 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
不关心并且可能采取相反的较长路径。
还有很多其他的插值方法;可能最先进的是贝塞尔曲线(我使用最多的动画软件),但它需要更多的内存和计算能力。
关于opengl - 实时图形中的骨骼动画插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33780690/