Three.js Comment utiliser les quaternions pour faire pivoter la caméra
Dans Three.js je voudrais utiliser TROIS.quaternion de faire l'objet caméra rotation à l'objet sélectionné.
J'ai fait des recherches sur le web mais n'a trouvé aucun exemple/la version de démonstration ou d'un document sur la façon d'utiliser ce quaternion classe.
Je tente ma chance avec le code suivant:
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;
}
Mais ça ne fonctionne pas. Ai-je raté quelque chose?
S'il vous plaît aider. Merci à l'avance.
Notez que dans les plus récents THREE.js construit,
Notez également qu'aujourd'hui (Août 2015), TROIS de la Caméra de l'un des objets de la méthode .lookAt(vector3) - il reçoit un Vector3 avec la position d'un objet à regarder. Vous pouvez passer n'importe quel object3d.position en tant que paramètre, pour le regard de la caméra. Regarde ça: threejs.org/docs/index.html#Reference/Cameras/Camera
useQuaternion
a été supprimé. La bibliothèque utilise maintenant les quaternions par défaut.Notez également qu'aujourd'hui (Août 2015), TROIS de la Caméra de l'un des objets de la méthode .lookAt(vector3) - il reçoit un Vector3 avec la position d'un objet à regarder. Vous pouvez passer n'importe quel object3d.position en tant que paramètre, pour le regard de la caméra. Regarde ça: threejs.org/docs/index.html#Reference/Cameras/Camera
OriginalL'auteur user1533481 | 2012-07-26
Vous devez vous connecter pour publier un commentaire.
Slerp est assez facile. Il prend 4 paramètres:
targetRotation
le réel de la rotation de la caméradestinationRotation
la rotation d'objetdestinationRotation
nouveau quaternion, qui sera le nouveau la rotation de la camérapercentOfRotation
ce paramètre est de l'aire de jeux, je suis en utilisant 0.07 ici, pourrait être une valeur entre 0 (0%) et 1 (100%)C'est ma méthode de rotation:
J'espère que cela va vous aider. Et ne vous embêtez pas, j'ai aussi travaillé quelques semaines sur l'appareil photo parfait suivantes.
il y a deux slerp méthodes sur les Quaternions -- celui utilisé dans cette réponse, c'est la statique. Les deux sont répertoriés sur le quaternion docs page, mais la méthode statique est en bas.
OriginalL'auteur Sebastian Sachtleben
Je pense que cette ligne ne fonctionnent pas:
Vous devez définir
Après l'ajout de l'objet à la scène, lorsque vous faites pivoter, il sera automatiquement appliqué à
obj.quaternion
.Le deuxième point est que vous devez appliquer de l'objet de contrôles et de ne pas l'appareil photo. Parce que vous voulez de contrôle de l'objet et non de la caméra?
Il regarder comme je suis la recherche dans l'obscurité comme il n'existe aucun document ou un exemple à ce propos :(. Pourriez-vous svp m'expliquer la fonction slerp? Qu'est-ce que le paramètre? J'ai essayé ta suggestion, mais de ne pas réussir.
Notez que dans les plus récents THREE.js construit,
useQuaternion
a été supprimé. La bibliothèque utilise maintenant les quaternions par défaut.OriginalL'auteur Sebastian Sachtleben
Vous pouvez utiliser la méthode applyQuaternion de ThreeJs
OriginalL'auteur sampopes