我有一个使用四元数的对象。这个四元数在用户的按键上得到更新,以允许物体旋转它的内轴。旋转工作太棒了。当它处于默认状态(用户调整旋转之前)时,我的四元数读取w:1,x:0,y:0,z:0Threejs - 基于四元数旋转的对象翻译
我希望此对象始终在空间中通过它的内部z-轴 - THREE.Vector3(0,0,-1)。如何使用quat来知道z轴在哪里并将其向前移动?例如 - 当我的四元数读取w:0.7,x:0.7,y:0,z:0时 - 旋转对象使其z轴向上指向。有没有办法通过它的内部轴来移动对象?
这里有一个例子的jsfiddle:http://bitly.com/RXPy5w - 我想广场上总是向前相对于它的z轴
任何帮助将不胜感激。
感谢您花时间去看看。你能否更具体地说:“你可以通过当前四元数描述的旋转来旋转初始方向矢量。”如果我将矢量(0,0,-1)作为初始方向 - 我将如何根据四元数来旋转它?任何伪代码将不胜感激 – Robbie
我特别不知道three.js,但浏览一下文档就会发现你想'quat.multiplyVector3(initialVec,currentVec)'。 –
根据这个建议我创建了两个变量:var initialVec = new THREE.Vector3(0,0,-1); var matrix = new THREE.Matrix4();我正在做matrix.multiplyVector3(initialVec,object.quaternion) - 但我不明白如何得到的矩阵可以用作一个向量来翻译我的对象的位置。看起来multiplyVector3是Matrix4对象的一部分,不能通过Vector3对象完成......对不起,我在这里很新鲜,但我在想我并不理解这个实现。非常感谢您的帮助。 – Robbie