Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js是四元数。slerp()比Vector3.lerpVectors()慢_Three.js - Fatal编程技术网

Three.js是四元数。slerp()比Vector3.lerpVectors()慢

Three.js是四元数。slerp()比Vector3.lerpVectors()慢,three.js,Three.js,我正在为场景中的摄影机设置动画,并一直在使用Quaternion.slerp()和Vector3.lerpVectors() 有了lerpVectors,我就有了一个功能,可以查看矢量3,并设置动画的持续时间,例如 rotateCameraToDestination(new Vector(1,1,1), 3); rotateCameraToDestination(new Quaternion().setFromRotationMatrix(m), 3); 在slerp中,我有一个相同的函数,

我正在为场景中的摄影机设置动画,并一直在使用Quaternion.slerp()和Vector3.lerpVectors()

有了lerpVectors,我就有了一个功能,可以查看矢量3,并设置动画的持续时间,例如

rotateCameraToDestination(new Vector(1,1,1), 3);
rotateCameraToDestination(new Quaternion().setFromRotationMatrix(m), 3);
在slerp中,我有一个相同的函数,它接受一个四元数来定向,还有一个持续时间来设置动画,例如

rotateCameraToDestination(new Vector(1,1,1), 3);
rotateCameraToDestination(new Quaternion().setFromRotationMatrix(m), 3);
这两个持续时间都是3秒(都使用增量时间在渲染循环期间设置动画),但当我测试slerp函数时,通常必须将持续时间增加到30或300左右

这两种方法的插值速率不同吗

任何解释都将不胜感激,我需要留下关于我开发的任何功能的适当文档,干杯

编辑

正如我在评论中提到的,我认为因为我正在更新我的lerp函数的开始位置,它开始得很快,然后结束得很慢,slerp的速率是一致的,因为我没有改变每帧的开始四元数

所以它们只是以不同的速度运行

粗略地表现如下:

LERP:
l----l----l----l----l----l----l--l--l--l--l-l-LL

SLERP:

l--l--l--l--l--l--l--l--l--l--l--l--l--l--l


对不起,麻烦了,伙计们:(

我们需要看看每个函数是如何实现的,才能看到实际发生的情况。你是如何执行插值的?只是向我们展示被调用的函数没有多大帮助。我同意。函数的名称告诉我们很少,重要的是函数内的代码。我意识到,为什么在使用lerp时,我在每一帧改变它的起始向量,所以它们在技术上是以相同的速率运行的,只是在持续时间结束时,lerps位置的变化非常小。我将尝试表示我在编辑中的意思。是的,它们以不同的速率插值,可以说,这里的解释是: