Javascript 三点js通过鼠标和三点四元数平滑轴旋转

Javascript 三点js通过鼠标和三点四元数平滑轴旋转,javascript,animation,vector,rotation,three.js,Javascript,Animation,Vector,Rotation,Three.js,我试图通过mousemove为THREE.Object3D创建一个平滑的旋转-没有任何抖动、间隙、中断或其他东西。。。 以下是我的一个问题: 我不明白-通过嵌套组等尝试了几种不同的方案。 我猜四元数会起作用,但出了点问题…我不确定,但我的slerp解决方案看起来像网格。看(鼠标3d)?! 网格应围绕目标轴连续旋转。。。 我不确定,但是mesh.quaternion.multiplySelf应该是诀窍——从这里我又遇到了问题=| var v = new THREE.Vector3( mouse2D

我试图通过mousemove为THREE.Object3D创建一个平滑的旋转-没有任何抖动、间隙、中断或其他东西。。。 以下是我的一个问题:

我不明白-通过嵌套组等尝试了几种不同的方案。
我猜四元数会起作用,但出了点问题…

我不确定,但我的slerp解决方案看起来像网格。看(鼠标3d)?! 网格应围绕目标轴连续旋转。。。 我不确定,但是mesh.quaternion.multiplySelf应该是诀窍——从这里我又遇到了问题=|

var v = new THREE.Vector3( mouse2D.y, -mouse2D.x, 0 );//.normalize();
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.multiplySelf( newQuaternion );
mesh.quaternion.normalize();

请参见JSIDLE:

我刚刚发布了一篇关于旋转一个对象的帖子,该对象可能与您正在寻找的对象类似:三次平滑鼠标旋转。js

slerp到平面-as3可能是一些有用的压力,或者您能更清楚地解释出哪里出了问题吗?当我使用鼠标坐标作为向量时-旋转变得疯狂。。。我认为旋转应该从原点开始?我不喜欢。我将检查上面的链接。尝试:var time=Date.now()*.0025;var va=新的三个.四元数().setFromRotationMatrix(mesh.matrix);var vb=new THREE.Quaternion().setFromEuler(向量)//(向量x,向量y,向量z,1);var vc=新的三个四元数();三.四元数.slerp(va,vb,vc,time)//mesh.quaternion=vc;网格、四元数、自乘(vc);mesh.quaternion.normalize();好的,我走近了,但这看起来更像网格。看(鼠标3d)?!网格应连续旋转。。。var q=新的三个.四元数().setFromEuler(向量);var newQuaternion=新的三个四元数();三.四元数.slerp(mesh.Quaternion,q,newQuaternion,0.07);mesh.quaternion=新四元数;mesh.quaternion.normalize();您正在使用位置来代替旋转-
。setFromEuler(v)
将旋转向量作为一个参数,同时向其提供
新的三个.Vector3(mouse2D.y,-mouse2D.x,0)
。这行不通。您必须计算对象位置和光标位置之间的角度,然后在那里使用它。对不起,这是上面的链接: