1. Architettura Dei Sistemi Grafici

Il corso inizia delineando l’architettura hardware e software necessaria per la grafica computerizzata.

Architettura Hardware Al centro del sistema grafico vi è la comunicazione tra le periferiche di input (mouse, tastiera), il processore centrale (CPU) e la memoria di sistema con la scheda grafica dedicata. La Graphics Board (scheda grafica) è composta da elementi chiave:

  • Graphic Memory e Frame Buffer: Una porzione di memoria dedicata specificamente alla memorizzazione dell’immagine come insieme di pixel da mostrare a video.

  • Graphic Processing Unit (GPU): L’unità di elaborazione grafica che gestisce i calcoli.

  • Display: Il segnale video viene inviato al monitor (raster display).

Il Frame Buffer è caratterizzato da due parametri fondamentali:

  • Risoluzione: Il numero totale di pixel (es. range tipici da a ).

  • Profondità: Il numero di bit per pixel (tipicamente da 1 a 32 bit), che determina la quantità di colori o sfumature rappresentabili. La struttura a matrice del frame buffer riproduce la griglia fisica del display.

Architettura Software

L’interazione software è strutturata a livelli, partendo dall’utente fino all’hardware:

  1. Dispositivi di input.

  2. Sistema Operativo.

  3. Window System.

  4. Applicazione.

  5. API Grafica: L’interfaccia che permette all’applicazione di disegnare.

  6. Frame Buffer e Raster Display.


2. Fondamenti Della Grafica 3D

La grafica 3D si occupa di creare e manipolare scene in un mondo virtuale.

Concetti Chiave

  • Scena: Esiste indipendentemente dalla visualizzazione ed è composta da oggetti geometrici con attributi pittorici, immagini e testo.

  • Osservatore (Viewer): Permette di guardare la scena da un punto di vista specifico e generare l’immagine corrispondente. Questo processo è chiamato Rendering.

  • Interazione e Animazione: È possibile interagire con gli oggetti o animare la scena modificando il punto di vista, la posizione o la forma degli oggetti.

Definizione degli Oggetti e della Scena Gli oggetti sintetici sono rappresentazioni digitali di oggetti reali. Si definiscono tramite:

  • Primitive Geometriche: Forme base fornite dalle API come punti, spezzate, poligoni e mesh (insiemi di poligoni) che approssimano geometrie complesse.

  • Caratteristiche Pittoriche: Attributi come colore, spessore, tratteggio e texture (trama).

  • Posizionamento: Ogni oggetto è definito nel proprio sistema di coordinate e trasportato nel sistema della scena tramite trasformazioni geometriche di modellazione.

  • Primitive Raster: Pixel e bitmap che, a differenza delle primitive geometriche, sono intrinsecamente “piatte” e perpendicolari alla vista.


3. L’Osservatore Virtuale (Camera)

Per generare un’immagine, è necessario definire un osservatore virtuale, modellato sul concetto di macchina fotografica.

Modello Pin-hole Camera Il modello astratto utilizzato è la pin-hole camera (camera oscura con foro stenopeico), dove i raggi di luce passano per un foro infinitesimo (centro di proiezione) e formano un’immagine capovolta sul fondo.

  • Nelle macchine reali si usa una lente per aumentare la luminosità, ma ciò introduce profondità di campo limitata e distorsioni; il modello pin-hole ha invece fuoco infinito e nessuna distorsione.

Parametri della Camera Virtuale

Per definire la vista si specificano:

  1. Posizione (COP - Center of Projection): Il punto da cui si guarda (centro di proiezione).

  2. Direzione di vista: Verso dove si guarda.

  3. Distanza focale (): Determina l’ampiezza della scena inquadrata (zoom).

  4. Piano Immagine: Per convenzione grafica, l’immagine si forma su un piano virtuale posto davanti alla camera a distanza , in modo che l’immagine risulti “ben orientata” (non capovolta).

Volume di Vista (View Volume) La camera definisce un volume di vista (generalmente una piramide infinita). Per praticità, questo volume viene delimitato da due piani (Front/Near e Back/Far clipping planes), trasformandolo in un tronco di piramide.

  • Proiezione Ortografica: Se la distanza focale è infinita, il volume di vista diventa un parallelepipedo e la proiezione è ortogonale (i raggi sono paralleli).

4. La Pipeline Di Rendering

Una volta definiti scena e osservatore, il renderer esegue una sequenza di operazioni standardizzata, nota come pipeline, per generare l’immagine finale. L’elaborazione avviene spesso “per primitiva” (object order).

Stadi della Pipeline

  1. Transformer: I vertici delle primitive, definiti nel sistema di coordinate locale dell’oggetto, vengono trasformati nel sistema di coordinate della scena (World Coordinate System) tramite trasformazioni geometriche.

  2. Clipper: Determina cosa è visibile. Le parti di primitive fuori dal volume di vista vengono scartate. Qui si decide anche il colore dei vertici.

  3. Projector: I vertici visibili vengono proiettati dal volume 3D sull’immagine virtuale 2D. Le coordinate proiettate corrispondono a posizioni nel frame buffer.

  4. Rasterizer: Trova tutti i pixel del frame buffer coperti dalla primitiva geometrica (operazione di rasterizzazione). I pixel generati sono detti “frammenti” e vengono colorati interpolando i colori dei vertici.

  5. Per-fragment Operations: Ultimo stadio che determina il colore finale del pixel, considerando interazioni tra primitive e altri effetti.

La pipeline permette un forte parallelismo hardware, sia eseguendo diversi stadi su primitive diverse contemporaneamente, sia usando pipeline multiple in parallelo.


5. Coordinate Omogenee E Trasformazioni Affini

Per gestire matematicamente le trasformazioni (traslazioni, rotazioni, scalamenti) in modo uniforme, si utilizzano le coordinate omogenee.

Sistemi di Riferimento Un sistema di riferimento è definito da un’origine e una base di tre vettori .

  • I vettori hanno coordinate omogenee con quarta componente 0: .

  • I punti hanno coordinate omogenee con quarta componente 1: . Questa notazione permette di rappresentare le trasformazioni affini come moltiplicazioni per matrici .

Tipi di Trasformazioni Le trasformazioni affini conservano le linee rette. Si distinguono in:

  1. Traslazione: Sposta i punti di un vettore . Non ha effetto sui vettori (che rappresentano direzioni).

    La matrice ha la forma:

    dove sono le componenti dello spostamento.

  2. Rotazione: Trasformazione rigida che ruota attorno a un asse o un punto, preservando le distanze.

    • Le matrici di rotazione sono ortogonali, quindi la rotazione inversa è pari alla trasposta: .

    • Esempio rotazione asse Z:

      .

  3. Scalamento: Dilata o comprime lo spazio attorno a un punto fisso. Può essere uniforme o direzionale.

    Matrice di scalamento rispetto all’origine:

    .

Composizione di Trasformazioni

Le trasformazioni possono essere combinate moltiplicando le matrici tra loro. Poiché il prodotto tra matrici non è commutativo, l’ordine delle operazioni è cruciale.

  • L’ordine di applicazione si legge da destra a sinistra rispetto al vettore colonna del punto .

  • Esempio: significa applicare prima A, poi B, infine C.

  • Per ruotare o scalare attorno a un punto generico (diverso dall’origine), la procedura standard è: Traslazione all’origine Trasformazione Traslazione inversa.

Vuoi che approfondisca il calcolo matematico di una specifica trasformazione o il dettaglio di uno stadio della pipeline?