在 OpenGL 中,给定两个相机位置(即模型视图矩阵),我想在它们之间平滑过渡。也就是说,我想在两个模型视图矩阵之间进行插值。我看过很多关于使用 SLERP 在两个旋转矩阵之间进行插值的资源,但是对于相机位置,我们还有一个平移组件。这样做是否像将 SLERP 用于 3x3 旋转矩阵和将 LERP 用于模型视图矩阵的 3x1 平移组件一样简单?我的直觉告诉我,可能没有这么简单,因为 3x1 平移组件不是相机的世界空间位置,对吧?
如果我有每个相机位置的实际世界位置,我想我可以将这些步骤分解为两个 OpenGL 命令:
glMultMatrix(newRotation); // rotation using SLERP
glMultMatrix(newTranslation); // translation using LERP
如果我理解正确的话,这里的newTranslation和模型视图矩阵的3x1平移分量不一样,而是相机的世界空间位置。