Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Introduzione a 3D Pipeline

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 benvenuti alla lezione numero 4 del corso Computer Graphics. la serie di passi che sono coinvolti nella generazione dei valori del colore sono insieme chiamati pipeline di grafica. Questa è una terminologia molto importante e nelle nostre successive lezioni discuteremo nel dettaglio le fasi della pipeline. Otteniamo così alcune idee introduttive sulla pipeline e le sue tappe.
Ci sono diverse tappe come ho accennato, la prima fase sta essenzialmente definendo gli oggetti. Così quando si parla di creare una scena o di un'immagine, contiene oggetti. Ora c'è bisogno di essere in qualche modo per rappresentare questi oggetti nel computer. Quell' attività dove definiamo oggetti che saranno le parti delle immagini costituisce la prima fase della pipeline che si chiama oggetto

stadio di rappresentazione. Ad esempio, come potete vedere in questa figura sullo schermo vogliamo generare l'immagine di un cubo con valori di colore come mostrato sulla parte destra dello schermo.
Ora questa immagine contiene un oggetto che è un cubo e sul lato sinistro qui abbiamo definito questo cubo. Così quando si parla di definire ciò che intendiamo essenzialmente come possiamo comprendere intuitivamente, definire il cubo implica specificare i vertici o i bordi rispetto ad alcuni frame di riferimento che è la definizione in questo semplice caso che sono quelli che sono i vertici o quali sono i bordi come coppia di vertici.
Ovviamente il cubo è un oggetto molto semplice, per oggetti più complessi potremmo richiedere definizioni più complesse, modi più complessi di rappresentare gli oggetti.
Di conseguenza, diverse tecniche di rappresentazione sono disponibili per una creazione efficiente e una manipolazione efficiente delle immagini. Nota qui sul termine efficiente, quindi quando parliamo di questo termine efficiente, essenzialmente quello a cui ci riferiamo, ci riferiamo al fatto che i display sono diversi, le piattaforme hardware sottostanti sono diverse. Quindi qualunque sia le risorse computazionali che dobbiamo visualizzare qualcosa su un desktop o un portatile probabilmente sono diverse rispetto a qualunque cosa dobbiamo visualizzare qualcosa su un piccolo dispositivo mobile o su uno schermo del dispositivo indossabile.
Di conseguenza, le nostre tecniche di rappresentazione dovrebbero essere in grado di utilizzare le risorse disponibili nella misura del possibile e dovrebbero essere in grado di consentire agli utenti di manipolare le immagini in un'ambientazione interattiva. Quindi l'efficienza è essenziale rispetto alle risorse di calcolo disponibili e al modo di utilizzare in modo ottimale quelle risorse. Ora una volta definiti quegli oggetti, questi oggetti vengono poi passati attraverso le successive fasi di pipeline per ottenere e render immagini sullo schermo. Così la prima fase sta definendo gli oggetti e nelle fasi successive, prendiamo queste definizioni oggetto come input e generiamo la rappresentazione dell'immagine oltre a renderla sullo schermo.
Quali sono quelle fasi successive? La prima è la trasformazione di modellazione che è la 2a fase della pipeline. Ora come ho detto quando stiamo definendo un oggetto dove considerare qualche frame di riferimento rispetto al quale stiamo definendo l'oggetto. Ad esempio, il cubo che abbiamo visto in precedenza. Per definire il cubo dobbiamo definire le sue coordinate ma coordinate rispetto a cosa? Lì assumeremo determinati frame di riferimento.
Ora quei frame di riferimento rispetto ai quali vengono definiti gli oggetti sono più popolarmente chiamati coordinate locali dell'oggetto. Quindi gli oggetti sono tipicamente definiti nel loro sistema di coordinate locale o locale. Ora più oggetti vengono messi insieme per creare una scena, quindi ogni oggetto è definito nel proprio sistema di coordinate locale o locale e quando li stiamo combinando stiamo essenzialmente cercando di combinare questi diversi frame di riferimento.
Combinando quei diversi oggetti, stiamo creando un nuovo assemblaggio di oggetti in un nuovo telaio di riferimento che tipicamente si chiama sistema di coordinate mondiali. Prendete l'esempio mostrato su questa figura. Qui come potete vedere ci sono molti oggetti, alcuni cubi, sfere e altri oggetti, cilindri. Ognuno di questi oggetti è definito nel proprio sistema di coordinate.
Ora in tutta questa scena, composta da tutti gli oggetti, questa è tutta la scena, qui abbiamo assemblato tutti quegli oggetti dai propri sistemi di coordinate. Ma eccoci di nuovo ipotizziamo un altro sistema di coordinate in termini di quale sia definito questo assemblaggio di oggetti. Così quel sistema di coordinate dove li abbiamo assemblati è chiamato sistema di coordinate mondiali. Quindi c'è una trasformazione, trasformando un oggetto dal proprio sistema di coordinate al sistema di coordinate mondiali. Quella trasformazione è chiamata trasformazione di modellazione che è la 2a fase della pipeline grafica.
Così nella prima fase definiamo gli oggetti, nella seconda fase portiamo quegli oggetti insieme nel sistema di coordinate mondiali attraverso la trasformazione modellistica che è anche a volte conosciuta come la trasformazione geometrica. Quindi entrambi i termini sono utilizzati sia la trasformazione di modellazione che la trasformazione geometrica che è la 2a fase della pipeline grafica.
Ora una volta costruita la scena, gli oggetti devono essere assegnati colori che si fa nella 3a fase della pipeline chiamata illuminazione o stage di illuminazione. Prendete ad esempio le immagini mostrate qui. Nella figura di sinistra abbiamo semplicemente l'oggetto, nella figura giusta abbiamo il colore. Quindi il, abbiamo applicato colori sulle superfici oggetto. Ora come potete vedere il modo in cui abbiamo applicato i colori, è diventato chiaro quale superficie è più vicina al visualizzatore e quale superficie è più vicina.
In altre parole, ci dà una sensazione di 3D, mentre senza colori come quello mostrato qui, quella chiarezza non c'è. Per ottenere un'immagine realistica che ci dà una sensazione di 3D, dobbiamo assegnare dei colori. Assegnazione dei colori è il lavoro della 3a tappa che si chiama illuminazione o stage di illuminazione.
Ora come probabilmente si è consapevoli del colore è un fenomeno psicologico e questo è legato al modo in cui la luce si comporta o in altre parole, questo è legato alle leggi dell'ottica. E nella 3a tappa, cosa facciamo? Cerchiamo essenzialmente di imitare queste leggi ottiche, cerchiamo di imitare il modo in cui vediamo il colore o percepiamo il colore nel mondo reale e basato su di noi cerchiamo di assegnare colori nelle scene sintetizzate.
Così prima definiamo un oggetto, 2a portiamo oggetti insieme per creare una scena, 3a tappa assegniamo colori alle superfici oggetto in scena. Ora fino a questo punto, tutto quello che stavamo facendo in 3D

impostazione nel sistema di coordinate mondiali. Ora quando arriviamo a vedere un'immagine, lo schermo del computer è
2D, quindi essenzialmente quello che richiediamo è una mappatura da questo mondo 3D di coordinate scena allo schermo del computer 2D. Quella mappatura è fatta nella quarta fase che sta visualizzando la trasformazione.
Ora questa fase svolgiamo diverse attività che sono simili a scattare una fotografia. Consideratevi un fotografo, avete una macchina fotografica e catturate qualche foto di scena.
Cosa fai? Posizionare la fotocamera vicino al tuo occhio, concentrarti su qualche oggetto che vuoi catturare e poi catturarlo sul sistema della fotocamera e anche questo è seguito visualizzandolo sul display della fotocamera o sullo schermo della fotocamera, se si sta avendo una fotocamera digitale. Ora questo processo di presa di una fotografia può essere matematicamente analizzato per avere diverse operazioni intermedie che di per sé forma un oleodotto, che è una pipeline all'interno del più ampio gasdotto grafico. Così la quarta fase di visualizzazione della trasformazione stessa è la pipeline che fa parte della pipeline grafica complessiva. Ora questa pipeline in cui trasformiamo una scena coordinata del mondo 3D ad una scena del piano di vista 2D è chiamata pipeline di visualizzazione.
Ora in questo gasdotto cosa facciamo? Abbiamo dapprima impostato un sistema di coordinate fotocamera che viene anche indicato come sistema di coordinate della vista. Poi la scena di coordinate mondiali si trasforma nel sistema di coordinate della vista. Questa fase si chiama visualizzazione trasformazione. Così abbiamo impostato un nuovo sistema di coordinate che è un sistema di coordinate fotocamera e poi abbiamo trasformato la scena di coordinate mondiali sulla scena coordinata della fotocamera.
Da lì facciamo un'altra trasformazione, ora trasferiamo la scena in un piano di vista 2D. Ora questa tappa è chiamata trasformazione di proiezione. Così abbiamo la visualizzazione della trasformazione seguita da una trasformazione di proiezione. Per la proiezione, definiamo una regione in una visualizzazione di coordinate che si chiama view volume.
Ad esempio, nella figura mostrata qui, come potete vedere questo frustum sta definendo un volume di visualizzazione, il frustum mostrato qui sta definendo un volume di visualizzazione. Vogliamo quindi catturare oggetti presenti all'interno di questo volume, oggetti esterni che non vogliamo catturare. Questo è tipicamente quello che facciamo quando facciamo una fotografia, selezioniamo qualche regione sulla scena e poi la catturiamo. Quindi qualunque oggetto sia esterno non verrà proiettato e qualunque sia presente all'interno del volume sarà proiettato. Quindi qui richiediamo un ulteriore processo, un processo per rimuovere gli oggetti che sono al di fuori del volume della vista. Ora quegli oggetti possono essere completamente fuori o possono essere parzialmente esterni. Quindi in entrambi i casi dobbiamo rimuoverli. Così quando un oggetto è completamente all'esterno lo rimuovo completamente e quando un oggetto è parzialmente fuori ci fermiamo l'oggetto e manteniamo solo la parte che si trova all'interno del volume della vista, la parte esterna che rimuoviamo. Il processo complessivo si chiama clipping.
Sempre quando ci proiettiamo, consideriamo una posizione di visualizzatore dove si trova il fotografo e in quale direzione sta guardando. In base a tale posizione, alcuni oggetti possono apparire completamente visibili, alcuni possono apparire parzialmente visibili, mentre gli altri oggetti diventeranno invisibili.
Ma tutti possono essere all'interno dello stesso volume.
Ad esempio, rispetto a questa particolare posizione vista, alcuni oggetti possono ottenere, come questo oggetto se si trova dietro questo oggetto allora sarà invisibile. Se è parzialmente indietro, allora sarà parzialmente visibile e se non sono allineati nella stessa direzione, allora entrambi saranno pienamente visibili.
Quindi si prende cura di questo fatto anche prima della proiezione che richiede alcune ulteriori operazioni, elaborazioni. Per catturare questo effetto di visualizzazione, le operazioni che eseguiamo sono tipicamente chiamate operazioni di rimozione di superficie nascoste o operazioni di rilevamento della superficie analogamente visibili. Così per generare effetti di visualizzazione realistici insieme a clipping ciò che facciamo è eseguire la rimozione della superficie nascosta o le operazioni di rilevamento della superficie visibili.
Così dopo le operazioni di rimozione e rimozione delle superfici nascoste, proiettiamo la scena sul piano di vista.
Ovvero un piano definito nel sistema, nel sistema di coordinate della vista.
Ora, c'è un'altra trasformazione Supporre nella figura a destra, supponiamo che questo sia l'oggetto che viene proiettato qui nel piano di vista. Ora l'oggetto può essere visualizzato su qualsiasi porzione di schermo del computer, è necessario che non sia esattamente nella stessa parte del piano di visualizzazione.
Ad esempio, questo oggetto può essere visualizzato in un angolo del display. Quindi ci differenzieremo tra due concetti qui; uno è il piano di vista che tipicamente si chiama finestra, altro è la regione di visualizzazione sulla schermata effettiva del display che chiamiamo viewport. Quindi un'altra trasformazione rimane nella pipeline di visualizzazione che sta trasferendo il contenuto dalla finestra al viewport. Così si chiama così la trasformazione da finestra a vista.
Così in sintesi quello che possiamo dire è che, nella quarta tappa ci sono 3 trasformazioni. Cosa sono quelle trasformazioni? Prima si trasformano dal mondo coordinano scena a telecamera o vista coordinate scena. Poi dalla scena di coordinate fotocamera, eseguiamo la trasformazione della proiezione per visualizzare piano, poi la finestra del piano di visualizzazione si trasforma in viewport. Quindi queste sono le 3 trasformazioni.
Insieme a quelle ci sono 2 grandi operazioni che eseguiamo qui; una è la schermatura che sta ritocciando gli oggetti che giacciono fuori dal volume della vista e l'altro è la rimozione della superficie nascosta che significa creare un effetto realistico, visualizzazione effetto rispetto alla posizione del visualizzatore. Ecco quindi la quarta tappa.
Così prima abbiamo definito oggetti nella prima fase, nella 2a fase abbiamo combinato quegli oggetti nella scena coordinata nel mondo, nella 3a fase abbiamo assegnato colori alle superfici oggetto della scena coordinata nel mondo, nella quarta tappa che abbiamo trasformato nel mondo coordinano la scena all'immagine sul viewport attraverso una serie di trasformazioni che formano una sottosezione - pipeline all'interno del gasdotto complessivo.
E quelle fasi sub - pipeline stanno visualizzando la trasformazione, la trasformazione in proiezione e la trasformazione da finestra a vista. Questo sub - pipeline è chiamato pipeline di visualizzazione che fa parte della pipeline grafica complessiva e nella 4a fase insieme a questi pipeline di visualizzazione dobbiamo anche più operazioni eseguite che è clipping e rimozione della superficie nascosta.
Ancora uno stadio rimane quello che è la 5a tappa che si chiama conversione o rendering di scansione. Ora abbiamo accennato prima che ci trasformiamo in un viewport. Ora viewport è una rappresentazione astratta del display effettivo. Nel display effettivo se riraccogli la nostra discussione sui nostri display raster, abbiamo accennato che il display contiene una griglia di pixel.
Quindi essenzialmente il display contiene località discrete, non possiamo supporre che qualsiasi punto possa avere un punto corrispondente sullo schermo. Ad esempio, se nella nostra immagine abbiamo un vertice alla posizione 1,5 e 2,5, sullo schermo non possiamo avere una tale collocazione perché sullo schermo abbiamo solo valori interi come coordinate a causa della natura discreta della griglia. Quindi abbiamo un pixel posizionato a 2, 2 o 3, 3 o 1, 1 o 1, 2 qualcosa del genere piuttosto che i numeri reali 1,5, 2,5.
Quindi non possiamo avere una posizione pixel a dire 1,5, 2,5 ma possiamo avere posizioni pixel solo a valore intero diciamo 1, 1; 2, 2 e così via. Quindi se troviamo un vertice nella nostra immagine posizionato a 1,5, 2,5 allora dobbiamo associarlo a queste coordinate intere. Quella fase in cui eseguiamo questa mappatura è chiamata fase di conversione della scansione che è la quinta e ultima fase della pipeline. Per esempio, considerate queste righe mostrate qui, i punti finali sono 2, 2 e 7, 5. Ora tutti i punti intermedi potrebbero non avere valori di coordinate interi ma nel display finale, nel display reale possiamo avere pixel, questi cerchi solo a valori di coordinate interi.
Dobbiamo quindi mappare queste coordinate non intere a coordinate intere. Quella mappatura è il lavoro di questa fase di conversione in quinta fase o di scansione che si chiama anche rasterizzazione. E come potete vedere potrebbe portare ad alcune distorsioni perché a causa della mappatura potremmo non ottenere i punti esatti sulla linea, invece potremmo dover soddisfare noi stessi con alcuni punti approssimativi che si trovano vicini alla linea reale. Ad esempio, questo pixel qui o questo pixel qui non è esattamente sulla linea ma il pixel più vicino possibile rispetto alla linea.
Allora qual è la preoccupazione? Come minimizzare le distorsioni? Ora queste distorsioni hanno un nome tecnico che si chiama aliasing effetto, da dove questo nome originato discuteremo più avanti. Quindi la nostra preoccupazione è quella di eliminare o ridurre l'effetto di aliasing nella misura possibile in modo da non riuscire a vedere troppe distorsioni, non riusciamo a percepire troppe distorsioni. Per affrontare questa preoccupazione si utilizzano diverse tecniche che si chiamano tecniche anti - aliasing. Questi vengono utilizzati per rendere l'immagine più liscia possibile per ridurre l'effetto di aliasing.
Così il controller di visualizzazione esegue effettivamente tutte queste fasi per ottenere finalmente i valori di intensità da memorizzare nel buffer del frame o nella memoria video. Ora queste fasi vengono eseguite attraverso il software, ovviamente con un supporto hardware adatto.
Per un programmatore di un sistema grafico, ovviamente non è necessario imparare a conoscere i dettagli intricati di tutte queste fasi, sono piuttosto coinvolgente molti concetti teorici, lotti di modelli teorici. Ora se un programmatore di grafica viene tirato giù con tutta questa teoria, i modelli poi la maggior parte del tempo saranno consumati capendo la teoria piuttosto che sviluppare realmente il sistema. Così per affrontare questa preoccupazione di un programmatore ciò che si fa è essenzialmente sviluppo di biblioteche, librerie grafiche.
C'è quindi questo background teorico che si occupa di generare immagine 2D. Il programmatore non ha sempre bisogno di implementare le fasi del gasdotto per implementare pienamente le conoscenze teoriche, questo sarebbe ovviamente troppo sforzo e la maggior parte dello sforzo di sviluppo andrà a comprendere e implementare le fasi teoriche.
Invece il programmatore può utilizzare quelle che vengono chiamate interfacce di programmazione delle applicazioni o API fornite dalle librerie grafiche. Laddove queste fasi siano già implementate sotto forma di varie funzioni e lo sviluppatore può semplicemente richiamare quelle funzioni con argomenti nel loro programma per eseguire determinate attività grafiche. Ci sono molte librerie di questo tipo disponibili, molto popolari sono menzionate qui OpenGL che è una libreria grafica open source ampiamente utilizzata.
Poi c'è DirectX da parte di Microsoft e ci sono molte altre librerie commerciali disponibili che sono proprietarie ma OpenGL essendo open source è ampiamente accessibile e utile a molte situazioni.
Ora cosa contiene queste librerie? Contengono serie di funzioni predefinite, che, quando richiamate con argomenti appropriati, eseguono compiti specifici. Quindi il programmatore non ha bisogno di conoscere ogni dettaglio sulla piattaforma hardware sottostante ovvero processore, memoria e OS per costruire un'applicazione.
Per esempio, supponga di voler assegnare i colori a un oggetto che abbiamo modellato. Dobbiamo implementare realmente le leggi ottiche per eseguire la colorazione? Da notare che questa implementazione di legge ottica implica anche la conoscenza dei processori disponibili, la memoria disponibile e

così via. Quindi quello che possiamo fare è invece di avere quella conoscenza, possiamo semplicemente andare per l'utilizzo di una funzione glColor3f con un argomento r, g, b. Così questa funzione è definita in OpenGL o nella libreria grafica aperta che assegna un colore ad un punto 3D.
Quindi qui non abbiamo bisogno di conoscere dettagli come il modo in cui il colore viene definito nel sistema, come tali informazioni vengono memorizzate, in quale porzione di memoria e accesso, come il sistema operativo gestisce la chiamata, quale CPU del processore o GPU gestisce il compito e così via. Quindi tutti questi dettagli complicati possono essere evitati e il programmatore può semplicemente utilizzare questa funzione per assegnare il colore. Torneremo a questa OpenGL funzioni in una parte successiva della lezione dove introdurremo OpenGL.
Ora applicazioni grafiche come i sistemi di pittura che probabilmente tutti di voi conoscono, strumenti CAD che abbiamo citato nelle nostre lezioni introduttive precedenti, videogiochi, animazioni, tutte queste sono sviluppate utilizzando queste funzioni. Quindi è importante avere una comprensione di queste librerie se si vuole rendere la propria vita più semplice come programmatore di grafica. E torneremo più tardi in questa funzione di biblioteca, discuteremo in dettaglio alcune funzioni popolarmente utilizzate nel contesto di OpenGL.