三个 JS 将模型旋转到 xyz 位置
Three JS rotate model towards xyz position
我正在尝试将 Three JS 中的对象旋转到 space 中的固定 xyz 位置。目前我可以这样实现:
var position_x = -0.85;
var position_z = -4.44;
model.lookAt(position_x, 0, position_z);
但是 lookAt() 函数会立即旋转模型,我想更慢地旋转模型。有没有办法使用内置的三个 JS 函数来完成此操作?
谢谢!
Is there a way to accomplish this using built in Three JS functions?
是的,您可以使用 Quaternion.rotateTowards(),其工作方式类似于 Unity 的 Quaternion.rotateTowards()
方法。
这个想法是计算一个由四元数表示的目标方向。您可以使用 Matrix4.lookAt()
执行此操作,然后通过 Quaternion.setFromRotationMatrix()
.
基于此矩阵创建四元数
接下来,您计算每帧的 angular 步长,这将定义您的对象转向目标的程度。 step
的计算如下所示:
const step = speed * delta;
delta
是以秒为单位的时间增量值,speed
代表我们模型的转弯速率,以每秒弧度为单位。
此处提供了完整的代码示例:
https://threejs.org/examples/webgl_math_orientation_transform
我正在尝试将 Three JS 中的对象旋转到 space 中的固定 xyz 位置。目前我可以这样实现:
var position_x = -0.85;
var position_z = -4.44;
model.lookAt(position_x, 0, position_z);
但是 lookAt() 函数会立即旋转模型,我想更慢地旋转模型。有没有办法使用内置的三个 JS 函数来完成此操作?
谢谢!
Is there a way to accomplish this using built in Three JS functions?
是的,您可以使用 Quaternion.rotateTowards(),其工作方式类似于 Unity 的 Quaternion.rotateTowards()
方法。
这个想法是计算一个由四元数表示的目标方向。您可以使用 Matrix4.lookAt()
执行此操作,然后通过 Quaternion.setFromRotationMatrix()
.
接下来,您计算每帧的 angular 步长,这将定义您的对象转向目标的程度。 step
的计算如下所示:
const step = speed * delta;
delta
是以秒为单位的时间增量值,speed
代表我们模型的转弯速率,以每秒弧度为单位。
此处提供了完整的代码示例:
https://threejs.org/examples/webgl_math_orientation_transform