Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

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 23 del corso Computer Graphics. Quindi stiamo attualmente discutendo la pipeline grafica e ci sono cinque tappe in pipeline come tutti sappiamo.
La prima fase è la rappresentazione dell'oggetto, la seconda fase è la trasformazione della modellazione, la terza fase è l'illuminazione, la quarta fase sta visualizzando pipeline e la quinta fase è la conversione della scansione. Tra di loro, ci troviamo attualmente nella quarta fase che sta visualizzando la trasformazione. Le precedenti tre tappe che abbiamo già discusso.
Ora, in questa quarta tappa, come si può raccogliere ci sono molte sottofasi. Quindi ci sono 3 trasformazioni e 2 sottofasi relative ad alcune altre operazioni. Così le tre trasformazioni sono la trasformazione della vista, la trasformazione della proiezione e la trasformazione viewport.
Poi abbiamo due operazioni, clipping e rimozione della superficie nascosta. Ora, tra tutte queste trasformazioni e operazioni, abbiamo già coperto le tre trasformazioni e le clip.
Oggi si discuterà della restante operazione che è la rimozione della superficie nascosta. Vediamo cosa è la rimozione della superficie nascosta, qual è l'idea di base e come possiamo fare.
(Riferimento Slide Time: 02.22) Prima, durante la nostra discussione sul clipping, abbiamo imparato che come rimuovere gli oggetti completamente o parzialmente che sono al di fuori del volume della vista. Così quelli che abbiamo fatto usando gli algoritmi di clipping. Quindi da notare qui che la schermatura è stata effettuata su oggetti che sono parzialmente o completamente al di fuori del volume della vista. A volte, effettivamente, abbiamo bisogno di rimuovere di nuovo oggetti completamente o parzialmente che si trovano all'interno del volume della vista.
Così in caso di clipping, ci occupiamo di oggetti che sono al di fuori del volume della vista, mentre in caso di rimozione della superficie nascosta ci occupiamo di oggetti che sono all'interno del volume. Ora quando gli oggetti sono all'interno del volume, chiaramente, non possiamo applicare l'algoritmo di clipping perché gli algoritmi di clipping sono progettati per rilevare gli oggetti che sono esterni, totalmente o parzialmente.
Vediamo un esempio. Considera questa immagine. Qui ci sono due oggetti; questo è quello e questo cilindro è l'altro. Ora idealmente, qui c'è una superficie. Per una generazione di immagini realistiche, se guardiamo a questo oggetto da questa direzione allora idealmente, non dovremmo essere in grado di vedere questa superficie rappresentata dalla linea di confine punteggiata, questa superficie. Quindi se il visualizzatore si trova a questo punto qui allora questo oggetto A superficie, che è dietro questo oggetto B non dovrebbe essere visibile al visualizzatore.
Quindi prima di rendere l'immagine per avere l'effetto realistico, dovremmo essere in grado di eliminare questa superficie dall'immagine resa.
Qui in questo caso non possiamo usare clipping, perché qui stiamo ipotizzando che entrambi gli oggetti siano all'interno del volume della vista. Quindi gli algoritmi di clipping non sono applicabili. Quello che richiediamo è un algoritmo diverso o un diverso insieme di algoritmi. Ora, questi algoritmi sono conosciuti collettivamente come metodi di rimozione della superficie nascosti o in alternativa, metodi di rilevamento della superficie visibili.
Quindi per notare quale clipping, cosa facciamo? Cerchiamo di rimuovere oggetti che sono parzialmente o completamente al di fuori del volume della vista. Con la rimozione della superficie nascosta, cosa facciamo? Cerchiamo di rimuovere superfici o oggetti oggetto, che sono all'interno del volume della vista ma che sono bloccati da vista a causa della presenza di altri oggetti o superfici rispetto ad una particolare posizione di visualizzazione.
Quindi in caso di superficie nascosta, assumiamo una direzione di visualizzazione specifica. Perché una superficie nascosta da una determinata posizione di visualizzazione potrebbe non essere così se la stiamo guardando da un'altra direzione. Quindi, rispetto alla posizione di visualizzazione, possiamo stabilire se la superficie o un oggetto è nascosto o meno.
Ora, prima di entrare nei dettagli dei metodi per la rimozione della superficie nascosta, dovremmo tenere a mente che ci sono due ipotesi che faremo. La prima è che useremo un sistema di coordinate destrorsa e supponiamo che il visore guardi la scena lungo la direzione negativa Z. In secondo luogo, gli oggetti che ci sono in scena hanno superfici poligonali, quindi tutte le superfici oggetto sono poligonali. Queste due ipotesi che faremo per spiegare i metodi nascosti di rimozione della superficie.
Ora passiamo nei dettagli dei metodi che ci sono per rilevare ed eliminare le superfici nascoste.
Ora ci sono molti metodi, tutti questi metodi possiamo sostanzialmente dividere in due tipi. Uno è il metodo dello spazio oggetti, il secondo è il metodo spaziale dell'immagine. Allora qual è l'idea alla base di questi metodi che cerchiamo di capire?
In caso di metodo dello spazio oggetti ciò che facciamo, confrontiamo oggetti o parti degli oggetti l'uno all'altro per determinare le superfici visibili. Così qui ci occupiamo di oggetti a livello di 3D.
E l'approccio generale seguito per eseguire la rimozione della superficie nascosta con metodi di spazio oggetti è costituito da due stadi sostanzialmente. Così per ogni oggetto in scena quello che facciamo è prima di tutto determiniamo quelle parti dell'oggetto la cui vista è sbloccata da altre parti o da qualsiasi altro oggetto rispetto alla specifica di visualizzazione.
Quindi la prima fase è quella di determinare le parti che sono nascoste rispetto alla posizione di visualizzazione. E poi in seconda posizione, rendiamo le parti che non sono nascoste. Quindi, essenzialmente quelle parti che non sono ostruite con il colore dell'oggetto. Quindi questi due sono i passi generali che vengono eseguiti in qualsiasi metodo dello spazio oggetti e cioè, la prima fase è quella di determinare le superfici che non sono nascoste e in seconda fase renderemo quelle superfici o parti degli oggetti con il particolare colore.
Da qui ci occupiamo di oggetti, quindi essenzialmente questi metodi funzionano prima della proiezione, a livello di oggetto 3D. Ricordate che una volta eseguita la proiezione, gli oggetti vengono trasformati in una descrizione 2D. Quindi non possiamo avere queste caratteristiche 3D.
Quali sono quindi i vantaggi? C'è un vantaggio. Così questi metodi di spazio oggetti forniscono un metodo e un lavoro indipendenti dal dispositivo per qualsiasi risoluzione dello schermo, ma ha anche alcuni inconvenienti e cioè, la determinazione di queste superfici che sono nascoste o non nascoste è intensiva di calcolo. In secondo luogo, a seconda della complessità della scena e anche delle risorse disponibili.
Questi metodi possono addirittura diventare infeasisi perché sono intensi di calcolo e se le risorse non sono sufficienti allora potremmo non poterli implementare affatto.
Di solito, tali metodi sono adatti per semplici scene con piccoli oggetti. Quindi i metodi dello spazio oggetti sono meglio applicabili quando la scena è semplice e avere piccoli oggetti.
In caso di metodo space image cosa succede? Così come suggerisce il nome, il rilevamento e il rendering avviene a livello di immagine che significa dopo le proiezioni. Ecco quindi che la visibilità è decisa punto - punto a ogni posizione di pixel sul piano di proiezione. Quindi qui, non ci occupiamo più nello spazio 3D, ci occupiamo di 2D piano di proiezione a livello di pixel.
Anche in questo caso ci sono due passi nell'approccio generale. Quindi per ogni pixel sullo schermo cosa facciamo? Stabiliamo per la prima volta gli oggetti più vicini al visualizzatore e sono perforati dal proiettore attraverso il pixel. Quindi essenzialmente gli oggetti più vicini che vengono proiettati a quel punto. In secondo luogo, il secondo passo è quello di disegnare il pixel con il colore dell'oggetto.
Così nella prima fase stabiliamo quale sia l'oggetto più vicino proiettato sul pixel, e nella seconda fase assegniamo il colore dei pixel come colore oggetto e che facciamo per ogni pixel sullo schermo. Quindi per confrontare prima quello che stavamo facendo? In precedenza lo facevamo per ogni superficie qui lo facciamo per ogni pixel.
Chiaramente i metodi funzionano dopo che le superfici vengono proiettate e rasterizzate che significa mappate alla griglia di pixel, diversamente dal precedente caso in cui eravamo nel dominio 3D.
Qui i calcoli sono di solito meno rispetto ai metodi dello spazio oggetti. Tuttavia, il metodo dipende dalla risoluzione del display perché stiamo facendo i calcoli per ogni pixel. Quindi se c'è un cambiamento di risoluzione allora richiediamo ri - calcolo dei colori dei pixel. Così questo è il sopralluogo.
Così sostanzialmente ci sono questi due metodi, i metodi dello spazio oggetti e i metodi di spazio delle immagini. In seguito, vedremo esempi di ognuno di questi metodi che sono molto popolari. Ma prima di entrare in questo modo cerchiamo di parlare di alcune proprietà che in realtà sono sfruttate per arrivare a metodi efficienti per la rilevazione e la rimozione delle superfici nascoste.
Quindi ci sono molte tali proprietà. Collettivamente, queste proprietà sono chiamate proprietà di coerenza, utilizzate per ridurre i calcoli nei metodi di rimozione delle superfici nascoste. Come abbiamo già parlato, questi metodi sono computazionalmente intensi. Quindi se usiamo queste proprietà coerenti allora una certa quantità di elaborazioni può essere ridotta come vedremo più avanti.
Ora queste proprietà sono essenzialmente legate ad alcune similitudini tra immagini o parti delle immagini e se eseguiamo calcolo per una parte poi a causa di queste proprietà, possiamo applicare i risultati su altre parti ed è così che si riduce il calcolo.
Così essenzialmente sfruttiamo le similitudini locali che significa utilizzare dei risultati che abbiamo calcolato per una parte di una scena o un'immagine per le altre parti vicine. Così eseguiamo il calcolo per una parte e usiamo il risultato per altra parte senza ripetere lo stesso calcolo e in tal modo riduamo una certa quantità di calcolo.
Ora, ci sono molte proprietà di coerenza tali; sostanzialmente, di sei tipi, coerenza oggetto, coerenza viso, coerenza edge, coerenza delle linee di scansione, coerenza di profondità e coerenza di frame. Facciamo presto una discussione su ognuno di questi per una migliore comprensione anche se, non andremo in discussioni dettagliate e come sono legate a diversi metodi.
Prima la coerenza degli oggetti, cosa racconta? Qui, verifichiamo la visibilità di un oggetto rispetto ad un altro oggetto comparando i suoi solidi circoscrivi, che sono in molti casi, di forme semplici, come sfere o cubo. Quindi, solo se i solidi si sovrappongono andiamo per un'ulteriore lavorazione. Se non c'è sovrapposizione che significa che non ci sono superfici nascoste in modo da non dover effettuare alcuna elaborazione per ulteriori. Quindi questo è semplice modo di eliminare lotti di elaborazioni a causa di questa proprietà di coerenza oggetto.
Prossimo, vieni ad affrontare la coerenza. Qui le proprietà superficiali calcolate per una parte di una superficie possono essere applicate a parti adiacenti della stessa superficie che è quella che è l'implicazione di questa proprietà di coerenza viso. Ad esempio, se la superficie è piccola poi possiamo supporre che la superficie sia invisibile a un visualizzatore se una parte di esso invisibile. Quindi non abbiamo bisogno di verificare l'invisibilità per ogni parte. Così la controlliamo per una parte e poi diciamo semplicemente che anche altre parti saranno invisibili se quella parte è invisibile.
Poi terzo è la coerenza edge. Qui, questa proprietà indica la visibilità di un bordo cambia solo quando attraversa un altro bordo. Se un segmento di un bordo non intersecabile è visibile, stabiliamo senza ulteriore calcolo anche l'intero bordo. Così la coerenza edge ci dice che ci sarà un cambio di visibilità solo se il bordo interseca un altro bordo. In altre parole, se un segmento di un bordo è visibile e il bordo non si interseca con altri spigoli che significa possiamo dire che anche l'intero bordo è visibile.
Poi arriva la coerenza della linea di scansione, cosa racconta? Indica o implica un segmento di linea o di superficie visibile in una sola linea di scansione è probabile anche nelle linee di scansione adiacenti e non è necessario eseguire queste elaborazioni di visibilità per ogni linea di scansione. Quindi lo facciamo per una linea di scansione e applichiamo il risultato per le linee di scansione adiacenti.
La prossima è la coerenza di profondità, che ci dice che profondità di parti adiacenti della stessa superficie sono simili. Non c'è molto cambiamento di profondità nelle parti adiacenti di una superficie. Queste informazioni, a loro volta, ci aiutano a determinare la visibilità delle parti adiacenti di una superficie senza troppo calcolo.
Poi la coerenza di cornice, che ci dice che immagini di stessa scena in punti successivi nel tempo rischiano di essere simili nonostante i piccoli cambiamenti in oggetti e punti di vista, tranne che vicino ai bordi degli oggetti mobili. Il che significa che le elaborazioni di visibilità non devono essere eseguite per ogni scena resa sullo schermo. Quindi la coerenza di cornice è legata al cambiamento di scena. Precedenti proprietà di coerenza erano legate a immagini statiche qui si parla di cambiamento dinamico nelle immagini e basato su questa proprietà di coerenza possiamo concludere che la visibilità può essere determinata senza calcolarla di nuovo e di nuovo per ogni scena.
Ecco quindi in breve le sei proprietà di coerenza. Le prime cinque proprietà sono relative ad immagini statiche l'ultima proprietà può essere utilizzata per le animazioni di rendering, che comunque non fanno parte delle nostre lezioni qui e i metodi nascosti di rimozione della superficie fanno uso di queste proprietà per ridurre i calcoli. Ora passiamo nei dettagli di tali metodi.
Partiamo quindi con un metodo semplice che viene richiamato metodo di eliminazione del viso.
Che cosa è questo metodo? Questo è in realtà il modo più semplice per rimuovere un gran numero di superfici nascoste per una scena composta da poliedroni. Quindi qui, ipotizziamo che ogni oggetto sia un poliedro, e utilizzando l'eliminazione del volto posteriore possiamo rimuovere un gran numero di superfici nascoste. L'obiettivo è quello di rilevare ed eliminare le superfici che si trovano sul lato posteriore degli oggetti rispetto al visualizzatore.
Così quando una superficie è sul retro di un oggetto rispetto a un determinato visualizzatore chiaramente, durante il rendering che la superficie posteriore non deve essere mostrata. Con il metodo di eliminazione del viso indietro possiamo rilevare su quelle superfici posteriori e poi rimuoverle da ulteriore considerazione durante il rendering.
I passi sono molto semplici per questo particolare metodo. Quindi ci sono tre passi. Nel primo passo, stabiliamo un vettore normale per ogni superficie N rappresentata in termini di quantità scalari a, b, c lungo i tre assi. Presumo qui che tutti sappiate come calcolare il vettore normale per una determinata superficie, se non poi si può fare riferimento a qualsiasi libro su algebra vettoriale, libro di base; è un processo molto semplice e non discuterò qui i dettagli.
Ora, una volta che il normale è deciso controlliamo questa componente Z. Se questo componente Z è inferiore a 0, il componente scalare, allora eliminiamo quella particolare superficie perché quando la componente Z è inferiore a 0, la superficie è di schiena, mentre quando è uguale a 0 il vettore di visualizzazione sfiora la superficie. In quel caso, inoltre, lo consideriamo una faccia indietro.
Ora, se c è maggiore di 0 poi conserviamo la superficie non è la faccia posteriore e eseguiamo questi passi uno e due per tutte le superfici in loop. Così come potete vedere, è un metodo molto semplice che prendiamo semplicemente una superficie alla volta, calcola la sua superficie normale e controlliamo la componente Z la componente scalare di Z. Se è inferiore a 0 allora eliminiamo la superficie altrimenti la conserviamo e lo facciamo per tutte le superfici.
Consideriamo un esempio. Supponga che questo sia il nostro oggetto, contiene quattro superfici ACB, ADB, DCB e ADC; quattro superfici ci sono. Quindi per ognuna di queste superfici, eseguiamo il metodo di eliminazione del viso indietro. Per ognuna di queste superfici calcoliamo il componente Z della superficie normale come indicato nei passi precedenti.
Facciamolo per le superfici. Per ACB, la componente z del normale è di -12, quindi è inferiore a 0. Quindi ACB non è visibile come si può vedere da questo lato ACB è sul retro della superficie.
Per ADB, DCB e ADC i componenti z del normale sono rispettivamente -4, 4 e 2. Possiamo quindi vedere che per DCB e ADC il componente z è maggiore di 0, quindi queste sono superfici visibili. Ma per l'ADB è meno di 0 di nuovo quindi non è una superficie visibile. Quindi questo è il modo semplice di farlo.
E si deve notare qui che ci occupiamo di descrizione 3D degli oggetti nel sistema di coordinate della vista, quindi funziona sulle superfici, quindi è un metodo space object. In pratica, usando questo metodo molto semplice, possiamo eliminare circa la metà di tutte le superfici in una scena senza ulteriori calcoli complicati.
Tuttavia, c'è un problema con questo metodo. Questo metodo non considera oscuramento di una superficie da altri oggetti in scena. Quindi cosa abbiamo fatto? Abbiamo sostanzialmente eliminato i volti di un oggetto. Ora qui, la faccia posteriore è oscurata dalla superficie dello stesso oggetto. Se una superficie non è una faccia posteriore ma è oscurata dalla superficie di qualche altro oggetto allora quelle superfici non possono essere determinate o rilevate utilizzando il metodo di eliminazione del volto posteriore e richiediamo altri algoritmi.
Tuttavia, quegli altri algoritmi sono utili per il rilevamento di una superficie oscurata da altre superfici oggetto e possiamo utilizzare quegli algoritmi insieme a questo metodo.
Discutiamone uno di quei metodi che è algoritmo di profondità buffer o anche noto come algoritmo di buffer Z.
Ora, questo algoritmo è un metodo space space. Questo significa che qui eseguiamo confronti a livello di pixel. Quindi ipotizziamo qui che già le superfici sono proiettate sulla griglia dei pixel e poi stiamo confrontando la distanza della superficie dalla posizione del visualizzatore.
In precedenza abbiamo accennato che dopo aver proietto le informazioni di profondità si perde. Tuttavia, richiediamo qui le informazioni di profondità per confrontare la distanza della superficie da un visualizzatore. Quindi immagazziniamo quell' informazione di profondità anche dopo la proiezione e assumiamo uno storage extra, che ha questa informazione di profondità, che viene definito buffer di profondità o buffer Z. Qui, la dimensione di questo buffer è uguale al buffer del frame. Questo significa che c'è una memoria per ogni pixel in questo buffer.
Un'altra supposizione che facciamo è che ci occupiamo di volumi canonici. La profondità di qualsiasi punto non può superare la gamma normalizzata. Quindi abbiamo già una gamma normalizzata del volume e la profondità non può superare quella gamma che stiamo assumendo. Se supponiamo che poi in realtà possiamo fissare la dimensione del buffer di profondità o il numero di bit per pixel. Altrimenti, se consentiamo una profondità illimitata allora non sappiamo quanti bit da tenere e che possono creare problemi di implementazione. Quindi andiamo per alcune considerazioni standardizzate.
Ecco, questo è l'algoritmo, l'algoritmo di profondità buffer mostrato qui. L'input è il buffer di profondità che viene inizializzato a 1; poi abbiamo il frame buffer, che viene inizializzato sul colore di sfondo; elenco delle superfici e elenco dei punti proiettati per ogni superficie; quindi tutti questi sono input. E l'output è questo buffer di profondità e frame buffer con valori appropriati. Questo significa che il valore del buffer di profondità continuerà a cambiare e frame buffer conterrà i valori finali alla fine dell'algoritmo.
Quindi cosa facciamo? Per ogni superficie in questa lista di superficie, eseguiamo alcuni passaggi. Ora, per ogni superficie, abbiamo le posizioni dei pixel proiettati. Quindi per ogni posizione pixel proiettata della superficie i, j a partire dalla posizione pixel più proiettata dall'alto, cosa facciamo? Calcoliamo la profondità denotata da d del punto proiettato sulla superficie e poi la confrontiamo con profondità già immagazzinata di quel punto.
Se d è inferiore a quello che è già memorizzato nel buffer di profondità nella posizione corrispondente allora aggiortiamo queste informazioni tampone di profondità e poi aggiortiamo le informazioni sul buffer del frame con il colore della superficie particolare e questo continuiamo per tutti i pixel per quella superficie proiettata e lo facciamo per tutte le superfici. Ora la tappa cruciale qui è il calcolo della profondità, come facciamo?
Possiamo farlo in modo iterativo. Vediamo come.
Considera questo scenario qui. Questo è un modo illustrativo per capire questo metodo iterativo. Stiamo considerando questa superficie triangolare, che dopo la proiezione assomigli a qualcosa del genere. Ora, l'equazione di superficie sappiamo quale possiamo rappresentare come ax + by + cz + d = 0. Anche in questo caso, se non si è a conoscenza di questo, si può fare riferimento ai libri di testo di base su vettori e piani.
Ora data questa equazione di superficie, possiamo scoprire questi valori z in termini di b c come qui mostrato. E z value è la profondità di quel punto particolare così questa è la profondità di qualsiasi punto sulla superficie. Ora, stiamo assumendo volume di vista canonico. Questo significa che tutte le proiezioni sono proiezioni parallele. Quindi la proiezione è semplice, se un punto è x, y, z poi dopo la proiezione, diventa x, ci abbassiamo la componente z. Quindi questa è la nostra supposizione.
Ora consideriamo uno proiettato pixel i, j della superficie particolare. Così x è io, y è j. Ora, la profondità del punto superficie originale z è poi data da questa espressione dove sostituiamo x e y con i e j a, b, c e d sono costanti.
Ora, mentre progrediamo lungo la stessa linea di scansione, diciamo di considerare questo punto e questo punto. Il prossimo pixel è a i + 1, e j. Ora, la profondità del corrispondente punto di superficie alla successiva posizione di pixel è data da questa espressione dove sostituiamo i con i + 1. Dopo l'espansione e la risistemazione, possiamo ottenere questa forma.
Ora questa parte, sappiamo già essere la profondità del punto i, j. Quindi possiamo semplicemente dire che la profondità di z è (z - a/c) e qui si può vedere questo è un termine costante. Quindi per punti successivi possiamo calcolare la profondità semplicemente sottraendo un termine costante dalla profondità precedente che è il metodo iterativo.
Quindi che sia lungo una linea di scansione. Cosa succede tra le linee di scansione? Un metodo iterativo simile che possiamo formulare. Ora, supponiamo il punto x, y su un bordo di una superficie proiettata, qui. Ora nella prossima linea di scansione, x diventa (x - 1/m) in questo caso, e il valore y diventa y minus 1; m è la pendenza della linea edge.
Poi possiamo calcolare nuova profondità in questo nuovo punto come mostrato qui e se espandiamo e riorganizziamo quello che otterremo? Questa nuova profondità in termini della profondità precedente e di un termine costante. Quindi ancora, vediamo che attraverso le linee di scansione possiamo calcolare la profondità ai bordi aggiungendo un termine costante alla profondità precedente, e poi lungo la linea di scansione, possiamo continuare sottraendo un termine costante dalla profondità precedente.
Ecco quindi il modo iterativo di profondità di calcolo e questo metodo che seguiamo nell'algoritmo Z - buffer per compattarsi in profondità in un determinato punto. Cerchiamo di capire questo algoritmo con un esempio illustrativo.
Supponiamo che ci siano due superfici triangolari s1 e s2. Chiaramente sono nel volume della vista. Ora, i vertici di s1 sono indicati come questi tre vertici, s2 è dato anche come questi tre vertici. Come prima di ipotizziamo una proiezione parallela a causa della trasformazione del volume della vista canonica e anche, possiamo ricavare punti di proiezione o i vertici proiettati di s1 e s2 sul piano di vista per essere denotati da questi vertici qui mostrati, che essenzialmente possiamo ottenere semplicemente rilasciando il componente z. Ecco, questa è la situazione mostrata in questa figura.
Ora, ci viene dato un punto (3, 1) e vogliamo determinare il colore a questo punto. Da notare che questo punto è parte di entrambe le superfici, quindi quale colore di superficie dovrebbe ottenere, possiamo determinare utilizzando l'algoritmo. Ora suppamiamo che cl1 e cl2 siano i colori di s1 e s2 e bg è il colore di sfondo.
Ora, inizialmente, i valori del buffer di profondità sono impostati ad un valore molto elevato e si dice che i valori del buffer di frame siano di colore di fondo e poi seguiamo i passi dell'algoritmo, elaboriamo le superfici una alla volta nell'ordine s1 seguito da s2.
Ora iniziamo con s1, cosa succede? Dai vertici indicati possiamo determinare l'equazione di superficie s1 da x + y + z-6 = 0. Poi stabiliamo la profondità del pixel di superficie più a sinistra sulla linea di scansione toppi che è pixel (0, 6) qui, che è z to be 0.
Ora, questo è l'unico punto sulla linea di scansione toppi come si può vedere nella figura, poi ci spostiamo sulla successiva linea di scansione sottostante che è y=5. E in questo modo utilizzando il metodo iterativo, stabiliamo la profondità del pixel più a sinistra su questa linea di scansione per essere, usando questa espressione ad essere 1 perché qui m è altissimo, infinito. E quindi, l'equazione di superficie è questa.
Poi l'algoritmo procede al calcolo della profondità e determinazione del colore lungo y= 5 fino al bordo destro. A quel punto si passa alla successiva linea di scansione in basso che è y= 4 qui. Ora, possiamo saltare tutti questi passi e possiamo andare direttamente a y= 1, questa linea su cui si trova il punto di interesse.
Ora, seguendo questa procedura iterativa che abbiamo delineato in precedenza attraverso le linee di scansione, compattiamo prima la profondità del punto più a sinistra qui come z=5. Saltiamo quei passi, puoi fare i calcoli da solo e scoprilo. Poi ci spostiamo lungo questa linea di scansione quando questa direzione. Così andiamo al punto successivo qui, poi qui, e così via fino a questo punto, (3, 1), e calcoliamo che a questo punto z sia 2.
Ora, questo valore di profondità è inferiore al valore già memorizzato che è infinito. Così abbiamo impostato questo valore nella posizione del buffer di profondità corrispondente e quindi reimpostare il valore del buffer del frame da sfondo al colore della superficie 1.
Poi la nostra elaborazione continua per tutti i punti, ma quelle qui non sono molto rilevanti perché siamo preoccupati solo con questo punto, quindi salteremo quelle elaborazioni. Così una volta che l'elaborazione si completa per s1 per tutti i punti proiettati, andiamo a s2 e eseguiamo passi iterativi simili. E poi, scopriamo il colore in quel punto particolare per s2 e poi eseguiamo il confronto e assegniamo il colore.
Così saltiamo qui tutti gli altri calcoli e viene lasciato come esercizio per voi per completare i calcoli. Ecco quindi l'idea alla base dell'algoritmo del buffer di profondità o dell'algoritmo di buffer Z.
Ora un punto c'è. Con questo particolare algoritmo, un pixel può avere un colore di superficie. Quindi date più superfici, un pixel alla volta può avere solo uno di quei colori di superficie. Da qualsiasi posizione di visualizzazione, questo significa che è visibile una sola superficie. Quindi questa situazione è accettabile se ci occupiamo di superfici opache.
Se le superfici non sono opache, se sono trasparenti allora sicuramente, arriviamo a vedere più superfici che non sono possibili con questo particolare algoritmo di buffer di profondità. In caso di superfici trasparenti, il colore dei pixel è una combinazione del colore di superficie più il contributo dalle superfici alle spalle e il nostro buffer di profondità non funzionerà in quel caso perché abbiamo una sola posizione per memorizzare il valore di profondità per ogni pixel. Quindi non possiamo memorizzare tutti i contributi di superficie al valore del colore.
Esiste un altro metodo chiamato A - buffer metodo che può essere utilizzato per superare questa particolare limitazione. Non entreremo nei dettagli di questo metodo, ci si può riferire al materiale, materiale di lettura. Ecco, insomma, quello che possiamo fare con metodo tampone di profondità.
Per ricapitolarci, oggi abbiamo appreso dell'idea di base della rimozione della superficie nascosta. Abbiamo appreso delle diverse proprietà che possono essere utilizzate per ridurre i calcoli. Poi abbiamo appreso di due ampie classi di algoritmi di rimozione della superficie nascosta, uno è il metodo dello spazio oggetti, uno è il metodo dello spazio delle immagini. Abbiamo appreso di un metodo space object che è il metodo di eliminazione della schiena e abbiamo anche appreso di un metodo space space che è l'algoritmo di profondità buffer o algoritmo Z - buffer.
Qualunque cosa abbiamo discusso oggi si può trovare in questo libro, ci si può riferire al capitolo 8, sezioni da 8,1 a 8,4. E se volete saperne di più su un algoritmo di buffer allora potete anche controllare la sezione 8,5. Questo è tutto per oggi. Grazie e arrivederci.