fórmula matemática para la primera persona juego en 3D
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
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:
- Es necesario hacer que el "mundo" como se ve a través de la cámara.
- 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.
- 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: