我正在为场景中的相机设置动画,并且一直在玩Quaternion.slerp()和Vector3.lerpVectors()。
使用lerpVectors,我有一个函数可以接受Vector3进行查看,并提供持续时间进行动画处理,例如
rotateCameraToDestination(new Vector(1,1,1), 3);
使用slerp,我有一个相同的功能,它可以使用四元数来定向,也可以使用持续时间来进行动画处理,例如
rotateCameraToDestination(new Quaternion().setFromRotationMatrix(m), 3);
两个持续时间均为3秒(均使用渲染时间在渲染循环中进行动画处理),但是当我测试slerp函数时,通常必须将持续时间增加到30或300左右。
两种方法插值的速率不同吗?
任何解释将不胜感激,我需要为我开发的任何功能留下适当的文档,欢呼声
编辑
正如我的评论中提到的,我认为因为我正在更新lerp函数的起始位置,所以它开始快速,然后缓慢结束,slerp的速率是一致的,因为我没有改变每个帧的起始四元数
因此它们似乎以不同的速度运行。
粗略地表示为:
LERP:
l ------- l ------- l ----- l ---- l ---- l --- l --- l--l--l--ll -llll
SLERP:
l --- l --- l --- l --- l --- l --- l --- l --- l --- l --- l-- -l --- l --- l
抱歉麻烦的人:(