three.js - comment faire de la caméra regarde un objet au cours d'une interpolation
donc je suis en train d'expérimenter avec l'aide d'interpolations d'interpolation d'un champ de vision de la caméra en fonction d'un objet sur lequel vous cliquez, dans la scène, qui fonctionne très bien, mais maintenant ce que je veux faire c'est d'avoir le basculement de l'appareil photo de concentrer son attention sur l'objet qui a été cliqué, ce qui n'est pas de travail. Voici mon code pour le clic:
function onDocumentMouseDown( event ) {
event.preventDefault();
var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( objects );
if ( intersects.length > 0 ) { //We've clicked a certain object
camTarget = intersects[0].object.position; //HERE'S THE VECTOR3 I WANT TO LOOK AT
camTween.start();
}
}
et mon code pour l'interpolation /le mouvement de la caméra:
var camUpdate = function(){
camera.fov = currentFov.fov; //WORKING
camera.lookAt(camTarget); //NOT WORKING
camera.updateProjectionMatrix();
}
var currentFov = { fov: camera.fov };
TWEEN.removeAll();
camTween = new TWEEN.Tween(currentFov).to({fov: +zoomInFov},tweenTime).easing(camEase).onUpdate(camUpdate);
La caméra est une interpolation du champ de vision correctement, mais il semble rester pointé dans la même direction qu'elle a toujours été pointé, au lieu de passer à la "camTarget" vecteur spécifié dans le lookAt commande.
OriginalL'auteur mheavers | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
Le convertisseur appelle les TROIS.De la caméra.mise à jour(), qui définit la vitesse de rotation de la caméra par défaut de regarder TROIS.De la caméra.cible (qui est une des TROIS.Object3D). Au lieu de faire...
...essayez...
Je ne suis pas sûr de suivre camTarget est interpolé, ou peut-être qu'il faut passer au nouvel objet?
Noter: il est conseillé de ne pas effectuer de lourds calcul dans les gestionnaires d'événements - dans le meilleur des mondes, vous avez défini un drapeau dans le gestionnaire d'événements et de processus dans la boucle de rendu.
Heureux que vous avez réussi à le faire fonctionner 🙂
pourquoi devriez-vous pas en faire trop dans le gestionnaire d'événement?
OriginalL'auteur MikaelEmtinger