Javascript THREE.js通过鼠标矢量旋转对象

Javascript THREE.js通过鼠标矢量旋转对象,javascript,rotation,three.js,quaternions,onmousemove,Javascript,Rotation,Three.js,Quaternions,Onmousemove,我想建造一些类似的东西(http://www.goat1000.com/tagcanvas.php)使用THREE.js(通过鼠标矢量连续旋转对象,无任何抖动、间隙、中断或其他情况) 我没有进入它-尝试了一些不同的场景(简单地旋转每个轴,尝试slerp和四元数) 你可以在fiddler身上找到我的一些实验。 Slerp(看起来非常像lookAt()): 四元数(看起来不错,但重置为四元数.set(0,0,0,1)很糟糕): 有什么提示吗 var v = new THREE.Vector3( mo

我想建造一些类似的东西(http://www.goat1000.com/tagcanvas.php)使用THREE.js(通过鼠标矢量连续旋转对象,无任何抖动、间隙、中断或其他情况)

我没有进入它-尝试了一些不同的场景(简单地旋转每个轴,尝试slerp和四元数)

你可以在fiddler身上找到我的一些实验。 Slerp(看起来非常像lookAt()):

四元数(看起来不错,但重置为四元数.set(0,0,0,1)很糟糕):

有什么提示吗

var v = new THREE.Vector3( mouse2D.y, -mouse2D.x, 0 );
var q = new THREE.Quaternion().setFromEuler( v );
var newQuaternion = new THREE.Quaternion();
THREE.Quaternion.slerp( mesh.quaternion, q, newQuaternion, 0.07 );
mesh.quaternion = newQuaternion;
mesh.quaternion.normalize();
var step = .025;    
var rotateQuaternion = new THREE.Quaternion();
rotateQuaternion.setFromAxisAngle( vector, step );
mesh.quaternion.multiplySelf( rotateQuaternion );
mesh.quaternion.normalize();