Camera vs Viewport


23

Non ho una chiara comprensione di quale sia esattamente la differenza tra le coordinate della telecamera e le coordinate del viewport. Qualcuno può chiarire per favore?

Risposte:


40

La macchina fotografica è come una macchina fotografica con cui viene girato il film di Batman. Esiste in un mondo virtuale e può essere spostato, prendendo di mira diverse scene, modificando la lunghezza focale e altre proprietà della fotocamera. Puoi avere molte telecamere e passare da una all'altra. Puoi persino filmare su più telecamere contemporaneamente.

Le coordinate tipiche della telecamera sono: posizione nel mondo virtuale, direzione di orientamento, up-vector, campo visivo, ecc.

Viewport è uno schermo cinematografico. È un luogo in cui viene mostrata l'immagine registrata dalla fotocamera. Nel mondo dei PC che è un'area dello schermo all'interno di una finestra o un'immagine a schermo intero. Puoi mostrare i feed da più telecamere contemporaneamente (come in quei giochi di corse su console tra 2-4 giocatori).

Le coordinate tipiche della vista sono: posizione sul display, altezza e larghezza.


0

Le coordinate del viewport sono le coordinate in cui sono posizionate sullo schermo. (Ad esempio all'interno di una finestra win32).

Le coordinate della telecamera sono la posizione della telecamera ALL'INTERNO del viewport, ovvero all'interno dello spazio 2D / 3D impostato nell'applicazione OpenGL. La telecamera non può uscire da quella finestra perché è nello spazio impostato in cui l'opengl può fare il suo lavoro, all'interno di una finestra di Win32.


Questo non è del tutto esatto. Il viewport definisce la mappatura dallo spazio NDC allo spazio finestra per la trasformazione dei vertici. Nelle versioni precedenti di GL, quella mappatura si applicava anche alla trasformazione della posizione raster (ma è stata rimossa). Tuttavia, ci sono molte operazioni GL che non sono limitate dalla trasformazione dei vertici e quindi puoi fare cose come cancellare il buffer di colore al di fuori della finestra. In effetti, l'unico modo per limitare un buffer chiaro a una regione specifica del framebuffer è utilizzare una cosa completamente diversa, chiamata scissor box ( glScissor (...)).
Andon M. Coleman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.