This is an old revision of the document!
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:
Transformare spațială: maparea pixelilor din imaginea sursă în imaginea intermediară
Transformare de culoare: calculul culorii fiecărui pixel din imaginea intermediară, prin amestecul culorilor din imaginea sursă și din cea destinație
Intrarea algoritmului:
imaginea sursă și imaginea destinație
2 seturi de puncte de control care formează 2 rețele de triunghiuri
pozițiile punctelor de control în cele 2 imagini
corespondența punctelor în imaginea sursă și imaginea destinație
în cadrul laboratorului - dam ca intrare și corespondența între triunghiurile dintre cele două rețele
numărul de imagini de generat
Pașii algoritmului
Pentru fiecare imagine intermediară
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
pentru fiecare triunghi al imaginii intermediare
se calculează culorile vârfurilor triunghiului prin interpolare liniară între culorile vârfurilor corespondente din imaginea sursă și cea destinație
se determină adresele pixelilor interiori triunghiului (rasterizare triunghi)
pentru fiecare pixel interior
se determină adresele pixelilor corespunzători din imaginea sursă, $P_s$, și cea destinație, $P_d$, folosind coordonatele baricentrice ale lui $P_i$.
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$:
$V_0$, $V_1$, $V_2$ formează un contur orientat trigonometric
$V_0$ e vârful de $y$ minim, $V_2$ e vârful de $y$ maxim
Coordonatele baricentrice ale lui $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
texturile 2D pentru imaginea sursă, imaginea destinație și imaginea intermediară
Texture2D* sourceImage, * destImage, * interImage;
suprafețele triunghiulare ce reprezintă rețelele de triunghiuri în cele 3 imaigni
Mesh* sourceNet, * destNet, * interNet;
numărul de interații
int iterations;
int counter;
numărul imaginii intermediare curente
int counter;