In Three.js, vorrei utilizzare TREQuery per rendere l'oggetto della fotocamera ruotare sull'oggetto selezionato.Three.js Come utilizzare quaternion per ruotare la telecamera
Ho fatto ricerche sul Web ma non ho trovato alcun esempio/demo o documento su come utilizzare questa classe di quaternioni.
cerco la mia fortuna con codice seguente:
camera = new THREE.PerspectiveCamera(40, window.innerWidth/window.innerHeight, 1, 10000);
camera.position.y = 10;
camera.position.z = 0;
camera.position.x = radious;
camera.useQuaternion = true;
// I did use the TrackballTrackballControls. Maybe it causes the problem so I put it here
controls = new THREE.TrackballControls(camera, document.getElementById(_canvasElement));
// function to make the camera rotate to the object
function focusOn3DObject(obj){
obj.useQuaternion = true;
obj.quaternion = new THREE.Quaternion(obj.position.x, obj.position.y, obj.position.z, 1);
var newQuaternion = new THREE.Quaternion();
THREE.Quaternion.slerp(camera.quaternion, obj.quaternion, newQuaternion, 0.07);
camera.quaternion = newQuaternion;
}
Ma non funziona. Ho dimenticato qualcosa? Per favore aiuto. Grazie in anticipo.
Si noti che nelle versioni più recenti di THREE.js, 'useQuaternion' è stato rimosso. La libreria ora usa i quaternioni per impostazione predefinita. –
Si noti inoltre che oggi (agosto/2015) gli oggetti Camera di THREE hanno un metodo .lookAt (vector3) - riceve un Vector3 con la posizione di un oggetto da guardare. È possibile passare qualsiasi object3d.position come parametro, affinché la fotocamera possa guardarlo. Dai un'occhiata a: http://threejs.org/docs/index.html#Reference/Cameras/Camera – Tiago