Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Finestra a vista - Trasformazione porta

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Ciao e benvenuto alla lezione numero 20 del corso Computer Graphics. Attualmente stiamo discutendo la pipeline grafica, ovvero la serie di tappe o passi che deve essere eseguita per convertire una descrizione 3D di una scena ad un'immagine 2D su uno schermo del computer o su quel display che riusciamo a vedere.Così, ci sono cinque tappe, come abbiamo già accennato prima fase di rappresentazione dell'oggetto, trasformazioni di modellismo di seconda fase, illuminazione terza tappa, queste tre tappe che abbiamo già discusso completamente. Attualmente siamo nella quarta fase di visualizzazione della pipeline, e ci sarà una fase in più di quinta fase che è la conversione della scansione.Ora, la quarta tappa, la pipeline di visualizzazione, contiene una serie di sottostadi. Il primo sub - stage è una trasformazione da una descrizione di scena coordinata a livello mondiale 3D ad una descrizione di scena coordinata da 3D. Ora, questa coordinata vista è chiamata anche un sistema di coordinate per l'occhio o la fotocamera. E questa trasformazione è generalmente chiamata 3D di visualizzazione della visualizzazione, che abbiamo già discusso nelle nostre lezioni precedenti.La seconda fase è proiezione, quindi progettiamo la descrizione coordinata 3D sul piano di vista.E questa proiezione viene eseguita attraverso una trasformazione che viene generalmente chiamata trasformazione di proiezione. Anche questo abbiamo discusso nelle nostre lezioni precedenti.C'è una terza fase in cui eseguiamo una mappatura o una trasformazione che viene dal piano di vista la mappiamo ad un viewport definito sul sistema di coordinate del dispositivo. Questa viene chiamata la finestra per viewport mapping dove la finestra è sul piano di vista e la viewport è sul sistema di coordinate del dispositivo. E questa terza tappa di cui parleremo oggi.Ora, prima di discutere della mappatura, si discuterebbe di un aspetto importante della trasformazione della proiezione che non abbiamo discusso nella nostra ultima lezione, cioè l'idea del volume della vista canonica. Vediamo cosa significa questo volume.Come abbiamo accennato in precedenza, c'è una tappa importante nella pipeline grafica. In realtà, questo fa parte della quarta fase che stiamo attualmente discutendo che sta visualizzando pipeline. Qui, quello che facciamo è qualunque oggetti siano al di fuori del volume della vista vengono ritagliati. Ora, quella tappa si chiama clipping. E lo facciamo per rimuovere tutti gli oggetti che sono al di fuori del volume della vista.Sappiamo già qual è un volume di visualizzazione, cioè una regione nello spazio 3D che vogliamo proiettare. Ora, se coinvolge lotti di oggetti parzialmente esterni al volume di vista e in parte all'interno o a lotti di oggetti che si trovano al di fuori del volume della vista, allora richiediamo un gran numero di calcoli per determinare quale voglia di clip.E questo implica la superficie oggetto, visualizzare i calcoli del punto di intersezione del volume. Così dove le superfici oggetto si intersecano con i confini del volume della vista. Quindi, se il numero ègrande, allora tali calcoli di limite saranno grandi e questi calcoli di limite non sono facili. Coinvolgono molte operazioni a virgola mobile, e di conseguenza, la complessità è elevata.Ora, se dobbiamo eseguire calcoli di intersezione rispetto al volume di visione arbitraria in cui non abbiamo alcun controllo sui piani di confine del volume della vista, allora questa complessità è solo per essere di più. Così, possiamo aspettarci un gran numero di elaborazioni, che probabilmente ci vorrà una grande quantità di tempo riducendo la qualità dell'immagine come vedremo farfalle.Per evitarlo possiamo usare una semplice idea, cioè possiamo inventarci una definizione standardizzata di volume di visualizzazione indipendentemente da come sembra il volume della vista reale. Possiamo sempre convertirlo in un volume di vista standardizzato o in un volume di visualizzazione standard. Questo si chiama volume di vista canonico o CVV in breve.Essenzialmente è una rappresentazione standard del volume di visualizzazione indipendentemente dall'effettiva natura del volume. Ricordate che ci sono due tipi di volume di vista. Uno è per la proiezione parallela, cioè un tubo parallelo rettangolare e l'altro è per la proiezione di prospettiva che è un frustatore. Ora entrambi questi possono essere convertiti in una forma standard che chiamiamo volume di vista canonico, che rende i calcoli di intersezione standard e più facili da implementare.Così, per entrambe le proiezioni parallele e di prospettiva, il volume di vista standardizzato appare lo stesso. Tuttavia, il modo di arrivare al volume standardizzato o canonico per entrambe le proiezioni per i due tipi di proiezioni è diverso. Quindi, iniziamo con la proiezione parallela. Così, per la proiezione parallela, il volume di vista canonico che definiamo è un cubo all'interno di una gamma specificata, che va da -1 a 1 insieme a tutte le tre asse X, Y e Z. E come ho già accennato, qualsiasi volume di visione arbitraria può essere trasformato al CVV semplicemente grazie all'operazione di scaling.Quindi, supponiamo che questo sia un volume di vista arbitrario definito in termini di suoi piani di bounding, sei piani, quindi possiamo sempre associarlo scalando all'interno di questa gamma lungo la direzione X Y Z e corrispondente, otteniamo il volume della vista canonica.In caso di proiezione di prospettiva, questa trasformazione è leggermente più complicata perché qui ci occupiamo di una vista frustum e dobbiamo convertirla in un volume di vista canonico per la produzione parallela che è il tubo parallelo rettangolare dove l'estensione X, Y e Z dei piani di bounding sono all'interno di una gamma specificata.Così, quello che possiamo fare qui, parleremo semplicemente dell'idea piuttosto che entrare nei dettagli, possiamo convertire questa visione arbitraria fruttato al volume della vista canonica qui, applicando l'aratura e la scalatura in sequenza. Come possiamo indovinare dalle cifre, che l'avambraccio è necessario per modificare la forma e la scalatura è necessario modificare le dimensioni. Quindi, quando applichiamo questo alle trasformazioni sul fruttato vista originale, otteniamo il volume della vista canonica, ovviamente, qui non entreremo in ulteriori dettagli rispetto a questa idea di base.Quindi, cosa abbiamo imparato? Che definiamo un volume di vista e questo volume di vista, ci trasformiamo in un volume di vista canonico in modo che nelle fasi successive quando eseguiamo la schermatura, i calcoli siano più facili da implementare perché abbiamo a che fare con una definizione standardizzata del volume della vista.(Fare Slide Time: 10.14)Vediamo di rivisitare la sequenza di trasformazioni che eseguiamo per proiettare un punto p nel mondo coordina la scena in un punto sul piano di vista. Ora, abbiamo accennato che questo è simile a scattare una fotografia che sia noi la trasferiamo per visualizzare il sistema di coordinate, quindi scattare una proiezione. Tuttavia, in precedenza, abbiamo accennato a questi due passi.Ora si aggiunge un terzo passo. Così, prima, trasformiamo il mondo, coordiniamo il punto sul sistema di coordinate della vista, come abbiamo discusso in una lezione precedente. E il passo successivo non è proiezione. Invece, quello che facciamo è in questa vista coordinare la descrizione, definiamo un volume di visualizzazione e questo volume di visualizzazione viene trasformato in un volume di vista canonico  . E di conseguenza, il punto si trasforma anche applicando lo stesso insieme di trasformazioni. Quindi, la fase successiva è quella di trasformare il punto nel volume della vista in un punto del volume della vista canonica; poi la fase finale è quella di eseguire la trasformazione di proiezione che sia, proiettare il punto nel volume della vista canonica sul piano di vista.Così, questi tre passi, una trasformazione da visualizzare coordinano poi il volume della vista canonica e poi la trasformazione della proiezione costituiscono la sequenza attraverso la quale proiettamo un punto nel mondo coordinando la scena in un punto sul piano di vista. Matematicamente o in notazione a matrice che stiamo seguendo, possiamo scrivere questa serie di passi come mostrato qui in questa espressione in cui questa trasformazione rappresenta la trasformazione per visualizzare il volume.Questa rappresenta la trasformazione in volume della vista canonica e questa rappresenta la trasformazione della proiezione. Dato che li stiamo applicando in sequenza, quindi stiamo seguendo il diritto di sinistra. Quindi, la prima trasformazione per visualizzare il sistema di coordinate, poi la trasformazione in volume della vista canonica e poi la trasformazione per visualizzare piano attraverso la proiezione.Così, ecco l'idea di eseguire proiezione sul piano di vista. C'è un altro punto da sottolineare. Finora, quello che abbiamo accennato che nei punti di proiezione 3D sono mappati a 2D. L'implicazione è che stiamo rimuovendo la componente Z o di profondità. Tuttavia, può essere notato qui a questo puntoche mentre implementiamo la pipeline, questo componente di profondità in realtà non viene rimosso, e perché questo è così?Un'operazione che eseguiamo in questa quarta fase è chiamata rimozione della superficie nascosta. Parleremo di questa operazione nei dettagli in una lezione successiva. Il punto da sottolineare qui è che questa operazione richiede informazioni di profondità. Quindi, le informazioni di profondità dopo la proiezione non vengono in realtà eliminate. Invece, queste informazioni di profondità originali vengono memorizzate in memoria separata, che si chiama Z - buffer o il buffer di profondità.Quindi, in realtà non stiamo rimuovendo le informazioni di profondità, sebbene stiamo eseguendo una proiezione invece, la teniamo memorizzata separatamente nel buffer Z o nel buffer di profondità. E queste informazioni sono necessarie per eseguire un'operazione successiva chiamata rimozione della superficie nascosta, che ci dà un effetto realistico in un'immagine.(Fare Slide Time: 14.56)Così, questo è in breve quello che facciamo durante la proiezione e come proiettiamo da una scena coordinata mondiale a un piano di vista. Ora c'è un'altra tappa. Andiamo a quel palco che sta mappando da questo piano di vista ad una viewport sullo spazio del dispositivo.(Fare Slide Time: 15.21)Quindi, di gran lunga quello che abbiamo discusso? Abbiamo discusso di passi per trasformare un punto nel mondo coordinato ad una finestra di clipping sul piano di vista. Questo significa una regione sul piano di vista su cui stiamo proiettando gli oggetti che fanno parte del volume della vista.Ora, inoltre, avete dimostrato che questo è tipicamente il piano vicino del volume della vista canonica. Quindi, questa è la nostra finestra o finestra di clipping.(Fare Slide Time: 15.59)Possiamo supporre che per semplicità che la finestra sia a 0 di profondità o Z uguale a 0, vale solo per semplicità, anche se in generale, questo non è un requisito assoluto.Si può anche notare che stiamo parlando di volume di vista canonico che è X e Y estensioni devono essere all'interno di una gamma fissa indipendentemente dalla loro posizione effettiva nel mondo coordina la scena, e a causa di questa regione in cui stiamo limitando tutto all'interno di una gamma fissa, questi volumi di vista canonici sono standardizzati e la finestra di clipping definita sulla vicino al piano della vista canonica è spesso chiamato finestra normalizzata.Così, qui ci occupiamo di una finestra normalizzata in cui l'estensione dei valori deve essere all'interno di una gamma predefinita.Ora, questo piano di vista è in realtà un concetto astratto, quindi di conseguenza, la finestra di clipping è anche un concetto astratto e intermedio. Non possiamo vederlo; quello che vediamo sullo schermo è qualcosa di diverso. I punti che ci sono sulla finestra di clipping devono essere mostrati sullo schermo. Ma la scena che c'è nella finestra non ha bisogno di occupare l'intero schermo, ad esempio, qui.Supporre questo rettangolo esterno definisce un'intera scena fuori di cui abbiamo proiettato questa parte definita all'interno della finestra di clipping. Ora, questa parte può essere visualizzata su qualsiasi regione dello schermo e può essere in qualsiasi dimensione ora la regione su cui questa parte viene visualizzata sullo schermo si chiama viewport.Così, abbiamo due concetti qui, finestra, che è uguale alla finestra di clipping, che si sta normalizzando. E gli oggetti sono proiettati su questa finestra, e abbiamo l'altro concetto di viewport, definito nello spazio del dispositivo rispetto all'origine e alle dimensioni dello schermo. Quindi, questo viewport si riferisce ad una regione sullo spazio del dispositivo dove questa immagine proiettata deve essere mostrata. Ora, questa regione può essere in qualsiasi posizione sullo spazio del dispositivo spaziale e può essere di qualsiasi dimensione, indipendentemente dalla dimensione della finestra di clipping. Allora, di cosa abbiamo bisogno? Dobbiamo mappare da questa finestra sul viewport.Così, richiede una più trasformazione per trasferire i punti dalla finestra sul viewport.Così, vediamo come possiamo eseguire questa trasformazione. Quindi quello che vogliamo, suppliamo che questa sia la nostra finestra, e questo è il nostro viewport, notare che qui non stiamo usando questo intervallo normalizzato. Stiamo formulando il problema in una scena molto generica dove questo Wx e Wy possono assumere qualsiasi valore. Allora, Wx, Wy è un punto sulla finestra e vogliamo mapparlo a un punto sul viewport Vx, Vy.Quindi, come possiamo fare? La prima cosa è che dobbiamo mantenere la posizione relativa di questo punto rispetto ai suoi confini, quindi la stessa posizione relativa deve essere mantenuta nel mirino, quindi se vogliamo mantenerci manteniamo relazioni come quella mostrata qui tra le dimensioni della finestra e le dimensioni viewport.Ora, questa espressione può essere semplificata in questa forma. Così, possiamo rappresentare la coordinata X del punto nel punto di vista in termini di coordinate X del punto in finestra e queste due costanti, definite qui in termini di dimensioni finestra e viewport.Relazione simile possiamo formarci tra la coordinata Y del punto nel mirino e la coordinata Y dello stesso punto nella finestra di nuovo, formando, le relazioni prima tra le coordinate y e poi semplificando e riorganizzando per ottenere questo rapporto dove Vy è la coordinata Y del punto nel mirino, Wy è la coordinata Y del punto nella finestra.E questi due sono costanti definite qui in termini di, di nuovo, la finestra e le dimensioni viewport.Quindi, usando quelle espressioni, possiamo in realtà formare delle metriche di trasformazione come mostrato qui. Quindi, queste sono le metriche per trasformare questo punto finestra sul punto di vista.E seguiremo la stessa regola cioè ottenere il punto di trasformazione moltiplicherà il punto originale con le metriche di trasformazione come mostrato qui. Da notare che qui di nuovo ci occupiamo diil sistema di coordinate omogenee dato che questi sono punti bidimensionali, quindi abbiamo dei vettori a tre elementi e tre da tre matrici.E alla fine dobbiamo dividere qui le coordinate ottenute con il fattore omogeneo come mostrato qui, per ottenere i punti trasformati. L'approccio è simile a quello che abbiamo visto in precedenza. Quindi, ecco l'idea di base di come trasformarsi da un punto della finestra o dalla finestra di clipping a un punto del mirino, che può essere ovunque sullo spazio del dispositivo.Ora, cerchiamo di capire i concetti che abbiamo percorso fino ad ora in termini di esempi illustrativi.(Fare Slide Time: 24:38)Così, nella nostra precedente lezione, siamo arrivati in questo esempio dove abbiamo citato un oggetto, mostrato qui e una posizione della fotocamera vista la direzione, tutto è stato menzionato, e abbiamo calcolato il punto centro di trasformazione dell'oggetto nel sistema di coordinate della vista.Così, non andremo all'interno dettagli su come abbiamo calcolato che di nuovo, basta citare il punto di trasformazione. Ovvero 0, 0, - 1 che abbiamo ottenuto dopo aver applicato questa trasformazione di visualizzazione.Ora suppitiamo che il piano di vista si trovi a Z pari a - 0,5. E vogliamo una proiezione parallela. Quindi, quale sarebbe la coordinata del centro oggetto dopo la proiezione? Ipotizziamo che il volume della vista sia sufficientemente grande da racchiudere l'intero oggetto trasformato.Così, la nostra matrice di trasformazione in proiezione parallela è data qui, e sappiamo D è 0,5. Ecco, questa è la nostra matrice di proiezione parallela.Quindi, se usiamo queste matrice ed eseguiamo qui la moltiplicazione della matrice. La matrice di proiezione e il vettore punto. Poi arriviamo a questo punto come il punto proiettato sul piano di vista. Ora qui, dal momento che il fattore omogeneo è di 1, quindi il nostro punto è direttamente ottenuto.Ora, consideriamo la proiezione di prospettiva. In precedenza abbiamo considerato una proiezione parallela, cosa accadrà se ora consideriamo la proiezione prospettiva con lo stesso piano di vista? Quindi, quale sarebbe il nuovo punto dopo la proiezione?Così, qui si mostrano le metriche di trasformazione per la proiezione di prospettiva. Conosciamo il valore di d che sostituisce d in questo, otteniamo le nostre metriche di proiezione. E con questa matrice, cosa facciamo?Lo moltiplichiamo con il vettore punto come prima, come mostrato qui, quindi dopo la moltiplicazione, otteniamo questo punto di trasformazione in un sistema di coordinate omogenee. Ora nota qui che il fattore omogeneo non è il 1, prima ho accennato che in proiezione, in particolare prospettiva di proiezione, troviamo fattori omogenei che non sono 1, per cui bisogna fare attenzione a concludere il punto trasformato finale dobbiamo dividere qualunque cosa abbiamo ottenuto con il fattore omogeneo. Così, dopo la divisione, arriveremo a questo punto, o questo è il punto finale che otteniamo dopo la proiezione di prospettiva applicata sul punto centrale.Così, abbiamo eseguito la proiezione. Ora cerchiamo di vedere cosa succede se vogliamo eseguire questa finestra per visualizzare la trasformazione. Ora, ipotizziamo che abbiamo proiettato il punto su una finestra di clipping normalizzata. E questo punto proiettato è al centro della finestra normalizzata. Ora stiamo definendo un viewport con angolo in basso a sinistra a (4, 4) e l'angolo in alto a destra a (6, 8).Così, questo significa che se questo è il nostro viewport, allora l'angolo in basso a sinistra è questo 1. Questo è (4, 4) e l'angolo in alto a destra è (6, 8). Quindi, se eseguiamo una finestra per viewport transformation, allora quale sarebbe la posizione del punto, lo stesso punto centrale nel mirino? Proviamo a ricavarlo.Ora, abbiamo già accennato che la finestra di clipping è normalizzata, quindi i valori o l'estensione della finestra sono fissi. E otteniamo questi valori. Quindi, questo è compreso tra - 1 a 1, e ancora, questo è compreso tra - da 1 a 1. Quindi, otteniamo questi valori, e dalla specifica viewport, possiamo vedere che questo è (4, 4). Quindi, questo 4 e questo è così questo punto è (6, 8) allora questo deve essere 6. Questo deve essere 8. Così, otteniamo questi valori. Così, accanto, sostituiamo semplicemente questi valori nelle matrici di trasformazione che abbiamo visto in precedenza.Prima compone i valori costanti sx, sy, tx, ty utilizzando quei valori che abbiamo visto in precedenza per ottenere questi risultati. Sx è 1, sy è 2, tx è 5 e ty è 6.Così, la matrice di trasformazione può essere ottenuta sostituendo i valori sx, sy, tx, ty values in questa matrice di trasformazione originale che ci dà questa matrice. Così, questa sarà la nostra finestra per visualizzare la matrice di trasformazione.Ora, una volta ottenuto la matrice di trasformazione, allora è più facile ottenere il punto trasformato nel viewport moltiplicando le metriche di trasformazione con il vettore punto per ottenere il punto di trasformazione in coordinate omogenee. Ora, di nuovo, il fattore di coordinate non è 1. Quindi, dobbiamo dividere questi valori con il fattore omogeneo come mostrato qui e qui, che alla fine ci dà il punto (5, 6).Così, questo sarà il nostro punto trasformato dopo aver applicato la finestra alla trasformazione viewport. Ecco, ecco come otteniamo un punto trasformato nel mirino. Ora in questo esempio, avrete probabilmente notato che abbiamo definito viewport indipendentemente dalla descrizione della finestra, possiamo definirlo ovunque nello spazio del dispositivo.Quello di cui abbiamo bisogno è fondamentalmente una trasformazione anche, avrete probabilmente notato che la dimensione viewport non ha nulla a che vedere con la dimensione della finestra, la finestra è normalizzata, mentre la viewport non è normalizzata. Così, possiamo definire qualsiasi dimensione specificando le sue estensioni di coordinate, e attraverso la mappatura, otteniamo quel punto trasformato. Così, questo ci dà la flessibilità di collocare l'immagine proiettata ovunque sullo schermo con qualsiasi dimensione.Così, in sintesi, quello che abbiamo discusso finora sono tre sub - stage della fase di visualizzazione pipeline. Quindi, queste tre sottofasi sono la trasformazione della vista, la trasformazione della proiezione e la trasformazione viewport. Tanto per ricapitolare, quindi queste tre sottofasi sono utilizzate per simulare l'effetto di scattare una fotografia. Così, quando si prende una fotografia, guardiamo la scena attraverso il meccanismo fornito nella fotocamera in modo da imitare l'esecuzione della trasformazione della visualizzazione, trasformiamo la scena coordinata mondiale in un sistema di coordinate della vista 3D, che è in realtà equivalente a guardare la scena attraverso il meccanismo di visualizzazione della fotocamera. Poi, facciamo una foto che significa che lo proiettiamo sul piano di vista che viene fatto attraverso la trasformazione della proiezione.E infine, lo visualizziamo sullo schermo, che ovviamente non fa parte dell'analogia della fotografia, ma lo facciamo in computer grafica in modo che gli stage imitino con l'uso delle finestre per visualizzare la trasformazione. Questa trasformazione è necessaria per avere la flessibilità di visualizzare l'immagine proiettata ovunque sullo schermo e con qualsiasi dimensione, indipendentemente dalla dimensione della finestra di clipping. Nella quarta tappa, a parte queste tre sottofasi, che sono legate a tre tipi di trasformazioni, ci sono altre due operazioni che vengono fatte.Lo abbiamo già accennato in questa lezione. Uno si sta clippando una è la rimozione della superficie nascosta. Così, queste due operazioni che discuteremo nelle nostre successive lezioni.Qualunque cosa abbia discusso oggi si può trovare da questo libro, Computer Graphics. Puoi passare attraverso il capitolo 6, la sezione 6.2.3 e 6,3 questa sezione è sul tema del volume della vista canonica e questa sezione discute nel dettaglio la finestra per visualizzare la trasformazione. Questo è tutto per oggi. Grazie e arrivederci.