focus trasformazione di proiezione

focus trasformazione di proiezione

RIPASSO
notion image
 

2 MODI PER FARE TRASFORMAZIONE DI PROIEZIONE

notion image
metodo ortografico
  • POCO REALISTICO: nn esprime la profondità pk la azzera, NON ridimensiona gli oggetti in base ai punti di fuga
    • notion image
metodo prospettico
premessa
notion image
notion image
notion image
  • 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
notion image
  • spiegazione
    • notion image
  • 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
    • notion image
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
  1. moltiplico per una matrice di proiezione prospettica
    1. non è affine
    2. ricordare come funziona la moltiplicazione tra matrici
      1. notion image
  1. 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)
    1. 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)
  1. risultato desiderato (come qui)
    1. moltiplico per P
      1. notion image
    2. divido per w
      1. notion image
alternativa equivalente
notion image
caratteristiche
  • il valore di d nella formula influenza l’effetto finale
    • notion image
  • normalized device coordinates = coordinate spazio clip
    • notion image
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
notion image
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à:
notion image
  • 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
notion image
  • 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:
      • notion image
    • in queso modo ottengo:
      • notion image
      • 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)
notion image
nuovo spazio: spazio schermo
Dopo lo spazio clip (clip space) c'è un'altra conversione nello spazio viewport (o screen space).
considerazioni sulla conversione
notion image
PK MAPPARE LA Z?
  1. 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
  1. serve anche per sapere cosa si vede davanti e cosa si nasconde dietro.
    1. Z-buffer (o Depth Buffer)
      • Il Z-buffer tiene traccia della profondità di ogni pixel disegnato sullo schermo.
      • Quando la GPU vuole disegnare un nuovo pixel:
          1. Controlla la sua profondità (depth).
          1. Confronta con quella già salvata nello Z-buffer.
          1. Se il nuovo pixel è più vicino (depth minore), lo disegna e aggiorna il buffer.
          1. Se è più lontano, viene scartato.
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:
notion image
spiegazione del prof
notion image
  • confronto limiti spazio clip e spazio schermo
    • notion image
  • 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
    • notion image