Perché spostiamo il mondo invece della fotocamera?


87

Ho sentito che in un gioco OpenGL ciò che facciamo per far muovere il giocatore non è muovere la telecamera ma muovere il mondo intero.

Ad esempio, ecco un estratto di questo tutorial: matrice OpenGL View

Nella vita reale sei abituato a spostare la videocamera per modificare la vista di una determinata scena, in OpenGL è il contrario. La telecamera in OpenGL non può muoversi ed è definita per trovarsi in (0,0,0) rivolto verso la direzione Z negativa. Ciò significa che invece di muovere e ruotare la telecamera, il mondo viene spostato e ruotato attorno alla telecamera per costruire la vista appropriata.

Perché lo facciamo?


1
Una telecamera non rappresenta altro che una visione di proiezione. Quindi trasformi il mondo per ottenere la proiezione che desideri. Il concetto è strano, ma in realtà ha senso ... in un certo senso ... penso
Sidar,

@sharethis, ho migliorato la mia risposta con una spiegazione migliore. Aggiunta prospettiva di proiezione con l'opzione matematica e Fotocamera 3D (Virtual Camera). Può essere utile per te e gli altri.
Md Mahbubur Rahman,

4
Questo in realtà non è vero, dal momento che entrambe le operazioni (spostare la telecamera o gli oggetti nel mondo) sono simmetriche, non c'è modo di dire quale operazione ha avuto luogo. Stai pensando al mondo che si muove attorno alla telecamera, ma allo stesso modo qualcun altro può visualizzare la telecamera che si muove al contrario sul mondo ... Okay, quindi puoi spostare gli oggetti l'uno rispetto all'altro, quindi un modo può essere più intuitivo, ma nessuno dei due la persona ha "torto", entrambi i modi di visualizzare la situazione sono buoni in situazioni diverse. Spesso è utile pensare ad entrambi.
user3728501

Risposte:


72

Perché ?

Perché, una fotocamera rappresenta una vista di proiezione.

Ma nel caso di 3D Camera (Virtual Camera), la telecamera si sposta invece del mondo. Ho fatto una spiegazione dettagliata più avanti di questa risposta.

Comprensione matematica

La vista di proiezione si sposta nello spazio e ne modifica l'orientamento. La prima cosa da notare è che la proiezione desiderata sullo schermo non cambia con la direzione della vista.

Per questo motivo, trasformiamo altre cose per ottenere la proiezione desiderata.

Comprensione da http://opengl.org

Per dare l'impressione di muovere la videocamera, l'applicazione OpenGL deve spostare la scena con l'inverso della trasformazione della videocamera. per quanto riguarda OpenGL, non esiste una videocamera. Più specificamente, la fotocamera si trova sempre sulla coordinata dello spazio oculare (0, 0, 0)

Comprensione da http://open.gl

Desidera inoltre condividere le seguenti righe dalla sezione Matrice vista di http://open.gl/transformations

Per simulare una trasformazione della telecamera, devi effettivamente trasformare il mondo con l'inverso di quella trasformazione. Esempio: se si desidera spostare la telecamera verso l'alto, è necessario spostare il mondo verso il basso.

Comprensione per prospettiva

Nel mondo reale, vediamo le cose in un modo che si chiama "prospettiva".

La prospettiva si riferisce al concetto secondo cui gli oggetti più lontani sembrano essere più piccoli di quelli più vicini a te. Prospettiva significa anche che se sei seduto nel mezzo di una strada diritta, in realtà vedi i bordi della strada come due linee convergenti.

Questa è prospettiva. La prospettiva è fondamentale nei progetti 3D. Senza prospettiva, il mondo 3D non sembra reale.

Mentre questo può sembrare naturale e ovvio, è importante considerare che quando si crea un rendering 3D su un computer si sta tentando di simulare un mondo 3D sullo schermo del computer, che è una superficie 2D.

Immagina che dietro lo schermo del computer ci sia una sorta di scena 3D reale, e lo stai guardando attraverso il "vetro" dello schermo del tuo computer. Usando la prospettiva, il tuo obiettivo è creare un codice che renda ciò che viene "proiettato" su questo "vetro" del tuo schermo come se ci fosse questo vero mondo 3D dietro lo schermo. L'unica avvertenza è che questo mondo 3D non è reale ... è solo una simulazione matematica di un mondo 3D.

Quindi, quando si utilizza il rendering 3D per simulare una scena in 3D e quindi proiettare la scena 3D sulla superficie 2D dello schermo, il processo si chiama proiezione prospettica.

Inizia immaginando intuitivamente ciò che vuoi ottenere. Se un oggetto è più vicino al visualizzatore, l'oggetto deve apparire più grande. Se l'oggetto è più lontano, deve apparire più piccolo. Inoltre, se un oggetto si allontana dallo spettatore, in linea retta, si desidera che converga verso il centro dello schermo, man mano che si allontana in lontananza.

Tradurre la prospettiva in matematica

Mentre vedi l'illustrazione nella figura seguente, immagina che un oggetto sia posizionato nella tua scena 3D. Nel mondo 3D, la posizione dell'oggetto può essere descritta come xW, yW, zW, facendo riferimento a un sistema di coordinate 3D con l'origine nel punto dell'occhio. Ecco dove l'oggetto è effettivamente posizionato, nella scena 3D oltre lo schermo.

inserisci qui la descrizione dell'immagine

Mentre lo spettatore guarda questo oggetto sullo schermo, l'oggetto 3D viene "proiettato" su una posizione 2D descritta come xP e yP, che fa riferimento al sistema di coordinate 2D dello schermo (piano di proiezione).

Per mettere questi valori in una formula matematica, userò un sistema di coordinate 3D per le coordinate del mondo, in cui l'asse x punta a destra, punti y in alto e punti z positivi all'interno dello schermo. L'origine 3D si riferisce alla posizione dell'occhio dello spettatore. Quindi, il vetro dello schermo si trova su un piano ortogonale (ad angolo retto) rispetto all'asse z, a qualche z che chiamerò zProj.

È possibile calcolare le posizioni proiettate xP e yP, dividendo le posizioni mondiali xW e yW, per zW, in questo modo:

xP = K1 * xW / zW
yP = K2 * yW / zW

K1 e K2 sono costanti che derivano da fattori geometrici come le proporzioni del piano di proiezione (il tuo viewport) e il "campo visivo" dell'occhio, che tiene conto del grado di visione grandangolare.

Puoi vedere come questa trasformazione simula la prospettiva. I punti vicino ai lati dello schermo vengono spinti verso il centro all'aumentare della distanza dall'occhio (zW). Allo stesso tempo, i punti più vicini al centro (0,0) sono molto meno influenzati dalla distanza dall'occhio e rimangono vicini al centro.

Questa divisione per z è il famoso "divario prospettico".

Ora, considera che un oggetto nella scena 3D è definito come una serie di vertici. Quindi, applicando questo tipo di trasformazione a tutti i vertici della geometria, si garantisce in modo efficace che l'oggetto si riduca quando è più lontano dal punto di vista.

Altri casi importanti

  • Nel caso di 3D Camera (Virtual Camera), la telecamera si sposta invece del mondo.

Per comprendere meglio le telecamere 3D, immagina di girare un film. Devi creare una scena che vuoi girare e hai bisogno di una macchina fotografica. Per ottenere il filmato, vagherai attraverso la scena con la tua fotocamera, riprendendo gli oggetti nella scena da diverse angolazioni e punti di vista.

Lo stesso processo di ripresa si verifica con una videocamera 3D. Hai bisogno di una fotocamera "virtuale", che può vagare per la scena "virtuale" che hai creato.

Due stili di ripresa popolari includono guardare il mondo attraverso gli occhi di un personaggio (noto anche come videocamera in prima persona) o puntare la fotocamera su un personaggio e tenerlo in vista (noto come videocamera in terza persona).

Questa è la premessa di base di una videocamera 3D: una videocamera virtuale che è possibile utilizzare per spostarsi all'interno di una scena 3D e rendere il filmato da un punto di vista specifico.

Comprensione dello spazio mondiale e visualizzazione dello spazio

Per codificare questo tipo di comportamento, renderai i contenuti del mondo 3D dal punto di vista della telecamera, non solo dal punto di vista del sistema di coordinate del mondo, o da un altro punto di vista fisso.

In generale, una scena 3D contiene una serie di modelli 3D. I modelli sono definiti come un insieme di vertici e triangoli, riferiti al proprio sistema di coordinate. Lo spazio in cui sono definiti i modelli è chiamato spazio modello (o locale).

Dopo aver posizionato gli oggetti del modello in una scena 3D, trasformerai i vertici di questi modelli usando una matrice di "trasformazione del mondo". Ogni oggetto ha la sua matrice mondiale che definisce dove si trova l'oggetto nel mondo e come è orientato.

Questo nuovo sistema di riferimento è chiamato "spazio mondiale" (o spazio globale). Un modo semplice per gestirlo è associare una matrice di trasformazione del mondo a ciascun oggetto.

Per implementare il comportamento di una videocamera 3D, è necessario eseguire passaggi aggiuntivi. Farai riferimento al mondo, non all'origine mondiale, ma al sistema di riferimento della stessa videocamera 3D.

Una buona strategia prevede il trattamento della fotocamera come un vero oggetto 3D nel mondo 3D. Come qualsiasi altro oggetto 3D, usi una matrice di "trasformazione del mondo" per posizionare la telecamera nella posizione e nell'orientamento desiderati nel mondo 3D. Questa matrice di trasformazione del mondo della telecamera trasforma l'oggetto della telecamera dall'originale, guardando in avanti la rotazione (lungo l'asse z), nella posizione del mondo reale (xc, yc, zc) e nella rotazione del mondo.

La figura seguente mostra le relazioni tra il sistema di coordinate World (x, y, z) e il sistema di coordinate View (camera) (x ', y', z ').

inserisci qui la descrizione dell'immagine


5
Le altre risposte ci sono. Non è necessario modificarli nel proprio.
Jesse Dorsey

1
@Noctrine, grazie. Non mi era noto come creare collegamenti tra pagine.
Md Mahbubur Rahman,

"Nella sezione successiva, utilizzerai questa formula di proiezione prospettica in ActionScript che puoi utilizzare nei tuoi progetti Flash 3D." Dato che non c'è menzione di un progetto Flash 3D nella domanda originale, questo mi fa pensare che tu abbia incollato questo da qualche altra parte, il che va bene, se citi le tue fonti.
Gilles,

@Gilles, scusami per il mio errore. Ho modificato la mia risposta. Ho preparato la risposta studiando diverse fonti. E molte grazie a te come hai sottolineato. :)
Md Mahbubur Rahman,

Si noti che glMatrixMode()e alcune altre funzioni a cui si fa riferimento: eng.utah.edu/~cs6360/Lectures/frustum.pdf e opengl.org/archives/resources/faq/technical/viewing.htm sono deprecati. Comunque la descrizione matematica rimane corretta e utile.
patryk.beza,

28

La risposta di Mahbubar R Aaman è abbastanza corretta e i collegamenti che fornisce spiegano accuratamente la matematica, ma nel caso in cui desideri una risposta meno tecnica / matematica, proverò un approccio diverso.

Le posizioni degli oggetti nel mondo reale e nel mondo di gioco sono definite con un sistema di coordinate. Un sistema di coordinate dà significato ai valori di posizione. Se ti dico che sono a "100,50" che non ti aiuterà se non sai cosa significano quei numeri (sono miglia, chilometri, latitudine e longitudine, ecc.). Se sono coordinate cartesiane (il tipo "normale" di coordinate), devi anche sapere a quale origine sono relative; se dico solo "Sono 100 piedi a est", devi sapere "Oriente di cosa ", che è chiamato l'origine delle coordinate.

C'è un modo semplice di pensare a questo. Si potrebbe dire a qualcuno "la stazione ferroviaria è a 3 chilometri a nord e 1,5 chilometri a est dell'angolo sud-ovest della città". Potresti anche dire a qualcuno "la stazione ferroviaria è a 1 miglio direttamente a nord di dove sono adesso". Entrambe le coordinate sono corrette e identificano la posizione dello stesso punto di riferimento, ma sono misurate da un'origine diversa e quindi hanno valori numerici diversi.

In un'applicazione 3D, esiste generalmente un sistema di coordinate "mondo", che viene utilizzato per rappresentare la posizione della telecamera e degli oggetti nel gioco, misurato con coordinate cartesiane con qualche origine arbitraria specificata dal progettista (generalmente il centro di qualunque livello o mappa che stai giocando). Esistono altri sistemi di coordinate nel gioco, come il sistema di coordinate cartesiane con la telecamera all'origine. Puoi definire qualsiasi nuovo sistema di coordinate come desideri in qualsiasi momento e ciò viene fatto molto spesso nella simulazione 3D per rendere le cose più facili per la matematica.

L'algoritmo che esegue il rendering di un singolo triangolo sullo schermo funziona in un modo particolare, quindi non è conveniente lavorare direttamente con le coordinate del mondo durante il rendering. La matematica non è realmente impostata per gestire informazioni come "l'oggetto è 100 unità alla destra del centro del mondo". La matematica invece vuole lavorare con "l'oggetto è direttamente di fronte alla telecamera e 20 unità di distanza". Pertanto, viene aggiunto un ulteriore passaggio alla matematica di rendering per prendere posizioni del mondo degli oggetti e tradurle dal sistema di coordinate della telecamera.

Naturalmente la fotocamera ha anche una posizione e un orientamento. Quindi, se un oggetto si trova nella posizione 20.100,50 e la telecamera si trova nella posizione 10.200, -30, la posizione dell'oggetto rispetto alla telecamera è 10.100,80 (la posizione dell'oggetto meno la posizione della telecamera). Quando la telecamera si muove in un gioco, quella posizione della telecamera nelle coordinate del mondo viene spostata esattamente come ti aspetteresti.

Si noti che gli oggetti non vengono spostati; stanno proprio dove erano prima. Tuttavia, la loro posizione viene ora espressa in relazione a una diversa origine delle coordinate. Le coordinate del mondo dell'oggetto si muovono solo se l'oggetto stesso si muove, ma anche le coordinate della sua telecamera cambiano ogni volta che la telecamera si sposta, poiché sono relative alla posizione della telecamera.

Nota anche che la descrizione del tutorial che stai citando è una spiegazione semplificata e non necessariamente una descrizione accurata di ciò che OpenGL fa. Non credo che l'autore dell'articolo non l'abbia capito; l'autore ha appena provato a usare un'analogia semplificata che in questo caso ha causato confusione piuttosto che eliminarla.

Se aiuta ulteriormente a capire perché la matematica si preoccupa delle coordinate della fotocamera, prova questo esercizio: alza le mani toccando pollice e indice per creare un rettangolo (chiamiamolo "viewport") e guardati intorno nella stanza in cui ti trovi in. Trova un oggetto e guardalo, poi guardati intorno ma non direttamente. Quando lo fai, chiediti "dov'è l'oggetto nella mia finestra?" Quell'oggetto ha una certa longitudine e latitudine specifiche del mondo reale che puoi usare per individuare la sua posizione sulla Terra, ma ciò non ti dice nulla di ciò che stai vedendo. Dire "l'oggetto è nell'angolo in alto a sinistra del mio viewport e sembra essere a circa 2 metri di distanza", però, ti dice un bel po '. Hai creato un sistema di coordinate relativo alla tua testa e alla direzione in cui " guardando che definisce dove un oggetto secondo la tua visione. Questo è fondamentalmente ciò di cui ha bisogno la parte triangolare del rasterizzatore di OpenGL / Direct3D, ed è ciò che la matematica richiede che le posizioni e l'orientamento degli oggetti vengano trasformate dalle loro comode coordinate del mondo in coordinate della telecamera.


Sebbene per me la spiegazione matematica sia chiara e comprensibile, questa è anche un'ottima spiegazione! Credo che tu abbia aiutato molti altri con la stessa domanda.
danijar,

+1 per chiarire se la telecamera si muove o il mondo è solo una funzione del sistema di coordinate di cui stai parlando.
David Moles,

11

Basta aggiungere alle altre due (eccellenti) risposte a qualche ulteriore elaborazione su un punto su cui Mahbubur R Aaman ha toccato: "non c'è macchina fotografica".

Questo è abbastanza vero e rappresenta un fallimento della comune analogia "fotocamera", perché la "fotocamera" non esiste realmente. È importante rendersi conto che l'analogia della fotocamera è esattamente questo: un'analogia. Non descrive (o finge di descrivere) il modo in cui le cose funzionano effettivamente dietro le quinte.

Quindi considera (inteso il gioco di parole) come un modo per aiutarti a farti girare la testa se è nuovo per te, ma ricorda sempre che è solo un aiuto e non un tipo di descrizione del modo in cui le cose sono realmente.

Ora, hai due classi di oggetti che sono rilevanti qui: il punto di vista e tutto il mondo. Volete avvicinare il punto di vista ad alcuni oggetti, ma per questo movimento il risultato finale è lo stesso se la vista si avvicina agli oggetti o se gli oggetti si avvicinano alla vista. Tutto quello che stai facendo è cambiare la distanza tra loro; poiché la distanza corrente è X e vuoi che la nuova distanza sia Y, non importa quale ti muovi, basta che dopo la mossa la nuova distanza sia Y. Quindi non ti stai veramente muovendo affatto, tu stai solo cambiando distanza. (Non intendevo imbattermi in tutto Einstein in questo ... onesto!)

Tuttavia, poiché la fotocamera non esiste, l'unica cosa che puoi cambiare è la distanza degli oggetti. Quindi cambiate la distanza degli oggetti e fuori arriva lo stesso risultato. Dal momento che tutti gli oggetti subiscono comunque trasformazioni , questo non è più o meno costoso.

Una spiegazione matematica più semplice può aiutare di più. Facciamo finta che tutte le coordinate siano 1D - il punto di vista è a 0, i tuoi oggetti sono a 4 e vuoi che il punto di vista vada a 3. Ciò significa che la distanza tra loro cambierà da 4 (4 - 0) a 1 (4 - 3). Ma poiché la fotocamera non esiste, non puoi cambiare quello 0; sarà sempre 0. Quindi, invece di aggiungere da 3 a 0 (cosa che non puoi fare) sottrai 3 da 4 (cosa che puoi fare) - gli oggetti sono ora a 1, e il risultato finale è lo stesso - distanza tra punto di vista e oggetti è 1.


Sebbene la telecamera non esista in quanto tale, è comunque possibile calcolarne la posizione prima della trasformazione. In alcuni casi, tuttavia (proiezione parallela non allineata sull'asse) si otterrà più di una delle consuete coordinate "all'infinito" (positivo o negativo), che è meno utile della matrice di trasformazione.
Martin Sojka,

7

Spostare la telecamera o muovere il mondo sono due scelte ugualmente valide che equivalgono entrambe alla stessa cosa. Alla fine della giornata stai cambiando da un sistema di coordinate all'altro. Le risposte di cui sopra sono corrette ma in che modo le visualizzi sono due facce della stessa medaglia. Le trasformazioni possono andare in entrambi i modi: sono solo l'inverso l'una dell'altra.

Parte del processo di rendering si converte da coordinate mondiali a coordinate oculari. Tuttavia, un modo semplice per modellarlo è con un oggetto videocamera virtuale nella tua applicazione. La telecamera può rappresentare sia la matrice di proiezione (che è responsabile dell'effetto prospettiva) sia la matrice di visualizzazione che viene utilizzata per convertire dallo spazio del mondo allo spazio degli occhi.

Quindi, sebbene lo shader di vertice utilizzi la matrice di visualizzazione per modificare le coordinate della geometria nello spazio degli occhi, è spesso più facile pensare a un oggetto della telecamera che si muove nel tuo mondo virtuale che, mentre si muove, ricalcola la matrice di visualizzazione.

Quindi, nella tua applicazione, sposti la telecamera in coordinate mondiali, aggiorni la matrice di visualizzazione della telecamera, passa la nuova matrice di visualizzazione allo shader di vertice come uniforme o parte di blocco, rendi la tua scena.


5

Direi invece che si tratta di un'analogia imperfetta. Nella sua forma più semplice, "spostare la telecamera" e "spostare il mondo" sono esattamente lo stesso costrutto matematico - è solo che spostare il mondo è un po 'più facile da pensare concettualmente, specialmente quando si tratta di trasformazioni gerarchiche. Fondamentalmente, stai spostando il mondo intorno alla videocamera solo nel senso che stai traducendo i vertici del mondo nello spazio di coordinate della videocamera, ma questa è una trasformazione affine reversibile.

Tuttavia, quando inizi a portare la determinazione della visibilità nel mix, l'ultima cosa che vuoi fare è tradurre l'intero mondo intorno alla telecamera. Invece, nella maggior parte dei casi (in particolare il classico caso di BSP fissi o simili) utilizzerai la posizione della telecamera nel mondo per interrogare le tue strutture di visibilità per determinare quali elementi sono probabilmente visibili, e quindi tradurre solo QUELLI cose nello spazio di coordinate della fotocamera.


4

Non penso che l'affermazione sia categoricamente vera, poiché raramente si "muovono" le coordinate del mondo in un gioco, ma in realtà si modificano le coordinate della videocamera virtuale.

Ciò che effettivamente fa il concetto di telecamera è trasformare il frustum di visualizzazione finito - ovvero una piramide troncata con 8 punti d'angolo (o definita dall'intersezione di 6 piani) in un cubo unitario, che rappresenta lo spazio della clip nelle fasi finali di openGL pipeline di rendering.

In tal senso, il mondo non viene spostato, ma si calcolano solo le coordinate del mondo nel sistema di coordinate dello spazio della clip.


2

Spostare la telecamera o muovere il mondo sono due scelte ugualmente valide (ed entrambe sono vere). Alla fine della giornata stiamo cambiando da un sistema di coordinate all'altro. Le trasformazioni possono andare in entrambi i modi: sono solo l'inverso l'una dell'altra.


2

Molte buone risposte qui. Proverò a non ripetere nessuno di loro. A volte è più facile pensare in termini di telecamera, come Direct3D (nota: non ho giocato con molti post 9.0c)

"Spostare il mondo" come nel senso di Futurama secondo cui qualcuno citato là fuori è un ottimo modo per guardarlo ("I motori non muovono affatto la nave. La nave rimane dov'è e i motori muovono l'universo in giro it! "). Questo era in realtà abbastanza comune per i giochi 2D. Avevi letteralmente un viewport che difficilmente avresti regolato e che a volte era la tua RAM video o una finestra dell'interfaccia utente. Se OpenGL lo fa per quel tipo di ragioni, eh, difficile da dire.

Puoi certamente pensare a un movimento 2D anche in termini di videocamera, e proprio quel tipo di processo di pensiero può semplificare la comprensione degli effetti.


1
In ritardo, ma anche una bella risposta!
danijar,

Grazie! Ho sempre scoperto che l'aggiunta alla discussione sulle pagine che si trovano tramite un motore di ricerca si rivela molto apprezzata, soprattutto se le informazioni sono utili o interessanti
Joe Plante

2

Sembra che ci siano molti malintesi qui, a partire dagli autori dei documenti OpenGL ...

Permettimi di ripristinare rapidamente la tua sanità mentale: il mondo non si muove , rimane fermo. Chiunque cerchi di implementare il mondo mentre si muove attorno al giocatore, si troverà rapidamente nei guai nella modalità multiplayer. Per non parlare del fatto che l'aggiornamento delle posizioni di milioni (o miliardi) di oggetti nel mondo alla mossa di ogni giocatore renderà un gioco piuttosto lento ...

Quindi, cosa succede davvero lì, e cosa succede con la citazione?

Bene, prima di tutto devi capire il concetto di un sistema di coordinate. In genere, scegli un punto nel mondo e lo dichiari come "origine", ovvero un punto con coordinate (0,0,0). Scegli anche tre direzioni "principali", che chiami X, Y e Z. Ovviamente, ci sono molti modi per assegnare un sistema di coordinate. Di solito esiste un "sistema di coordinate del mondo", in questo sistema il mondo è stazionario (più o meno). In un gioco questo sistema verrebbe scelto dal progettista di livelli.

Ora, è anche conveniente considerare un altro sistema di coordinate, legato all'occhio del giocatore. In questo sistema di coordinate il giocatore è sempre alle coordinate (0,0,0) e il mondo si muove e ruota attorno a lui. Pertanto la citazione è corretta se si capisce che è stata fatta nel sistema di coordinate del giocatore .

Tuttavia, il mondo non opera nelle coordinate del giocatore, ma opera nelle coordinate del mondo. E quando sono coinvolti due sistemi di coordinate, c'è sempre un modo per trasformare un tipo di coordinate nell'altro. In OpenGL questo viene fatto usando una matrice di visualizzazione 4x4.

Alla fine, quando un giocatore si muove, il mondo rimane fermo, mentre il giocatore viene mosso. Questo è nelle coordinate del mondo, il modo in cui gli oggetti sono memorizzati nel tuo gioco. Il giocatore ha anche una telecamera di visualizzazione associata a lui, e questa telecamera si muove in modo simile in tutto il mondo (nonostante ciò che sembrano dire i documenti OpenGL). Tuttavia, al fine di mostrare il mondo sullo schermo dell'utente, le coordinate di tutti gli oggetti visibili vengono tradotte nel sistema di coordinate del giocatore usando una matrice di trasformazione, quindi viene applicata una proiezione aggiuntiva per creare un effetto prospettico. Nel sistema di coordinate di questo giocatore il mondo sembra effettivamente muoversi attorno al giocatore. Ma è solo un modo estremamente inutile e confuso di pensarci.


"a partire dagli autori dei documenti OpenGL " Giusto, perché sono sicuro che i creatori di OpenGL sono ovviamente troppo stupidi per capire la differenza tra la presentazione di un mondo (di cui è tutto interessato OpenGL) e la rappresentazione concettuale di quel mondo ( che non è qualcosa di cui si occupa OpenGL).
Nicol Bolas,

" Ma è solo un modo estremamente inutile e confuso di pensarci. " È anche la verità . E la verità è sempre più utile di una bugia. Perché prima o poi, quella bugia ti raggiungerà e dovrai affrontare la verità.
Nicol Bolas,
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.