javascript - Mover la cámara en la dirección que está mirando, con ThreeJS
vector three.js (2)
Digamos que tengo una cámara colocada en:
{
x: 10,
y: 30,
z: 20
}
Su rotación es:
{
x: 0.1,
y: 0.2,
z: 0.3
}
Quiero mover la cámara 1 unidad desde su posición actual en la dirección que está mirando.
¿Cómo calculo la nueva posición de las cámaras?
Estoy usando ThreeJS.
La cámara mira hacia abajo en su eje local negativo-z. Entonces, para mover la cámara en la dirección que está mirando, use este método:
camera.translateZ( - distance );
Este es el método más eficiente.
three.js r.78
Puede obtener la dirección de la cámara con el método getWorldDirection
de la clase THREE.Camera
:
Devuelve un vector que representa la dirección en la que mira la cámara, en el espacio mundial.
Cuando tenga este vector de direction
, puede usarlo para mover la cámara en la dirección deseada:
var direction = camera.getWorldDirection();
Para mover solo 1 en esa dirección, simplemente puede hacer:
camera.position.add( direction );
Si quiere moverse más, podría, por ejemplo, usar el método multiplyScalar
de la clase THREE.Vector3
y multiplicar con la distancia deseada.
distance = 10;
camera.position.add( direction.multiplyScalar(distance) );