formula matematica per prima persona 3D gioco
Domanda
Voglio fare una prima persona gioco 3D, ma non riesco a impostare la giusta formula fotocamera.
Così ho una rotazione: da 0 a 359. Successivamente il coordinate x, y, z rimane lo stesso.
rotazione della telecamera: 0 - front, 90 - a sinistra, 180 - posteriore, 270 - destra ma posso adattarlo
Qual è la formula per la fotocamera?
Piattaforma: Panda3D, pitone, opengl
Grazie
Soluzione
OK, sembra che avete bisogno di un movimento di macchina stile Doom, vale a dire, a turno nessun up-down. Considerate questo:
- È necessario rendere il "mondo" come si è visto attraverso la fotocamera.
- Supponendo x positivo è a destra e y positivo è al vostro fronte, quando la telecamera si sposta muove immagine destra di tutto il mondo a sinistra.
- Quando i giri della macchina fotografica positivamente alla sinistra, immagine giri del mondo a destra.
Ora, proviamo a costruire le equazioni:
1.First, tradurre le coordinate mondo per la posizione della fotocamera:
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, ruotare le coordinate tradotto da un angolo opposto a rotazione della telecamera:
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
È possibile combinare le due fasi e trasformarlo in una forma di matrice.
Altri suggerimenti
ho trovato in seguito un tutorial che risolto il mio problema: