Je souhaite avoir un projecteur qui bougera avec l'appareil photo. le code suivant fonctionne si je veux seulement garder les projecteurs braqués sur la même position que la caméra à tout moment:Comment déplacer le (s) projecteur (s) par rapport à la position de la caméra dans Three.js?
var pointLight = new THREE.PointLight(0xffffff, 1, 200);
pointLight.position = camera.position;
scene.add(pointLight);
Cependant, comment puis-je le faire fonctionner pour que les projecteurs sont toujours devant la caméra d'une certaine distance? Ou généralement, toujours dans la même position par rapport à la position de la caméra?
Merci! J'ai d'abord pensé que je pouvais régler la position de la lumière du point à l'intérieur de la fonction render() comme ceci 'pointlight.position.z = camera.position.z - 10' pour qu'elle bouge à chaque image, mais votre solution est plus propre et plus claire. plus lisible. –
Votre solution ne fonctionne également que si la caméra regarde le long de l'axe z négatif. Mettre l'objet dans la hiérarchie compte également pour la rotation de la caméra. Une autre façon serait de trouver le vecteur avant de la caméra, de sorte que vous puissiez écrire 'pLight.position = camera.position + camForwardVec * distance;'. –
Cette solution fait dépendre l'intensité apparente de la lumière de la proximité de la caméra par rapport à l'objet. (Mais, d'accord, c'est peut-être quelque chose que vous voulez vraiment). Je n'ai pas pu résoudre ce problème en réglant le troisième paramètre de PointLight à zéro. – Ideogram