三个JS将模型旋转到xyz位置

use*_*856 4 javascript three.js

我正在尝试将 Three JS 中的对象旋转到空间内的固定 xyz 位置。目前我可以这样实现:

var position_x  = -0.85;
var position_z  = -4.44;

model.lookAt(position_x, 0, position_z);
Run Code Online (Sandbox Code Playgroud)

然而,lookAt() 函数会立即旋转模型,我想更慢地旋转模型。有没有办法使用内置的三个 JS 函数来完成此任务?

谢谢!

Mug*_*n87 5

有没有办法使用内置的三个 JS 函数来完成此任务?

是的,您可以使用Quaternion.rotateTowards(),其工作原理与 Unity 的Quaternion.rotateTowards()方法类似。

这个想法是计算由四元数表示的目标方向。您可以通过使用来完成此操作Matrix4.lookAt(),然后通过创建基于该矩阵的四元数Quaternion.setFromRotationMatrix()

接下来,您计算每帧的角度步长,这将定义对象转向目标的程度。的计算step如下所示:

const step = speed * delta;
Run Code Online (Sandbox Code Playgroud)

delta是以秒为单位的时间增量值,speed代表我们模型的转动速率(以弧度每秒为单位)。

完整的代码示例位于此处:

https://trijs.org/examples/webgl_math_orientation_transform