Domanda

Heyo,

Attualmente sto lavorando su un progetto in cui ho bisogno di posizionare la telecamera in modo tale che tutti i movimenti di un personaggio è visualizzabile senza muovere la fotocamera.Ho la posizione in cui il personaggio comincia, così come la distanza massima che il carattere di viaggio in tutte e tre le direzioni (X,Y, & Z).Ho anche il campo di vista (che è di 90 gradi).

C'è un'equazione che ti capire dove devo posizionare la fotocamera in modo da non dover spostare per vedere l'intero movimento?

Nota:questo è l'utilizzo di OpenGL.

Chiarimento:La fotocamera dovrebbe essere "davanti" del personaggio in movimento, non sopra.

Sarà inoltre si muove lungo un piano di terra.

È stato utile?

Soluzione

Se si effettua una sfera di delimitazione dei punti, tutto quello che dovete fare è tenere la fotocamera a una distanza maggiore o uguale al raggio della sfera di delimitazione / sin (FOV / 2).

Per esempio, se si dispone di una delimitazione sfera di raggio Raggio e un determinato campo visivo FOV, la fotocamera ha solo bisogno di essere ad un punto di "Dist" lontano, che punta verso il centro della sfera di delimitazione.

L'equazione per il calcolo della distanza è: Dist = Raggio / sin (FOV / 2);

Questo funziona in 3D, per una fotocamera in qualsiasi orientamento.

Altri suggerimenti

Il fatto che la portata massima di (X, Y, Z) non è di per sé sufficiente, poiché la porta di osservazione è essenzialmente a forma piramidale, con l'apice della piramide sia nella posizione dell'occhio.

A fini di discussione, supponiamo che tutti i movimenti è nella (, Z X) piano (cioè la terra), e l'occhio è direttamente sopra la 10m origine lungo l'asse Y.

Supponendo una finestra quadrata, con il 90˚ campo visivo si sarebbe in grado di vedere da ± 10 m lungo gli assi X e Z, ma solo per gli oggetti che si trovano a terra (Y = 0). Non appena vengono fuori dalla terra la visualizzazione viene ridotta. Se si tratta di 1 m del terreno allora il vostro (X, Z) misura è solo ± 9m.

Chiaramente una vera fotocamera potrebbe essere collocato in ogni caso nella scena, di fronte a qualsiasi direzione. Anche l'angolo di "roll" della fotocamera potrebbe cambiare quanto è visibile. In realtà ci sono infiniti tali punti della fotocamera, quindi sarà necessario per vincolare i criteri di un po '.

Prendere la linea segmento dal punto iniziale al punto finale.Costruire un piano ortogonale a questo segmento di linea attraverso il punto medio del segmento di linea.Quindi, posizionare la fotocamera da qualche parte in questo piano, a distanza di più di quanto segue dal punto di intersezione del piano e la linea di ricerca presso il punto di intersezione.Up vettori per la fotocamera deve essere in piano e il campo di vista orizzontale deve essere di 90 gradi.

distance = sqrt(dx^2 + dy^2 + dz^2) / 2

Questa fotocamera posizioni, tutti avranno l'inizio e l'estremità a sinistra o a bordo destro della porta di visualizzazione e verticaly centrato.

Un'altra soluzione potrebbe essere quella di scrivere una funzione che prende il punto di partenza, il punto finale, e la posizione desiderata per entrambi i punti sullo schermo.Poi basta risolvere la proiezione equazione per la fotocamera trasformazione.

Dipende, per esempio, se l'oggetto è gonna muoversi in un piano, si può semplicemente posizionare la telecamera all'esterno di una sfera circoscritta nei movimenti (ciò dipende dal fatto che FOV è 90, che è un angolo di fortuna).

Se l'oggetto è gonna mossa in 3D, è molto più difficile. Sarebbe utile se si desidera specificare la regione in cui l'oggetto si muove (cubo vs palla ...) e la direzione che si vuole vedere da.

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