Three.js是Quaternion.slerp()比Vector3.lerpVectors()慢

时间:2018-08-23 16:36:45

标签: three.js

我正在为场景中的相机设置动画,并且一直在玩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

抱歉麻烦的人:(

1 个答案:

答案 0 :(得分:0)

https://jsperf.com

是测试JavaScript性能的一个很好的工具。