0

ここ数日、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();
        }        

私が行方不明になっている明らかなものはありますか?

4

0 に答える 0