0

在过去的几天里,我一直在尝试想出一种方法来在 X 和 Y 轴上展示一个对象并同时在 z 轴上旋转它。由于使用 .lookAt 方法似乎不可能(如果我错了,请纠正我)我开始阅读四元数。我发现使用静态方法 .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();
        }        

我有什么明显的遗漏吗?

4

0 回答 0