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 函数来完成此任务?
谢谢!
有没有办法使用内置的三个 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