Documente Academic
Documente Profesional
Documente Cultură
Curs Grafica PDF
Curs Grafica PDF
Vizualizarea informaiei
Proiectare
Modelare (simulare)
Interfa grafic pentru utilizatori GUI
inginerului,
omului de tiin,
artitilor plastici,
designerilor,
fotografilor,
pictorilor de animaie etc.
Televiziunea digital
Proiecte multimedia, proiecte interactive
Fotografia digital i posibilitile avansate de
prelucrare a fotografiei
Grafica i pictura digital (cu 2 laturi eseniale
imitarea materialelor tradiionale i noile instrumente de
lucru digitale)
Vizualizarea datelor tiinifice i de afaceri
Jocuri la calculator, sisteme de realitate virtual (de ex.
simulatoare pentru aviaie)
Sisteme de proiectare automatizat
Tomografie computerizat
Poligrafia
Grafica laser
amestec substractiv CMYK (de la Cyan-Magenta-YellowblacK) amestec de culori pigment se utilizeaz pentru
proiecte poligrafice destinate tiparului color.
ecuatii matematice. Specific sistemelor GIS este asocierea unui sistem de coordonate
geografic matricii de pixeli (la imaginile raster) sau vectorilor - procedeul poarta
numele de Georeferentiere. Astfel unui obiect (reprezentat fie printr-o imagine, fie
printr-un vector) i este asociat o poziie unic n Sistemul Informatic
corespunztoare poziiei geografice din lumea real.
Seleciile
Straturile (Layers)
Mtile (Masks)
Canalele (Channels)
Retuarea
Optimizarea imaginilor pentru Web
Formate fiiere
Photoshop poate citi majoritatea fiierelor raster i vector. De asemenea, are o serie
de formate proprii:
Ultimele instrumente
Camera RAW: Instrumentul ofer acces rapid i facil la imaginile tip RAW
produse de majoritatea camerelor foto digitale profesionale i de mijloc.
Camera RAW se folosete de toate detaliile acestor fiiere pentru a obine un
control total asupra aspectului imaginii, fr a modifica fiierul n sine.
Adobe Bridge: Un browser complex, de ultim generaie, ce simplific
gestionarea fiierelor, poate procesa mai multe fiiere de tip RAW n acelai
timp i pune la dispoziia utilizatorului informaia metadata de tip EXIF etc.
Multitasking: Adobe introduce posibilitatea de a folosi toate aplicaiile sale
din suita "Creative suite 2" n sistem multitasking.
Suport High Dynamic Range (HDR) pe 32 bii: Creeaz i editeaz imagini
pe 32 bii, sau combin cadre fotografice de expuneri diferite ntr-una ce
include valorile ideale de la cele mai intense umbre pn la cele mai puternice
zone de lumin.
Shadow/Highlight: mbuntete contrastul fotografiilor subexpuse sau
supraexpuse, inclusiv imagini CMYK, pstrnd n continuare echilibrul vizual
al imaginii.
Vanishing Point: Ofer posibilitatea de a clona, picta sau lipi elemente ce
automat se transpun n perspectiva obiectelor din imagine.
Image Warp: Capacitatea de a deforma imaginile plane dup o matrice uor
editabil, folosind mouse-ul.
Corectarea deformrilor cauzate de lentile: Lens Distort corecteaz cu
uurin efectele obinuite date de lentilele aparatelor foto precum cele
cilindrice, sferice, tip plnie, "efectul de vignet" (funcie de poziionarea fa
de lumin, colurile fotografiilor sunt fie ntunecate, fie luminate n contrast cu
restul fotografiei) sau aberaiile cromatice.
Personalizarea aplicaiei:Posibilitatea de a personaliza orice scurttur sau
chiar funciile din meniul aplicaiei i posibilitatea de a salva modificrile
pentru fiecare mod de lucru n parte.
Control mbuntit al straturilor (layers): capacitatea de a selecta mai
multe straturi n acelai timp.
Smart objects: abilitatea de a deforma, redeforma i a reveni la starea iniial a
obiectelor fr a pierde din calitate.
Atat DirectX runtime cat si software development kit (kitul de dezvoltare soft)
sunt disponibilie gratuit, dar sunt proprietate Microsoft si sunt closed-source
(fara posibilitate de schimbare, rescriere, suprascriere). DirectX a fost initial
redistribuit de catre dezvoltatori de jocuri impreuna cu kiturile de instalare, dar
in ultim timp DirectX a fost inclus in kit de instalare a sistemului de operare
(sau in Service Packs). Unii dezvoltatori de jocuri inca mai includ DirectX in
kitul de instalare si ofera posibilitate de a-l instala (sau de a face update) dupa
instalarea jocului.
Cel mai recente versiuni ale DirectX-ului sunt DirectX 10 si DirectX 9.0L,
disponibile exclusiv pentru Windows Vista (motivul fiind, dupa cum sustine
Microsoft, faptul ca exista schimbari in arhitectura grafica a Windowsului si din
cauza introducerii Windows Display Driver Model).
Interfetele API din DirectX
Majoritatea Interfetelor API din DirectX sunt in forma de obiecte COM.
Componentele care le contine DirectX sunt:
DirectX Graphics, alcatuit din doua Interfete API (DirectX 8.0 sau mai mult):
1. DirectDraw: pentru generarea de obiecte grafice 2D (acum
dezaprobat, desi este inca folosit de multi programatori)
2. Direct3D (D3D): pentru generarea obiectelor grafice in 3D
DirectInput pentru tastaura, mouse, joustick sau alte controlere pentru jocuri
(nu mai este folosit decat pentru Xinput, in controlere la Xbox 360)
DirectPlay pentru comunicare jocurilor in retea (Impreuna cu DirectInput a
fost folosit ultima data in DirectX 8. Acuma este dezaprobat)
DirectSound pentru redarea sunetului si inregistrarea sunetului in forma wave
DirectMusic pentru redarea sunetelor autorizate de catre DirectMusic Producer
DirectX Media contine DirectAnimation pentru animatii web 2D, DirectShow
pentru redare multimedia, DirectX Transform pentru interactionare web si
Direct3D Retained Mode pentru obiecte grafice 3D de nivel inalt. DirectShow
mai contine DirectX Plugins pentru procesarea semnalului audio si DirectX
Video Acceseration pentru a accelera redarea video.
DirectX Media Objects suport pentru pentru obiecte cu streamuri cum sunt
encodere, decodere si efecte.
DirectSetup pentru instalarea componentelor DirectX (care de fapt nu prea este
API)
14
OpenGl
16
API OpenGL
Sistem de coordonate
OpenGL foloseste un sistem de coordonate dreapta. Dei
cred ca este mai usor de tinut minte imaginea decat o metoda de
identificare a unui sistem de coordonate dreapta, pentru cei care nu sunt
de aceasi parere iata o conditie usor de verificat: un sistem de coordonate
este dreapta, daca privind de-a lungul unei axe dinspre +oospre origine,
o rotatie in sens trigonometric va aduce o axa pozitiva, peste axa
pozitiva urmatoare. De exemplu:
(Ox peste Oy) sau (Oy peste Oz) sau (Oz peste Ox).
Intern, OpenGL foloseste coordonate omogene astfel c fiecare punct 3D este de fapt reprezentat
prin (x, y, z, w); daca w este nenul, acestea corespund punctului euclidian (x/w, y/w, z/w).
Exemplu de cel mai scurt program OpenGL scris folosind Visual C++: _______________________
#include <windows.h> //headerul pentru ferestre necesr in toate programele
#include <gl\gl.h> //headerul functiilor OpenGL
#include <gl\glaux.h> //functiile librariei AUX
void main(void)
{
//functii
AUX
pentru
setarea
unei
ferestre
auxInitDisplayMode(AUX_SINGLE
|
AUX_RGBA);
auxInitPosition(50,50,350,350);//setarea ferestrei
auxInitWindow("p1 - program OpenGL");//crearea efectiva a ferestrei //functii
OpenGL ce fac ceva in fereastra
glClearColor(0.0f,
0.0f,
1.0f,
1.0f);//stabilirea culorii de sters
glClear(GL_COLOR_BUFFER_BIT);//stergerea efectiva a continutului ferestrei
glFlush(); //executarea celor doua functiilor de sus
J ________________________________________________________________________________
De exemplu:
glVertex3d - primete 3 parametri de tip GLdouble
glColor3f - 3 parametri de tip GLfloat
Totui existi cteva excepii n care lipsesc numrul i tipul parametrilor (de exemplu
glBegin) sau care incep cu un alt prefix (gluLookAt).
Gestiunea ferestrelor folosind librria AUX
auxInitDisplayMode(Gluint mode) initializeaza modul de afisare folosit cand se va crea
fereastra. Mode specifica:
folosirea unei ferestre cu buffer simplu sau dublu: AUXSINGLE sau AUXDOUBLE
modelul de culoare folosit - se recomanda AUXRGBA
folosirea bufferului de adancime pentru algoritmul z-buffer: AUXDEPTH Pentru a
obtine valoarea lui mode putem aplica | intre valorile care ne intereseaza.
O fereastra cu buffer simplu presupune faptul ca toate comenzile de desenare se fac in fereastra afisata;
alternativa este un buffer dublu, cand comenzile de desenare creeaza o scena efectiv in afara ferestrei, apoi
rapid este trecuta in fereastra afisata - se foloseste des in animatie. Modelul de culoare RGBA presupune ca
pentru a defini o culoare trebuie specificate componentele red (rosu), green (verde) si blue (albastru).
auxInitPosition(GLint x, GLint y, Glsizei latime, Glsizei inaltime)
Dupa setarea modului de afisare, se poate preciza locul unde sa fie pozitionata fereastra si dimensiunile
acesteia.
22
23
2011
Grafic pe calculator
glFlush()
Se executa comenzile OpenGL neexecutate inca, de obicei: glClearColor, glClear si desenarea
primitivelor. Intern, OpenGL foloseste un "render pipeline" ce proceseaza comenzile secvential.
#include <windows.h>
#include <GL\glaux.h>
#include <GL\gl.h>
void CALLBACK Deseneaza(void) //funcia efectiva pentru desenare {
glClearColor(1.0f,1.0f,1.0f,0.0f);//culoarea de sters fer = alb
glClear(GL_COLOR_BUFFER_BIT);//se sterge efectiv fereastra
glColor3f(1.0f,0.0f,0.0f);//culoarea de desenare = rosu
glBegin(GL_POLYGON); //de fapt un triunghi
glVertex3f(100.0f, 25.0f,
0.0f);
glVertex3f(100.0f,
130.0f,
0.0f);
glVertex3f(140.0f,
130.0f,
0.0f);
glEnd();
glFlush();
}
void
main()
{
auxInitDisplayMode(AUX_SINGLE
| AUX_RGBA);
auxInitPosition(50,50,300,300) ;
auxInitWindow("P1-OpenGL");
auxMainLoop(Deseneaza);
}
Executia aplicatiei
auxMainLoop(void (*f)(void))
Preia numele functiei ce deseneaza ceva in fereastra curenta si programul ruleaza pana cand fereastra
in care se deseneaza este inchisa. Functia "CALLBACK" se apeleaza cand fereastra este afisata prima data,
cand fereastra este mutata sau redimensionata.
Procesul de desenare in OpenGL este numit deseori "rendering", iar functia de desenare "render
function". Cuvantul CALLBACK spune librariei OpenGL sa apeleze aceasta functie de fiecare data cand
fereastra se actualizeaza in functie de comportamentul utilizatorului.
Desenarea primitivelor in OpenGL
24
2011
Grafic pe calculator Exista mai multe tipuri de primitive pe care le putem desena folosind OpenGL. Pentru inceput insa nu le voi
prezenta pe toate. Putem desena ceva pe ecran folosind functia: glVertex3f(GLfloat x, GLfloat y, GLfloat
z). Pentru a avea vreun efect apelurile acestei functii trebuiesc incadrate intre apelurile glBegin(GLenum
tip_primitiva) si glEnd(), unde tipul primitivei este identificat printr-una din constantele:
GL_POINTS - pentru desenare puncte
GLLINES, GLLINESTRIP, GL_LINE_LOOP - pentru segmente. GLTRIANGLES,
GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN -triunghiuri
GL_QUADS, GL_QUAD_STRIP - pentru patrulatere
GL_POLYGON - pentru poligoane
Intre glBegin si glEnd puteti apela si glColor* pentru a stabili culoarea varfurilor urmatoare. Modul
in care sunt afisate poligoanele se poate stabili (inainte de glBegin) folosind:
glPolygonMode (GLenum face, GLenum mode) face poate fi GL_FRONT_AND_BACK sau
GLFRONT sau GLBACK. Aceste constante identifica fetele fata sau spate (in mod implicit fetele care sunt
definite prin varfuri parcurse in sens trigonometric sunt considerate fete fata). Mode poate fi GL_POINT,
GL_LINE sau GLFILL.
25
2011
Grafic pe calculator
glBegin(GLTRIANGLES);
glVertex3f
(xl,
yl,
zl);
glVertex3f (x2, y2, z2);
glVertex3f (x3, y3, z3);
glEnd();
glBegin(GLTRIANGLES);
glVertex3f (xl, yl, zl);
glVertex3f ( x 2, y 2, z 2);
glVertex3f ( x 3, y 3, z 3);
Se pot specifica mai multe triunhiuri in acelasi glBegin (GLTRIANGLES), pentru desenarea a n triunghiuri
fiind necesare 3*n comenzi glVertex*.
Deseori se doreste combinarea a mai multor triunghiuri pentru a obtine o suprafata continua. Pentru aceasta
este convenabila declararea triunghiurilor o singura data (fara a specifica varfurile comune de mai multe ori
pentru fiecare triunghi). Daca se foloseste GL_TRIANGLE_STRIP si se specifica n varfuri, atunci se
deseneaza triunghiurile (vi, ^+1,^+2) , pentru i = 1 , 2,...,n-2. Alta varianta este aceea in care un varf este
omun: GL_TRIANGLE_FAN si varfurile v1,...,vn. Deseneaza triunghiurile (v1, vi, vi+1), pentru i = 2, 3,.., n1.
Pentru desenarea patrulaterelor convexe, OpenGL nu verifica daca acesta sunt convexe, ci imparte
patrulaterul in 2 triunghiuri pentru a-l desena ca un poligon plin. Comanda pentru desenarea unuia sau mai
multor patrulatere este:
glBegin (GLQUADS);
glVertex3f (xl, yl, zl);
glVertex3f (xn, yn, zn);
glEnd();
unde n este multiplu de 4. Se deseneaza n/4 patrulatere
cu varfurile v4i-3, v4i-2, v4i-1, v4i, cu 1 < i < n/4. Se poate
de asemenea folosi GL_QUADS_STRIP pentru a uni
patrulatere - in acest caz n trebuie sa fie par si se
deseneaza n/21 patrulatere cu varfurile v2i-3, v2i-2, v2i-1,
v2i, cu
2 < i < n/2.
26
if (h==0) h = 1;
glViewport(0, 0, w, h); // Stabilirea viewportului la dimensiunea ferestrei glLoadIdentity(); //
Reinitializeaza sistemul de coordonate // Stabileste volumul de vedere folosind o proiectie
ortografica if (w<=h) glOrtho(0.0f, 250.0f, 0.0f, 250.0f*h/w, 1.0, -1.0); else glOrtho(0.0f,
250.0f*w/h, 0.0f, 250.0f, 1.0, -1.0);
}
void main(void)
{
27
void main(void)
{
// Stabilirea ferestrei de lucru OpenGL
auxInitDisplayMode(AUX_DOUBLE|AUX_RGBA);
auxInitPosition(10, 10, 500, 500);
auxInitWindow("Animatie in OpenGL!");
// nregistrarea functiilor CALLBACK
auxReshapeFunc(ModificaDimensiune);
auxIdleFunc(AvanseazaAnimatie);
auxMainLoop(RedeseneazaScena);
}
28
29
void auxWireTeapot (Gldouble size); similar cu auxSolidTorus() dar wireframe (doar cu atribut de
contur).
Exemple OpenGl
Exemplu 1
Exemplu 2
Exemplu 3
30
Exemplu 4
Exemplu 5
31
Exemplu 6
Exemplu 7
32
Exemplu 8
Exemplu 9
33
Exemplu 10
Exemplu 11
34
Exemplu 12
35
Exemplu 13
Exemplu 14
36
Exemplu 15
Exemplu 16
37
Exemplu 17
Exemplu 18
38
Exemplu 19
Exemplu 20
39
Exemplu 21
40
Exemplu 22
41
Exemplu 23
42
Exemplu 24
Exemplu 25
43
Exemplu 26
Exemplu 27
44
Exemplu 28
45
Exemplu 29
46
Exemplu 30
Exemplu 31
47
Exemplu 32
48