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

È stato utile?

Soluzione

OK, sembra che avete bisogno di un movimento di macchina stile Doom, vale a dire, a turno nessun up-down. Considerate questo:

  1. È necessario rendere il "mondo" come si è visto attraverso la fotocamera.
  2. 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.
  3. 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:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top