ここ数日、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();
}
私が行方不明になっている明らかなものはありますか?