我在3d空间中有一个由四元数和位置矢量(q1和p1)定义的相机 我想将相机移动到由另一对四元数和矢量(q2和p2)定义的另一个视点。为了实现平滑动画,我使用球面线性插值和使用线性插值的位置矢量插入四元数。对于小型相机移动它可以正常工作,但是如果相机应该在180度绕模型运行,它看起来很难看,因为它不会绕模型运行,而是经过它。
所以问题是如何在考虑摄像机方向的slerp插值的情况下插入摄像机位置?
答案 0 :(得分:0)
我找到了解决问题的方法:
首先,我计算四元数q1和q2之间的差异,并根据这个差异计算轴角度表示。然后我从线p1-p2,旋转轴和角度值计算旋转中心:
center =(p1 + p2)* 0.5 + norm(X轴(p2 - p1))*(0.5 * | p2 - p1 | / sin(角度* 0.5))
然后我只是围绕中心旋转点p1以插入相机位置