Pregunta

Quiero hacer una primera persona juego de 3d pero no puedo establecer la fórmula de la cámara derecha.

Así que tengo una rotación: de 0 a 359. A continuación, el coordenadas x, y, z sigue siendo el mismo.

Rotación de la cámara: 0 - delantero, 90 - a la izquierda, 180 - volver, 270 - derecho pero puedo adaptarlo

¿Cuál es la fórmula para la cámara?

Plataforma: Panda3D, pitón, OpenGL

Gracias

¿Fue útil?

Solución

OK, parece que se necesita un movimiento de la cámara del estilo de Doom, es decir, sin vueltas arriba-abajo. Considere lo siguiente:

  1. Es necesario hacer que el "mundo" como se ve a través de la cámara.
  2. Suponiendo que x es positivo hacia la derecha e y positivo es a su frente, cuando la cámara se mueve a la derecha de la imagen del mundo se mueve hacia la izquierda.
  3. Cuando la cámara se enciende de manera positiva a la izquierda, imagen del mundo gira a la derecha.

Ahora, vamos a tratar de construir las ecuaciones:

1. En primer lugar, trasladar las coordenadas mundiales a la posición de la cámara:

Xwt = Xw - Xc;
Ywt = Yw - Yc;
Zwt = Zw;

(Xc,Yc,Zc) = camera position
(Xw,Yw,Zw) = world coordinates of object in the scene
(Xwt,Ywt,Zwt) = world coordinates of object translated to camera position

2.Now, rotar las coordenadas traducidos por un ángulo opuesto a la rotación de la cámara:

Xwc =  Xwt * Cos(psi) + Ywt * Sin(psi);
Ywc = -Xwt * Sin(psi) + Ywt * Cos(psi);
Zwc =  Zwt

Psi = angle of camera rotation
(Xwc,Ywc,Zwc) = world coordinates of object transformed to camera orientation

Puede combinar los dos pasos y transformarla en una forma de matriz.

Otros consejos

Me encontró más tarde un tutorial que fija mi problema:

https://www.panda3d.org/forums/viewtopic.php? t = 3037

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top