RIPASSO
2 MODI PER FARE TRASFORMAZIONE DI PROIEZIONE
metodo ortografico
- POCO REALISTICO: nn esprime la profondità pk la azzera, NON ridimensiona gli oggetti in base ai punti di fuga
metodo prospettico
premessa
- nelle trasformazioni seguenti saranno assunti w ed h = 2, per avere le dimensioni standard dello spazio clip
passaggio da spazio vista a spazio clip
spiegazione semplice
- spiegazione
- le coordinate omogenee del punto, moltiplicano il valore 1 per lo scalare, ciò non influenza le regole viste finora. E’ solo una forma non canonica, notare che la quarta coordinata deve essere fattore moltiplicativo delle prime 3 e diverso da 0
PROBLEMA
- in sintesi devo moltiplicare per uno scalare, ma
- nel campo delle trasformazioni vogliamo usare matrici 4x4
- inoltre vogliamo coordinate omogenee con w in forma canonica
SOLUZIONE
- moltiplico per una matrice di proiezione prospettica
- non è affine
- ricordare come funziona la moltiplicazione tra matrici
- poi divido per w = quarta coordinata del vettore (pk se faccio i calcoli noto che per arrivare alla forma vista in precedenza, la matrice di proiezione prospettica nn è sufficiente, è solo un calcolo intermedio per poi arrivare alla forma finale mantenendo w in forma canonica)
- se faccio i calcoli noto che w = -z/d e le prime 3 coordinate non sono state toccate (ovviamente nn ho la trasformazione finale desiderata)
- risultato desiderato (come qui)
- moltiplico per P
- divido per w
alternativa equivalente
caratteristiche
- il valore di d nella formula influenza l’effetto finale
- normalized device coordinates = coordinate spazio clip
problema di questo metodo (z costante)
PROBLEMA
il valore di z risulta costante. Formalmente è corretto
(dato che il punto finisce sempre sul piano immagine) ma perdiamo una dimensione inutilmente
(dato che il punto finisce sempre sul piano immagine) ma perdiamo una dimensione inutilmente
SOLUZIONE DISCORSIVA
nel passaggio da spazio mondo a spazio vista, voglio modificare P(matrice di proiezione prospettica ) in modo che la 𝑧 in output non sia costante (ma dipenda della 𝑧 in input). Al fine di avere questo effetto prospettico in profondità:
- z_near/far sono 2 parametri che definiscono lo spazio clip e che scelgo io
- ci sono come 2 clipping plane = 2 piani virtuali che delimitano lo spazio vista, non clip. Il concetto di clippare è nato nello spazio clip, ma anche la vista deve porre dei limiti, cambia solo la borma dello spazio tridimensionale limite, non è un cubo ma è una piramide tronca (frustum) a base variabile
SOLUZIONE CON MATEMATICA SIMBOLICA
- fare i calcoli personalmente aiuta a consolidare la semantica di quello che succede.
- A e B modulano z in base al valore di z in input e valgono:
- in queso modo ottengo:
- nel momento in cui devo normalizzare in forma canonica, io divido per w=-z e così facendo modulo la coordinata z
mareice finale (capire il significato della matrice è di dovere)
nuovo spazio: spazio schermo
Dopo lo spazio clip (clip space) c'è un'altra conversione nello spazio viewport (o screen space).
considerazioni sulla conversione
PK MAPPARE LA Z?
- La coordinata Z serve anche a definire la dimensione apparente di un oggetto in profondità → e fin qui lo sappiamo già pk è lo scopo della trasformazione prospettica
- serve anche per sapere cosa si vede davanti e cosa si nasconde dietro.
- Il Z-buffer tiene traccia della profondità di ogni pixel disegnato sullo schermo.
- Quando la GPU vuole disegnare un nuovo pixel:
- Controlla la sua profondità (depth).
- Confronta con quella già salvata nello Z-buffer.
- Se il nuovo pixel è più vicino (depth minore), lo disegna e aggiorna il buffer.
- Se è più lontano, viene scartato.
Z-buffer (o Depth Buffer)
problema di distorsione
Essendo lo spazio clip cubico e lo spazio viewport di dimensione variabile (dipende dallo schermo fisico), introduco un nuovo parametro per evitare distorisioni:
spiegazione del prof
- confronto limiti spazio clip e spazio schermo
- la a = aspect ratio è il rapporto larghezza/altezza dello schermo, resX e resY sono delle coordinate
- SOMMARIO: importante saper definire il significato della matrice, spiegata appunto per arrivare fino a qui