Table of Contents

Laboratorul 4

Animații prin transormări spațiale de imagini

Animația prin transformări spațiale de imagini calculează o secvență de imagini care redau transformarea treptată a imaginii sursă în imaginea destinație. Fiecare imagine este un cadrul al filmului animației.

Concepte teoretice

Generarea unei imagini intermediare presupune:

  1. Transformare spațială: maparea pixelilor din imaginea sursă în imaginea intermediară
  2. Transformare de culoare: calculul culorii fiecărui pixel din imaginea intermediară, prin amestecul culorilor din imaginea sursă și din cea destinație

Transformarea folosind o rețea de triunghiuri

Intrarea algoritmului:

Pașii algoritmului

  1. Pentru fiecare imagine intermediară
    1. se determină o rețea de triunghiuri, ale cărei vârfuri se obțin prin interpolarea liniară între vârfurile rețelelor din imaginea sursă și imaginea destinație
    2. pentru fiecare triunghi al imaginii intermediare
      1. se calculează culorile vârfurilor triunghiului prin interpolare liniară între culorile vârfurilor corespondente din imaginea sursă și cea destinație
      2. se determină adresele pixelilor interiori triunghiului (rasterizare triunghi)
      3. pentru fiecare pixel interior
        1. se determină adresele pixelilor corespunzători din imaginea sursă, $P_s$, și cea destinație, $P_d$, folosind coordonatele baricentrice ale lui $P_i$.
        2. se calculează culoarea pixelului $P_i$ prin interpolare liniară între culorile pixelilor $P_s$ și $P_d$

Calculul coordonatelor baricentrice ale unui pixel, $P_i$:

Calculul adresei unui pixel folosind coordonatele baricentrice:

$P_s = u \cdot V_{s_0} + v \cdot V_{s_1} + w \cdot V_{s_2} + 0.5$

$P_d = u \cdot V_{d_0} + v \cdot V_{d_1} + w \cdot V_{d_2} + 0.5$

Implementare

Atribute

Metode

Crearea unui quad mare cât NDC

Generarea rețelelor de triunghiuri din imaginile sursă și destinație

Calculul coordonatelor baricentrice

Calculul imaginii intermediare

Cerințe laborator

  1. Să se completeze funcția Baricentric() astfel încât să calculeze corect ariile din triunghi (aria totală și ariile parțiale determinate de punctul curent) și să se calculeze coordonatele baricentrice
  2. Să se calculeze vârfurile rețelei intermediare prin interpolare, pentru imaginea intermediară curentă
  3. Să se determine vârfurile triunghiului care conține pixelul curent
  4. Să se calculeze vârfurile triunghiurilor corespondente triunghiului curent (din imaginea sursă și cea destinație)
  5. Să se calculeze coordonatele punctelor corespondente punctului curent (din imaginea sursă și cea destinație)
  6. Să se calculeze culoarea pixelului curent prin interpolare între culorile pixelilor corespondenți din imaginea sursă, respectiv din imaginea destinație

Bonusuri posibile

Demo