Javascript 在Z轴上旋转时,在X轴和Y轴上的布告牌对象
在过去的几天里,我一直试图想出一种方法,在X轴和Y轴上展示一个物体,并在z轴上同时旋转它。由于使用.lookAt方法(如果我错了,请纠正我),这似乎是不可能的,所以我开始阅读四元数。我发现使用静态方法.slerp几乎成功了。我有X和Y轴指向我的相机,但z轴不会完全旋转。它开始旋转,然后跳回到0。这是密码Javascript 在Z轴上旋转时,在X轴和Y轴上的布告牌对象,javascript,rotation,three.js,Javascript,Rotation,Three.js,在过去的几天里,我一直试图想出一种方法,在X轴和Y轴上展示一个物体,并在z轴上同时旋转它。由于使用.lookAt方法(如果我错了,请纠正我),这似乎是不可能的,所以我开始阅读四元数。我发现使用静态方法.slerp几乎成功了。我有X和Y轴指向我的相机,但z轴不会完全旋转。它开始旋转,然后跳回到0。这是密码 function rotZ() { var rotateAngle = Math.PI / .5 * delta;
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();
}
有没有什么明显的东西我遗漏了?考虑使用一个
THREE.Sprite
,它总是面向相机,并且可以在其局部z轴上旋转。但是首先更新到r.62dev,因为最近的sprite bug已经修复。非常感谢您的提示。使用.rotateOnAxis方法旋转三个.Sprite是否有效?