在过去的几天里,我一直试图想出一种方法,在X轴和Y轴上对一个物体进行广告牌并同时在z轴上旋转它。因为使用.lookAt方法似乎不可能(如果我错了请纠正我)我开始阅读Quaternions。我发现使用静态方法.slerp几乎可以解决问题。我的X轴和Y轴指向我的相机,但z轴不会完全旋转。它开始旋转,然后跳回到0.这是代码。
function rotZ()
{
var rotateAngle = Math.PI / .5 * delta;
var appQuatS = new THREE.Vector3(0,0,0);
var appQuatC = new THREE.Vector3(0,0,0);
appQuatS.applyQuaternion( meshSprite.quaternion );
appQuatC.applyQuaternion( camera.quaternion );
var qm = new THREE.Quaternion();
THREE.Quaternion.slerp(meshSprite.quaternion, camera.quaternion, qm, 1);
qm.set(qm.x,qm.y,rotateAngle,1);
meshSprite.quaternion = qm;
//meshSprite.quaternion.set(meshSprite.quaternion.x,meshSprite.quaternion.y,rotateAngle,1);
meshSprite.quaternion.normalize();
//meshSprite.rotateOnAxis( new THREE.Vector3(0,0,1), rotateAngle);
//meshSprite.updateMatrix();
}
有什么东西显而易见我错过了吗?