使用 THREE.JS 滚动球

Rolling a Ball Using THREE.JS

本文关键字:滚动 JS THREE 使用      更新时间:2023-09-26

我一直在使用THREE.JS在WebGL中开发这个小台球游戏。

现在我有一个问题,从一个位置滚动球,比如Vector3(0, 0, 0)到另一个位置Vector3(10, 50, 200).运动不是问题,但是我就是无法计算出旋转。这是我的做法,或者,尝试:

首先我得到距离:

var movement = new THREE.Vector3();
movement.subVectors(to, from);
var distance = movement.length();

接下来我计算角度

var angle = (distance / (radius * 2 * Math.PI));

在那之后,事情变得有点混乱,我不知道使用什么方法来旋转实际对象 - 我尝试了四元数:

var quaternion = new THREE.Quaternion().setFromAxisAngle(movement.normalize(), angle);
mesh.rotation.setEulerFromQuaternion(quaternion);

有谁知道如何实现这种轮换?

感谢您的任何帮助!

mesh.rotation.set(along_x, along_y, along_z);
mesh.rotation.z += 0.1;

您可以在网格上使用applyTransformation,然后您应该让 lookAt 矢量指向to矢量,然后围绕 x 轴应用简单的动画旋转(因为 lookAt 矢量 = 对象的 z 轴(。

希望这有帮助。