使用THREE.JS滚球

时间:2013-06-05 21:08:26

标签: javascript three.js webgl

我一直在使用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);

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

你可以在网格物体上使用applyTransformation,之后你应该让你的lookAt矢量指向to矢量,然后在x轴周围应用简单的动画旋转(因为lookAt vector = z-对象的轴)。

希望这有帮助。