Math 四元数方向和向量位置的插值

Math 四元数方向和向量位置的插值,math,3d,camera,geometry,Math,3d,Camera,Geometry,我有一个3d空间中的相机,由四元数和位置向量(q1和p1)定义 我想将相机移动到由另一对四元数和向量(q2和p2)定义的另一个视点。为了实现平滑动画,我使用球面线性插值来插值四元数,使用线性插值来插值位置向量。对于较小的相机移动,它可以正常工作,但若相机围绕模型旋转180度,它看起来很难看,因为它不环绕模型,而是穿过模型 因此,问题是如何在考虑到相机方向的slerp插值的情况下插值相机位置?我找到了解决问题的方法: 首先,我计算四元数q1和q2之间的差值,并根据该差值计算轴角表示。然后我从线p1

我有一个3d空间中的相机,由四元数和位置向量(q1和p1)定义 我想将相机移动到由另一对四元数和向量(q2和p2)定义的另一个视点。为了实现平滑动画,我使用球面线性插值来插值四元数,使用线性插值来插值位置向量。对于较小的相机移动,它可以正常工作,但若相机围绕模型旋转180度,它看起来很难看,因为它不环绕模型,而是穿过模型


因此,问题是如何在考虑到相机方向的slerp插值的情况下插值相机位置?

我找到了解决问题的方法:

首先,我计算四元数q1和q2之间的差值,并根据该差值计算轴角表示。然后我从线p1-p2计算旋转中心,旋转轴和角度值:

中心=(p1+p2)*0.5+标准(X轴(p2-p1))*(0.5*| p2-p1 |/sin(角度*0.5))


然后我只是围绕中心旋转点p1来插值相机位置

我找到了解决问题的方法:

首先,我计算四元数q1和q2之间的差值,并根据该差值计算轴角表示。然后我从线p1-p2计算旋转中心,旋转轴和角度值:

中心=(p1+p2)*0.5+标准(X轴(p2-p1))*(0.5*| p2-p1 |/sin(角度*0.5))


然后我只是围绕中心旋转点p1来插值相机位置

然后,也许你想插值焦点而不是相机位置?然后,也许你想插值焦点而不是相机位置?