2.1 PRIMITIVE GEOMETRICE GRAFICE 10 2.2 CULORI 15 3. ANIMAȚIA 19 3.1 METODELE DE ANIMARE 20 3.2 PRINCIPIILE ANIMAȚIEI 23 3.3 PAȘII CREĂRII ANIMAȚIEI… [310034]

UNIVERSITATEA DIN BUCUREȘTI

FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ

LUCRARE DE LICENȚĂ

COORDONATOR ȘTIINȚIFIC :

Lect. Dr. Mihai Sorin Stupariu

ABSOLVENT: [anonimizat]

2016

UNIVERSITATEA DIN BUCUREȘTI

FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ

LUCRARE DE LICENȚĂ

Aplicație tridimensională

COORDONATOR ȘTIINȚIFIC :

Lect. Dr. Mihai Sorin Stupariu

ABSOLVENT: [anonimizat]

2016

CUPRINS

1. NOȚIUNI INTRODUCTIVE 3

2. BIBLIOTECA GRAFICĂ OPENGL 5

2.1 PRIMITIVE GEOMETRICE GRAFICE 10

2.2 CULORI 15

3. ANIMAȚIA 19

3.1 METODELE DE ANIMARE 20

3.2 PRINCIPIILE ANIMAȚIEI 23

3.3 PAȘII CREĂRII ANIMAȚIEI 24

4. MOTORUL GRAFIC 32

4.1 FERESTRELE MOTORULUI GRAFIC 33

4.2 CORPURI GEOMETRICE GRAFICE 37

4.3 ELEMENTE PROGRAMABILE 39

5. APLICAȚIA TRIDIMENSIONALĂ 47

5.1 POVESTEA JOCULUI 47

6. CONCLUZIE 51

7. BIBLIOGRAFIE 52

1. NOȚIUNI INTRODUCTIVE

Odata cu evoulutia umana s-a dezvoltat si nevoia de divertisment. [anonimizat] s-a transformat in scop existential. Astfel, [anonimizat]-i orbeasca si sa-i inrobeasca. Societatea actuala tinde atat catre perfectionarea produselor si serviciilor de consum cat si spre inventarea altora asemantoare.

Animatiile tridimensionale satisfac o parte din nevoile existentiale ale oamenilor moderni. [anonimizat].

2. BIBLIOTECA GRAFICĂ OPENGL

Grafica digitala (2D-bidimensionala, 3D-tridimensionala), sau grafica computerizată (computer graphics), este o ramura a informaticii, bazata pe manipularea informatiei vizuale si a imaginilor prin intermediul unui calculator (computer). Cei doi algoritmi folositi in calculele de procesare grafica sunt: algoritmul Raster si algoritmul Vector. De aici deriva cele doua denumiri principale de abordare ale graficii: Grafica Rasterizata (rastru) și Grafica Vectoriala (vector), care sunt prezentate in randurile ce urmeaza.

Afisarea unei imagini rasterizate pe calculator are loc in urma scindarii in pixeli a unei suprafete. Pixelul, sau elementul de imagine (picture element), reprezinta unitatea componenta a [anonimizat] (comparativa cu marimea unui punct). Claritatea unei imagini rasterizate creste proportional cu numarul de pixeli care alcatuiesc acea imagine. Salvarea imaginilor in aparatele foto se produce in format raster.

Dezavantajul afisarii rasterizate a unei imagini il constituie calcularea defectuoasa a pixelilor in anumite momente ale aplicarii metodei de interpolare.

Afisarea unei imagini vectoriale pe calculator are loc in urma desenarii (cu ajturoul liniilor) a fiecarui element component (scris sub forma de formula matematica). Liniile (drepte, currbe) [anonimizat] (poziție, lungime, direcție). [anonimizat]. [anonimizat] a [anonimizat] (matematic) obiectele imaginii. Aplicabilitatea reala a imaginilor vectoriale se intinde de la tehnici simple ([anonimizat], logotipuri) pana la practici complexe (industria cinematografica, industria jocurilor pe calculator).

Avantajul afisarii vectoriale a unei imagini il constituie permiterea redimensioarii acelei imagini fara a se pierde din calitatea imaginii originale.

Deoarece programatorii si-au dorit ca aplicatiile grafice scrise de ei sa fie compatibile cu toate platformele existente, au fost infiintate organizatiile internaționale de standardizare grafica (ISO-International Organization for Standardization) cu rol de certificare a unor API-uri (Application Programming Interface) care sa inlocuiasca nevoia de a scrie drivere grafice unice per platforme.

Pentru a putea standardiza o API grafica (interfață grafica pentru programarea de aplicații), aceasta trebuie sa se incadreze in anumiti termeni si sa respecte anumite conditii, cum ar fi: pastrarea perfomantelor grafice ridicate ale aplicatiei in cazul trecerii ei de pe o platforma pe alta; sintetizarea operatiilor si vizualizarea intuitiva a lor in cadrul interfetei grafice; flexibilitatea functionala a interfetei grafice de a integra usor actualizari (update-urilor) ale versiunii aplicatiei (in scopul imbunatatirii calitatii aplicatiilor). O astfel de interfață grafica pentru programarea de aplicații este prezentata in randurile ce urmeaza.

OpenGL (Open Graphics Library) este o biblioteca grafică ale carei functii (apelate), faciliteaza (dispunand de o interfata simpla), operațiile fundamentale de randare (generarea graficii), bidimensionala si tridimensionala, a aplicatiilor.

OpenGL poate randa atat primitive geometrice (puncte, linii, poligoane), imagini. cat si operatii complexe: calcule de iluminare, transformari afine, transformari proiective. Metodele avansate de randare grafica permit vizualizarea detaliata a elementelor grafice de finete (maparea texturilor si afisarea anti-aliasing).

Maparea texturii este o metoda (la randare) de aplicare, peste un element grafic, a unui invelis colorat (rosu, verde, albastru), a unui design, sau a unui invelis care sa creeze iluzia unui material real (pamant, lemn, piatra).

Anti-aliasing este o metodă (la randare) de netezire a marginilor elemntelor grafice, in scopul obtinerii unor rezulate perceptibile vizual care sa imite cat mai bine perfectiunea formelor simulate.

Primitivele geometrice (punct, dreapta, poligon) sunt transformate (programate sub forma de cod) in corpuri complexe (obiect, personaj) ale aplicatiilor 3D. Pentru ca aceste elemente sa poata fi controlate cu o mai mare usurinta, specialisti ai graficii 3D au creat biblioteci speciale, dintre care putem enumera: GLU (OpenGL Utility Library), GLUT (OpenGL Utility Toolkit).

Biblioteca GLU (OpenGL Utility Library) este o biblioteca ce ajuta la crearea suprafetelor complexe. Aceasta biblioteca efectueaza, intr-un mod mai simplist, calculele necesare proiectiei 3D.

Biblioteca GLUT (OpenGL Utility Toolkit) este o biblioteca (mai exact un utilitar) care il ajuta pe dezvoltatorul aplicatiilor 3D sa interopereze mai usor cu ferestrele bibliotecii grafice OpenGL (Open Graphics Library). Astfel, cu ajutorul perifericelor (mouse, tastatura) se produc rutine ale aplicatiilor de evenimente care pot fi manipulate din exterior.

Biblioteca GLAUX (OpenGL Auxiliary Library) este o biblioteca cu functii asemanatoare bibliotecii GLUT oferindu-i dezvoltatorului de aplicatii 3D posibilitatea de a o alege pe cea care se potriveste mai bine cu stilul sau de lucru.

Apeland biblioteca grafica OpenGL, nu este optima desenarea directa a poligoanelor concave (din cauza unei mai mari complexitati a algoritmului necesar efectuarii unei astfel de operatii). Astfel, se foloste tehnica de generare a unui poligon concav prin intermediul utilizarii triunghiurilor sau poligoanelor complexe (datorita eficientei algoritmilor folositi).

Biblioteca GLU detine un algoritm de impartire a poligoanelor concave in poligoane convexe, algoritm care este utilizat la fiecare initializare a bibliotecii grafice OpenGL. Aceasta biblioteca dispune de o interfata cu ajutorul careia se pot apela NURBS (Non-Uniform Rational Basis Spline).

NURBS reprezinta un model matematic folosit adesea in grafica pe calculator pentru generarea si reprezetarea curbelor si suprafetelor. Acest model matematic ofera flexibilitate si precizie pentru manipularea analitica si modelarea formelor.

Apelul API-ului (Application Programming Interface) OpenGL se poate face din cadrul diferitelor limbaje de programare, cum ar fi: C, C++, V.B.

C este un limbaj de programare de nivel inalt (high-level), adica un set bine definit de expresii și reguli (sintactice si semantice) valide, de formulare a unor instrucțiuni ce sunt transmise sub forma de comenzi de la un programator catre un computer, spre a fi executate de catre acesta din urma, in vederea obtinerii unui rezultat dorit (de catre programator).

C++ este tot un limbaj de programare, succesor al limbajului de programare C, ce contine cateva imbunatatiri, dintre care putem mentiona: adaugarea notiunii de "clasa" (folosita de catre programatori in cadrul programaii orientate pe obiecte).

VB (Visual Basic) este un limbaj de programare provenit din limbajul Basic. Acest limbaj de programare a fost produs de compania Microsoft, popularitatea actuala a lui datorandu-se interfeței sale grafice simpiste.

Legatura functionala dintre OpenGL (independent de platforma) si sistemul grafic (bazat pe ferestre, in care se doreste integrarea acestuia), trebuie facuta prin interfetele pentru programarea aplicatiilor (API-uri, dependente de platforma) interconectate cu sistemul grafic.

Componentele esentiale si indispensabile pentru a putea observa detalii de finete ale elementelor grafice (si nu numai) sunt: CPU (central processing unit-unitatea centrala de procesare) si GPU (graphics processing unit-unitatea de procesare grafica).

OpenGL este o biblioteca grafica ce poate fi regasita pe o multitudine de sisteme de operare (O.S. – operating systems) dintre care, cel mai des intalnite fiind Windows, Macintosh, si cele descendente din UNIX. Aproape toate calculatoarele (personale, statii de lucru, supercalculatoare), care permit conectarea unui ecran (display) grafic, permit implementarea bibliotecii grafice OpenGL, prin utilizarea unuia (sau mai multor) limbaje de programare, precum FORTRAN, C, C++, Ada, Java, fiind totodata o biblioteca independenta de protocoalele de retea sau de topologii..

Structura arhitecturala intuitiva si simpla, datorata comenzilor sale logice si reduse ca numar, transforma biblioteca grafica OpenGL intr-una puterninca, adoptata de catre multi dezvoltatori de aplicatii (incepatori sau profesionisti). Capacitatea de stocare a informatiilor hardware de catre biblioteca grafica OpenGL ii elibeaza pe programatori de nevoia scrierii aplicatiilor in functie de caracteristicile hardware ale sistemelor folosite.

Aceasta biblioteca grafica este indispensabila in crearea graficii asistate pe calculator, aplicatiilor de realitate virtuala, simularilor si simulatoarelor de orice tip, vizualizarilor stiintifice, efectelor speciale din cadrul filmelor si jocurilor (bidimensionale sau tridimensionale).

Biblioteca grafica OpenGL insumeaza o serie de instructiuni cod ca ajutorul carora pot fi reprezentate grafic elemente bidimensionale sau tridimensionale. Totodata, aceasta dispune de comenzi care pot fi utilizate si pentru o manipulare mai amanuntita la afisarea intr-un cadru-tampon (frame buffer) a respectivelor elemente. Biblioteca grafica OpenGL cuprinde o cantitate mare de informatii ce determina felul in care sunt desenate elementele in frame buffer, aceste informatii numindu-se informatii de stare deoarece in majoritatea cazurilor de apelarea a codului, pe ecranul utilizat de catre programator este imediat afisat elementul al carei functii a fost apelat. Datorita mentionarilor anterioare, biblotecii grafice OpenGL i se poate atribui denumirea de masina de stare, definita de variabile de conditie prestabilite.

Variabila de conditie poate fi considerata o culoare care se doreste a fi folosita in scopul desenarii grafice a unui element. O culoare se poate apela printr-un cod de forma glColor(). Tuturor elementelor aflate dedesubtul apelarii respectivei culori li se va atribui aceeasi culoare, procedeul fiind numit atribuire de valoare de stare, care persista vizibil pana la schimbarea sau inchiderea (tot cu ajutorul codului) apelului catre functia de colorare.

Elementele desenate cu ajutorul bibliotecii grafice OpenGL sunt, de fapt, compuse din una sau mai multe primitive geometrice alese din totalul de doar zece, disponibile in OpenGL. Pentru apelarea functiilor specifice acestei biblioteci, este nevoie de utilizarea prefixului "gl" la inceputul oricarei comenzi scrise.

Operatiile bidimensionale si tridiemsionale de baza (setarea paramatrilor matricelor de transformari, actuzliarea pixelilor, operatii de iluminare) pot fi efectuate cu ajutorul bibliotecii grafice OpenGL, insa nu si operatii de prelucrare a corpurilor geometrice complexe (cub, con, cilindru, sfera), deoarece esenta acestei biblioteci o constituie redarea (randarea) bidimensionala si tridimensionala a elementelor fundamentale si nu alterarea elementelor dintr-o scena.

Intr-o aplicatie standard (in care se apeleaza functii ale bibliotecii grafice OpenGL) pe calculator este generata o fereastra (integrata intr-un frame buffer) in care sunt afisate elemente (scrise sub forma de cod de catre programatori). Prin cod se dau comenzi scrise spre a fi executate de catre calculator prin intermediul bibliotecii grafice OpenGL cu scopul de a reprezenta grafic atat primitive geometrice (puncte, segmente de dreapta, poligoane) si operatii complexe (iluminare si colorare) cat si modalitati de control al frame buffer-ului (citirea de pixeli sau scrierea de pixeli).

Daca accesul la componentele hardware grafice ale calculatorului folosit are loc printr-un frame buffer programabil, atunci codul utilizat de catre dezvoltatorii aplicatiilor grafice (utilizatori ai bibliotecii grafice OpenGL) trebuie scris si executat strict la nivel software de catre CPU-ul (central processing unit – unitatea centrala de procesare) calculatorului folosit.

Placile grafice (video cards) actuale incorporeaza acceleratoare grafice multiple si avansate care au capacitatea de a randa atat simple linii, poligoane, cat si corpuri geometrice sau transformari complexe ale acestora. La conceperea codului unei aplicatii grafice, un bun dezvoltator trebuie sa-i ofere acesteia o cale optima de impartire a sarcinilor intre CPU (unitatea centrala de procesare) si GPU (graphics processing unit-unitate de procesare grafică). Este de preferat acest lucru, deoarece, la rulare, o aplicatie grafica va fi evaluata pozitiv (de catre utilizatori sau critici) doar daca aceasta va functiona perfect, conform descrierii prealabile venite din partea programatorului acelei aplicatii grafice.

2.1 PRIMITIVE GEOMETRICE GRAFICE

Varfurile (punctele sau vertecsii) sunt elementele din care sunt compuse primitivele geometrice (punct, segment de dreapta, poligon). Aceste varfuri reprezinta locul de intalnire a doua muchii care apartin unui poligon, sau reprezinta chiar punctele terminale ale muchiilor poligoanelor. Pentru redarea bidimensionala a varfurilor, biblioteca grafica OpenGL dispune de un sistem cartezian de coordinate unde un plan este incardrat in spatiul dintre axele X si Y. Pentru redarea tridimensionala a varfurilor, biblioteca grafica OpenGL dispune in plus (pe langa sistemul cartezian de coordonate X,O,Y) si de o a treia coordonata, numita coordonata Z. Varfurile acestei biblioteci grafice sunt definite in functie de pozitia lor, de culoarea sau textura atribuita si de gradul de iluminare. In cadrul rularii aplicatiilor grafice care utilizeaza libraria grafica OpenGL, toti vertecsii sunt procesati identic si independent.

In afara de coordonate bidimensionale si trimensionale, biblioteca grafica OpenGL poate opera si cu coordonate omogene, de tipul X, Y, Z, W. Coordonatele omogene faciliteaza operatiile de redare a primitivelor geometrice, ajutand la vizualizarea celor zece existente:

gl_Points, de forma:

glBegin(GL_POINTS);

glVertex2i(a1, b1);

glEnd();

gl_Lines, de forma:

glBegin(GL_LINES);

glVertex2i(a1, b1); glVertex2i(a2, b2);

glEnd();

gl_Line_Strip, de forma:

glBegin(GL_LINE_STRIP);

glVertex2i(a1, b1); glVertex2i(a2, b2); glVertex2i(a3, b3);

glEnd();

gl_Line_Loop, de forma:

glBegin(GL_LINE_LOOP);

glVertex2i(a1, b1); glVertex2i(a2, b2); glVertex2i(a3, b3);

glEnd();

gl_Triangles, de forma:

glBegin(GL_TRIANGLES);

glVertex2i(a1, b1); glVertex2i(a2, b2); glVertex2i(a3, b3);

glEnd();

gl_Triangle_Strip, de forma:

glBegin(GL_TRIANGLE_STRIP);

glVertex2i(a1, b1); glVertex2i(a2, b2); glVertex2i(a3, b3); glVertex2i(a4, b4);

glEnd();

gl_Triangle_Fan, de forma:

glBegin(GL_TRIANGLE_FAN);

glVertex2i(a1, b1); glVertex2i(a2,b2); glVertex2i(a3, b3); glVertex2i(a4, b4); glEnd();

gl_Quads, de forma:

glBegin(GL_QUADS);

glVertex2i(a1, b1); glVertex2i(a2, b2);

glVertex2i(a3, b3); glVertex2i(a4, b4);

glEnd();

gl_Quad_Strip, de forma:

glBegin(GL_QUAD_STRIP);

glVertex2i(a1, b1); glVertex2i(a2, b2);

glVertex2i(a3, b3); glVertex2i(a4, b4);

glVertex2i(a5, b5); glVertex2i(x6, y6);

glEnd();

gl_Polygon, de forma:

glBegin(GL_POLYGON);

glVertex2i(a1, b1); glVertex2i(a2, b2);

glVertex2i(a3, b3); glVertex2i(a4, b4);

glVertex2i(a5, b5);

glEnd();

Primitivele geometrice grafice esentiale sunt cinci: punctul, dreapta, triunghiul, patrulaterul si poligonul. Celelalte cinci primitive geometrice ramase au rol in optimizea algoritmica necesara la momentul randarii grafice. Mai exact, cand doua varfuri ale primitivelor geometrice alaturate se suprapun, biblioteca grafica OpenGL le trateaza ca fiind unul singur, injumatatind astfel costurile de procesare si memorare efectuate de catre calculator in timpul desenarii grafice.

Reprezentarea grafica a iluminarii, prin intermediul bibliotecii grafice OpenGL, se poate realiza calculand normalele curente sub forma de vectori tridimensionali. Reprezentarea grafica a culorii, prin intermediul bibliotecii grafice OpenGL, se poate realiza setand parametrii corespunzatori celor trei valori generale RGB (red-rosu, green-verde, blue-albastru) sau patru valori specifice RGBA (red-rosu, green-verde, blue-albastru, alpha-alfa). Reprezentarea grafica a maparii unei texturi, prin intermediul bibliotecii grafice OpenGL, se realizeaza asemanator reprezentarii grafice a unei culori.

In procesul de generare grafica a unui varf, programatorul scrie un cod de apelare a unei functii grafice. In acel cod el va seta: parametrii culorilor pe care doreste sa le atribuie elementelor desenate grafic, valorile coordonatelor de mapare a texturilor ce vor fi aplicate elementelor reprezentate grafic, ordinea operatiilor ce trebuie efectuate pentru determinarea gradului de iluminare a elementelor afisate grafic.

Un varf afisat grafic este rezultatul obtinut din inmultirea coordonatelor varfului cu matricea standard de modelare vizulizare (de dimensiune patru linii x patru coloane). Culoarea unui varf (in prezenta luminii) va rezulta din operatiile efectuate pentru determinarea gradului sau de iluminare. Culoarea unui varf (in lipsa luminii) va rezulta strict din parametrii de culoare atribuiti in mod direct acestuia. In consecinta, gradul de iluminare grafica a unui varf influenteaza intensitatea afisarii grafica a culorii acestuia. Similar, gradul de iluminare grafica a unui varf influenteaza si intensitatea afisarii grafice a texturilor mapate. Texturile pentru mapare pot fi si ele transformate de catre o matrice, pentru a putea fi modelate, adica scalate sau rotite.

2.2 CULORI

RGBA si Color Index sunt cele doua tipuri de culoare de care dispune biblioteca grafica OpenGL. Cand se utilizeaza tipul de culoare RGBA (sau True Color), functia de apelare specifica utilizata pentru colorarea grafica a varfurilor este de forma glColor(). Cand se utilizeaza tipul de culoare Color Index, functia de apelare specifica utilizata pentru colorarea grafica a varfurilor este de forma gllndex().

Cand se foloseste biblioteca GLUT se apeleaza functia glutlnitDisplayMode() pentru generarea ferestrei, iar apoi se apeleaza una dintre functiile GLUT_RGBA si GLUT_INDEX, functie de tipul culorii dorite. Cand se foloseste biblioteca GLAUX se apeleaza functia auxinitDisplayMode() pentru generarea ferestrei, iar apoi se apeleaza una dintre functiile AUX_RGBA si AUX_INDEX, in functie de tipul culorii dorite. Tuturor elementelor aflate dedesubtul apelarii respectivei culori li se va atribui aceeasi culoare, pana la schimbarea sau inchiderea apelului catre functia de colorare.

Culoarea ca RGB si RGBA se realizeaza setand parametrii corespunzatori celor trei valori RGB (red-rosu, green-verde, blue-albastru) sau celor patru valori RGBA (red-rosu, green-verde, blue-albastru, alpha-alfa). Al patrulea parametru (la tipul RGBA), corespondetul valoarii alfa (coeficientul de transparenta), favorizeaza amestecul dintre culorile obiectelor suprapuse, ajutand la simularea complexa a unor efecte, cum ar fi transparenta (transparency) translucenta (translucency) sau ceata (fog).

Apelul functiei tipului de culoare RGBA permite parametrilor setati sa aiba doar valori mai mari decat 0.0 si mai mici decat 1.0. Formatul parametrilor setati va fi ales dintre urmatoarele modele: 3 (3 coordonate), 4 (4 coordonate), d (double), f (float), i (integer). Spre exemplu, apelul unei functii tip culoare RGBA, care sa afiseze culoarea rosu, se poate face scriind codul: glColor4i (1.0, 0.0, 0.0, 1.0). Astfel, culoare rosu are intensitatea 1.0, culoare verde are intensitatea 0.0, culoare albastru are intensitatea 0.0, iar coeficientul de transparenta alfa are intensitatea 1.0.

Apelul functiei tipului de culoare Color Index permite parametrilor setati sa aiba doar valori mai mari decat 0.0 si mai mici decat 1.0. Valorile apropiate de 0.0 confera transparenta culorii, pe cata vreme valorile apropiate de 0.0 confera opacitate culorii. Tipul de culoare Color Index se foloseste in situatii in care spatiul de memorare este insuficient. Spre exemplu, apelul unei functii tip Color Index se poate face scriind codul gllndex(pointer), "pointer" fiind pozitia pe care se afla culoarea in tabloul de culori, tablou ce poate fi apelat: glIndexPointer(f, 0, 1).

Punctul poate fi definit grafic de doua valori, dimensine (care, pentru a avea efect, trebuie apelata inaintea functiei glBegin, niciodata in cadrul acesteia) si culoare (de tip RGBA sau Color Index).

Segmentul de dreapta poate fi definit grafic de trei valori: tip (este folosit implicit-default tipul dreapta continua sau optional tipurile: dreapta intrerupta, dreapta punctata, amestecul dreptelor cu puncte). grosime (apelata cu ajutorul functiei: glLineWidth (Glfloat width) ), culoare (de tip RGBA sau Color Index).

Atat dimensiunile dreptelor si punctelor cat si spatiile dintre acestea pot fi manipulate arbitrar. Tiparul ales este reprezentat printr-un cuvant de lungime saisprezece biti, unde fiecarui bit ii corespunde un pixel. Acest tipar se aplica repetitiv asupra dreptei in urma apelarii functiei glEnable(GL_LINE_STIPPLE) si va inceta odata cu apelarea functiei glDisable(). In redarea grafica a unei drepte frante, tiparul va fi aplicat uniform si nu va fi reintializat inutil la reprezentarea fiecarui segment de drepta in parte.

Colorarea unui segment de dreapta reprezentat grafic se poate face atat uniform (printr-un simplu apel al unei functii de tip de culoare) cat si variabil (prin setarea unor indici de valori diverse la capatul fiecarui segment de dreapta).

Un poligon e defint grafic de unul dintre cele doua moduri de umplere a fetelor sale: modul de umplere unei intregi fete si modul de umplere a laturilor din componenta unei fete. Oricare poligon dispune implicit de doua fete identice reprezentate grafic, care, ulterior, pot fi inversate si inlaturate arbitrar de catre programatori, cu ajutorul bibliotecii grafice OpenGL.

Apelul unei functii de umplere a unei intregi fete se poate face folosind codul glPolygonMode(GL_FRONT, GL_FILL). Apelul unei functii de umplere a laturilor din componenta unei fete se poate face folosind codul glPolygonMode(GL_BACK, GL_LINE).

Colorarea unui poligon reprezentat grafic este asemanatoare colorarii unu segment de dreapta reprezentat grafic, si se poate face atat uniform (printr-un simplu apel al unei functii de tip de culoare) cat si variabil (prin setarea unor indici de valori diverse la capatul fiecarui segment de dreapta).

Tiparul de umplere se aplica repetitiv asupra poligonului in urma apelarii functiei glEnable(GL_POLYGON_STIPPLE) si va inceta odata cu apelarea functiei glDisable(). Acesta se poate apela prin functia glPolygonStipple (fillPattern), unde "fillPattern" reprezinta un pointer catre tabloul (cu atribute GLubyte, de dimensiune 32×32 biti) in care este situat tiparul.

In biblioteca grafica OpenGL exista functii de reprezentare doar pentru poligoanlele convexe. Pentru reprezentarea grafica a poligoanelor concave, acestea trebuie sa fie mai intai impartite in triunghiuri sau alte poligoane convexe, dupa care trebuie apelata functia glEdgeFlag() cu scopul de a depista care dintre dreptele noilor poligoane apartin poligoanelor concave initiale. Cele doua argumente ale functiei glEdgeFlag() sunt TRUE si FALSE, scriindu-se sub forma de cod astfel: glEdgeFlag(GL_TRUE) si glEdgeFlag(GL_FALSE).

3. ANIMAȚIA

Animatia este o creatie artistica de imitatie optica a miscarii ce poate fi redata prin intermediul unei succesiuni de imagini (digital grafica sau desenta manual). Intr-o animatie digitala imaginile grafice numite cadre (frames) sunt redate consecutiv intr-un interval de timp prestabilit (frame rate sau f.p.s.-frames per second). Miscarea imitata poate fi de rotatie (in jurul unei axe), de translatie (pe orizontala sau pe verticala), de scalare (de alungire sau de turtire).

Notiunile necesare intelegerii procesului de animatie sunt: dimensiunea scenei filmate (camera size), rezolutia de afisare a scenei (display resolution), rata cadrelor pe secunda (f.p.s.-frames per second), cadrul cheie (key frame-ul), tehnica de animatie keyframing, tehnica de animatie tweening, tabelul timpului (timeline-ul), lista de expunere (exposure sheet).

Dimensiunea scenei filmate (camera size) in care sunt plasate animatia si obiectele decorative, este masurata in pixeli dupa lungime (weight ) si inaltime (height). Pixelul, sau elementul de imagine (picture element), reprezinta unitatea componenta a unei imagini digital grafice, dimensiunea lui fiind foarte mica (comparativa cu marimea unui punct). Pixelii (PICture Elements) sunt definiti de culoare si pozitie si sunt situati intr-o matrice. Claritatea unei imagini creste proportional cu numarul de pixeli care alcatuiesc acea imagine.

Rezolutia de afisare a scenei (display resolution) si raportul de afisare (aspect ratio) influenteaza in mod direct proportional claritatea vizuala de redare a unei scene. Dimensiunile rezolutiei de afisare a unei scene pot fi 1920 x 1080, unde valoarea 1920 semnifica lungimea formata din pixeli, iar valoarea 1080 semnifica inaltimea formata din pixeli. Raportul de afisare a unei scenei poate fi 16 : 9, unde valoarea latimii este 16, iar valoarea inaltimii este 9.

Rata cadrelor pe secunda (f.p.s.-frames per second) ilustreaza viteza de rulare a unui film. O mai mare viteza de derulare succesiva a imaginilor digitale nu inseamna neaparat si o calitate mai buna a animatiei. Daca se doreste o calitate buna a animatiei la o viteza mare de redare, atunci se vor folosi cadre intermediare (inbetweens). Pentru obtinerea unei animatii realistice rata cadrelor pe secunda trebuie stabilita in functie de gradul de dinamism al obiectelor redate cadru cu cadru. Mai exact, pentru afisarea unei taur aflat in miscare trebuie folosita o rata mare de cadre pe secunda, spre deosebire de rata mica de cadre pe secunda necesara afisarii unui melc aflat in miscare.

Cadrul cheie (key frame-ul) este un alt element important al animatiei. Acesta se foloseste intr-una dintre cele doua tehnici de animatie: tweening si keyframing. Multitudinea cadrelor cheie confera cursivitate unei miscari animate.

Tehnica de animatie keyframing este definita de totalitatea cadrelor componente ale unei animatii, fiecare cadru fiind tratat ca ultima piesa a unui puzzle. Cadrele folosite in utilizarea acestei tehnici de animatie nu sunt delimitate drept cadru de inceput, cadru de sfarsit si cadre intermediare, ci toate cadrele sunt considerate egale si inseparabile.

Tehnica de animatie tweening este definita de doar doua cadre ale animatiei, primul marcand inceputul miscarii, iar al doilea marcand sfarsitul miscarii. Aceste doua cadre sunt desenate de catre animator. Celelalte cadre, adica cele aflate intre cadrul de inceput si cadrul de sfarsit, sunt generate automat si sunt denumite inbetweens. Tehnica de animatie tweening se foloseste in scopul economisirii timpului de lucru in detrimentul calitatii rezultatelor.

Tabelul timpului (timeline-ul) semifica un tabel care poate fi organizat pe mai multe straturi (layere) pentru a facilita modificarea cadrelor constituente ale unei scene animate. In acest tabel straturile sunt structurate pe linii, iar cadrele din straturi sunt structurate pe coloane. In timeline sunt trecute corespondentele dintre obiectele prezente intr-o scena sau actiunile ce au loc in acea scena si momentele la care acestea sunt programate sa apara sau sa sa aiba loc, plus posibila interactiune dintre ele.

Lista de expunere (exposure sheet) semnifica un tabel simlilar cu tabelul timpului, care poate fi organizat pe mai multe straturi pentru a facilita modificarea cadrelor constituente ale unei scene animate. In acest tabel straturile sunt structurate pe coloane, iar cadrele din straturi sunt structurate pe linii. Pe langa facilitiatile asemanatoare cu cele din tabelul timpului, tabelul listei de expunere ofera libertate animatorului de a atribui un nume fiecarui cadru cheie, dar si libertatea de a observa o previzualizare (preview thumbnail) al tuturor cadrelor. Aceste facilitati ajuta animatorul sa realizaze animatii care necesita potriviri si sincronizari intre diferite miscari si sunete ce trebuie puse in corespondenta.

3.1 METODELE DE ANIMARE

Categoriile de metode care stau la baza crearii unei animatii sunt: categoria metodelor clasice (full animation, limited animation, rotoscoping, live-action animation); categoria metodelor stop-motion (puppet animation, clay animation, cutout animation, model animation, object animation, pixilation); categoria metodelor computerizate (2D-animation, 3D-animation); categoria metodelor mecanice (animatronics, chuckimation, puppetry, zoetrope).

Prima metoda clasica de animatie, full animation, ajuta la producerea filmelor traditionale de animatie, de calitate inalta, bazate pe desene detaliate si miscari verosimile.

A doua metoda clasica de animatie, limited animation, ajuta la producerea filmelor traditionale de animatie bazate mai mult pe stilizarea desenelor si agitatia miscarilor decat pe detalierea amanuntita a acestora.

A treia metoda clasica de animatie, rotoscoping, ii ajuta pe animatori sa analizeaza miscarile cadru cu cadru. Astfel contururile actorilor reali pot fi imprumutate direct in desenele animate sau pot fi folosite in scopuri stilistice si expresive.

A patra metoda clasica de animatie, live-action animation, ajuta la reproducerea miscarii personajelor reale, in special a actorilor, prin desenarea manuala si repetata a lor.

Prima metoda stop-motion de animatie, puppet animation, implica utilizarea paspusilor si figurinelor in cadrul animatiilor, intr-un mediu inconjurator construit arficial. Papusile si figurinele arata obisnuit pe dinafara, dar pe dinauntru prezinta o armatura care le ajuta sa-si mentina echilibrul in diferitele pozitii necesare simularii miscarii.

A doua metoda stop-motion de animatie, clay animation, implica utilizarea figurinelor create din lut sau materiale flexibile si maleabile. Figurinele pot contine armaturi sau fire de sarma care le ajuta sa-si mentina echilibrul in diferitele pozitii necesare simularii miscarii, fiind o metoda similara metodei puppet animation.

A treia metoda stop-motion de animatie, cutout animation, implica utilizarea materialelor si vestimentatiei desenate pe hartie.

A patra metoda stop-motion de animatie, model animation, implica utilizarea unui element creat pentru a interactiona cu mediul inconjurator in cadrul unei scene construite arficial.

A cincea metoda stop-motion de animatie, object animation, implica utilizarea unui obiect obisnuit in cadrul unei sceme construite arficial, in locul crearii acelui obiect.

A sasea metoda stop-motion de animatie, pixilation, implica utilizarea personajelor reale in simularea miscarii componente a unei animatii. Aceasta metoda permite crearea unor efecte ireale, precum disparitia si reaparitia spontana a unor personaje in anumite locuri dintr-o scena, sau supravietuirea miraculosa a unor personaje in diferite scene in care au loc hazarde naturale cataclismice si inevitabile.

Prima metoda computerizata de animatie, animatia bidimensionala (2D), faciliteaza crearea sau editarea de catre animator a ilustratiilor realizate pe calculator (computer), folosind bitmap-uri bidimensionale (dreptunghiuri cu valori 0 sau 1) sau vectori bidimensionali (segmente de dreapta). Aceasta metoda cuprinde versiunea automat-computerizata a tehnicilor de animatie clasica, si anume morphing, skinning, rotoscoping.

A doua metoda computerizata de animatie, animatia tridimensionala (3D), faciliteaza crearea, modelarea sau manipularea de catre animator a unei impletituri (mesh) realizate pe calculator, folosind impletituri de poligoane tridimensionale compuse din puncte, muchii si fete. In unele cazuri, acestei impletituri i se atribuie un schelet (rig) care sa ajute impreuna cu cadrele cheie (key frames) la simularea cat mai naturala si realistica a miscarilor efectuate de catre un anumit obiect intr-o scena construita virtual. Acestei metode i se pot adauga efecte vizuale speciale obtinute in urma efectuarii operatiilor matematice, spre exemplu: simularea particulelor pentru obtinerea ploii, ninsorii sau simularea apei, focului sau obtinerea elementelor precum par, blana, sau chiar simularea gravitatiei.

Prima metoda mecanica de animatie, animatronics, este reprezentata de folosirea macatronicii in cadrul animatiilor, mai degraba decat in cadrul roboticii.

A doua metoda mecanica de animatie, chuckimation, este reprezentata de folosirea elementelor componente ale unei animatii drept obiecte care sunt aruncate sau framantate prin fata camerei de filmat pentru a simula vorbitul prin intermediul unei maini invizibile.

A treia metoda mecanica de animatie, puppetry, reprezinta o forma de teatru sau spectacol interpretata prin manipularea papusilor.

A patra metoda mecanica de animatie, zoetrope, este reprezentata de un dispozitiv grecesc tradus drept „roata vietii” care creeaza iluzia de miscare datoria succesiunii rapide a imaginilor statice carecare intra in componenta lui.

Modalitatile moderne de a crea o animatie sunt: pictura pe sticla (paint on glass), desenul in nisip (sand drawing), cartea cu bobarnace (flip book), strapungerea ecranului (pinscreen).

Animatia bidimensionala nu precede animatia tridimensionala. Animatia stop-motion este cea care precede animatia tridimensionala.

Intr-o animatie stop-motion se utilizeaza un manechin real care este inregistrat in ipostaze diferite. La sfarsitul inregistrarii se deruleaza succesiv cadrele filmate, cu scopul crearii iluziei de miscare a manechinului. Aceasta este o metoda foarte migaloasa fizic si de aceea este folosita mai rar in crearea animatiilor.

Intr-o animatie tridimensionala se utilizeaza un manechin creat digital care este inregistrat cu o camera integrata intr-un program dedicat crearii animatiilor. Aceasta este o metoda mai putin migaloasa decat metoda stop-motion deoarece nu necesita un mare efort fizic ci mai degraba unul psihic.

Animatorilor obisnuiti sa creeze animatii utilizand metodele stop-motion le este mult mai usor sa conceapa o animatie folosind drept noua metoda pe cea computerizata tridimensionala decat pe cea computerizata bidimensionala.

3.2 PRINCIPIILE ANIMAȚIEI

Principiile esentiale utilizate pentru a crea orice animatie sunt: turtire (squash) si intindere (stretch), anticiparea (anticipation), etapizarea scenei (staging), cadru cu cadru (frame by frame) sau cadre cheie (key frames), urmarirea miscarii (follow through) si actiunea suprapusa (overlapping action), incetinirea si accelerarea treptata (slow and speed), arcele (arcs), timpul de actiune (action timing), exagerarea (exagerration), desenul volumetric (solid drawing), atractia (appeal).

Primul principiu, turtire (squash) si intindere (stretch), este considerat principiul de baza al oricarei animatii. Acest principiu simuleaza atat greutatea unui obiect cat si flexibilitatea sa. Se poate aplica obiectelor simple si complexe.

Al doilea principiu, anticiparea (anticipation), se aplica pentru a induce oamenilor care urmareste o animatie aparitia actiunii urmatoare. Acest principiu ajuta si la aparitia unor actiuni mai slab dinamizate fizic.

Al treilea principiu, etapizarea scenei (staging), reprezinta tehnica de captare a atentiei maselor de oameni asupra elementelor din scena cu adevarat importante si totodata indepartarea privirilor de la detaliile minore si irelevante.

Al patrulea principiu, cadru cu cadru (frame by frame) sau cadre cheie (key frames), semnifica cele doua tehnici de animatie. Tehnica de animatie cadru cu cadru reprezinta desenarea de catre animator a tuturor pozitiilor unui obiect pregatit pentru a fi animat. Tehnica de animatie in cadre cheie (tweening) reprezinta desenarea de catre animator a catorva pozitii principale ale unui obiect pregatiti pentru a fi animat, restul pozitiilor intermediare urmand sa fie generate automat de catre calculator. Pentru obtinerea unei animatii realistice este recomandata folosirea celor doua tehnici prin intrepatrunderea lor.

Al patrulea principiu, urmarirea miscarii (follow through) si actiunea suprapusa (overlapping action), determina o miscare simulata sa se comporte natural si realistic din punct de vedere al legilor fizicii, mai ales atunci cand un obiect animat trece din stare de miscare in stare de repaus, dar si invers.

Al cincilea principiu, incetinirea si accelerarea treptata (slow and speed), se aplica in special cadrului de inceput si celui de sfarsit al unei miscari animate. Acest principiu confera actiunii simulate prin pozitii marginale sa para autentica.

Al saselea principiu, arcele (arcs), ofera miscarilor animate o linie oscilanta care se aplica pentru o dobandire a unei similitudini cat mai credibile. Acest principiu este folosit in special in cazul simularii miscarilor animate ale fiintelor vii.

Al saptelea principiu, timpul de actiune (action timing), este folosit pentru afisarea unui obiect aflat in miscare. Afisarea succesiva a mai multor cadre pe secunda faciliteaza redarea clara a unei actiuni.

Al optulea principiu, exagerarea (exagerration), simbolizeaza gradul de credibilitate al unei miscari animate. Acest principiu concureaza cu caricaturizarea obiectelor, in special a personajelo, avand o tenta satirica, umoristica.

Al noualea principiu, desenul volumetric (solid drawing), confera desenelor animate tridimensional forme precum volum sau greutate. Spatiul in care au loc aceste reprezentari vizuale este calculat automat de catre computer.

Al zecelea principiu, atractia (appeal), are rolul de a atrage atentia publicului asupra unui personaj sau asupra actiunilor intreprinse de acesta. Fie el un simbol al binelui, fie al raului, personajul construit atractiv de catre animator va fi intotdeauna in centrul atentiei.

3.3 PAȘII CREĂRII ANIMAȚIEI

Pasii care trebuie urmati pentru crea o animatie tridimensionala sunt: scenariul (storyboard), modelarea (modeling), texturarea (texturing), osificarea (rigging) si grefarea (skinning), animarea (animation), iluminarea (lighting), filmarea (camera), randarea (rendering), compunerea (compositing) si efectele vizuale speciale (special FX), muzica (music) si efectele sonore speciale (foley).

Primul pas, scenariul (storyboard), reprezinta conceptualizarea ideilor si ilustrarea vizuala, simpla, a lor prin intermediul unor desene schematice. Acest pas urmareste atat ordinea cronologica a evenimentelor ce urmeaza sa aiba loc in cadrul unei animatii tridimensionale, cat si sincronizarea conexiunii dintre povestea transmisa, vocea povestitorului si efectele speciale ajutatoare ale imaginilor care compun scena virtuala ilustrata.

Al doilea pas, modelarea (modeling), reprezinta procesul de creare a elementelor care intra in componeta unei scene virtuale ilustrate. Elementele create pot face parte din urmatoarele categorii: primordiale (apa, foc), fenomene ale naturii (fenomene meteorologice – vanturi, precipitatii, anotimpuri- obtinute prin simularea virtuala si computerizata a unor particule), forme de relief (munti, campii, dealuri, vai), flora, fauna, oameni, stari de agregare (solida, lichida, gazoasa), artefacte, artifacte, tehnici si tehnologii. Acest pas porneste de la simpla folosire computerizata a formelor primitivelor si duce la obtinerea unei impletituri (mesh) virtuale de poligoane care sa simuleze aproape orice obiect imaginat.

Al treilea pas, texturarea (texturing), reprezinta aplicarea unui invelis bidimensional peste un element tridimensional. Acest invelis poate insemna: o culoare din spectrul RGB (red-rosu, green-verde, blue-albastru), un design sau o iluzie a unui material real (pamant, lemn, piatra). O texturare cat mai credibila si autentica este realizata atunci cand invelisurile imitate prin texturi sunt capturate direct din lumea reala cu ajutorul camerelor de filmat sau aparatelor de fotografiat.

Al patrulea pas, osificarea (rigging) si grefarea (skinning), reprezinta procesul prin care unui manechin sau unei impletituri (mesh) i se atribuie elemente asemanatoare unui schelet (rig) pentru a se putea astfel simula, cat mai natural si realistic, diferitele sale miscari efectuate intr-o scena construita virtual. Acest pas este cel mai important in crearea animatiei unui personaj deoarece implica atat atasarea de personaj a invelisului epitelial si vestimentar (care trebuie suprapuse exact) cat si sincronizarea miscarilor personajului cu sistemului osos artificial creat pentru acesta (care trebuie aplicata cu exactitate daca se doreste redarea naturala si realistica a actiunii personajului).

Al cincilea pas, animarea (animation), este arta prin care un animator reuseste sa dea viata personajului pe care l-a creat artificial. Acest pas reprezinta fundamentul fara de care animatia nu ar putea exista. Animarea unui personaj in cadrul unei animatii digitale se face prin redarea consecutiva a unor cadre secunda dupa secunda. Priceperea cu care un personaj animat este creat de catre un animator se reflecta total in cadrul filmului de animatie distribuit de catre animator la final capodoperei sale.

Al saselea pas, iluminarea (lighting), reprezinta aplicarea unui obiect luminos in cadrul unei scene create artificial cu scopul de a se putea observa cat mai bine caracteristicile elementelor existente in acea scena. Acest pas este esential sa fie aplicat corespunzator fiindca fara acordarea unei atentii sporite in acest sens toata munca artistica depusa de animatori ar fi insesizabila si zadarnica. Iluminarea se afla intr-un raport direct proportional cu texturile si materialele imitate de catre aceste texturi deoarece lumina se reflecta diferit in functie de natura obiectelor pe care se rasfrange. Majoritatea artistilor care au ca sarcina amplasarea adecvata a luminilor intr-o scena sunt de fapt fotografi profesionisti.

Al saptelea pas, filmarea (camera), reprezinta procesul de pozitionare corecta a camerei de filmat care se gaseste in componenta programelor dedicate crearii animatiilor. Unghiurile si pozitiile din care poate fi inregistrata o scena creata artifical sunt infinite. Perspectivele de filmare a unei scene se rezuma doar la imaginatia animatorului. Pe calculator, aceeasi inregistrare poate fi facuta simultan folosind un numar arbitrar de camere de filmat, oricat de mare ar fi acel numar. Spre deosebire de viata reala, in cadrul unei scene realizate virtual se pot utiliza camere de filmat care sa simuleze actiuni foarte greu de observat in realitatea concreta, spre exemplu reactiile distructive ale unei explozii produse in urma eliberarii energiei nucleare.

Al optulea pas, randarea (rendering), reprezinta procesul de generare grafica, pe ecran, a primitivelor geometrice (puncte, linii, poligoane), dar si a obiectelor obtinute in urma modelarii si prelucrarii acestora. Acestui pas ii este adesea ignorata importanta de catre animatorii incepatori care acorda o importanta mare doar crearii si animarii modelelor tridimensionale. Este nevoie de un management foarte bun al elementelor randate daca se doreste obtinerea unei performante vizuale inalte fiindca randarea consuma cele mai multe dintre resursele de procesesare: CPU (central processing unit-unitatea centrala de procesare) si GPU (graphics processing unit-unitatea de procesare grafica) ale unui calculator. Randarea trebuie insa constientizata si analizata in detaliu deoarece, in final, ea este cea care va face diferenta intre un animator profesionist si unul amator.

Al noualea pas, compunerea (compositing) si efectele vizuale speciale (special FX), reprezinta atribuirea detaliilor de finete intr-o scena creata artificial. Compunerea e un proces prin intermediul caruia se completeaza si se amesteca elemente preluate din realitatea concreta cu elemente grafice create artificial. Efecte speciale pot fi considerate exploziile, inlocuirile unor parti dintr-o scena cu altele, sau completarile elementelor unor scene.

Al zecelea pas, muzica (music) si efectele sonore speciale (foley), reprezinta adaugarea de elemente menite sa ofere emotie si sensibilitate scenelor animate sau scenelor statice. Ele dubleaza si intaresc actiuni precum vorbitul personajelor, zgomotele de fond, sunetele animalelor salbatice, melodii care insotesc scene cu incarcatura emotionala puternica.

Diferentele principale dintre o animatie bidimensionala si una tridimensionala sunt: dimensiunile sistemului de coordonate in care are loc o animatie, arta vizuala de concepere a unei animatii, realismul detaliilor unei animatii. .

Prima diferenta o constituie dimensiunile sistemului de coordonate in care are loc o animatie. O animatie bidimensionala este creata intr-un sistem de coordonate cu doua dimensiuni, definit de doua axe, reprezentand lungimea si latimea, iar o animatie tridimensinala este creata intr-un sistem de coordonate cu trei dimensiuni, definit de trei axe, reprezentand lungimea, latimea si inaltimea.

A doua diferenta o constituie arta vizuala de concepere a unei animatii. O animatie bidimensionala se rezuma la imitarea picturii ca arta vizuala, iar o animatie tridimensinala se rezuma la imitarea sculpturii ca arta vizuala.

A treia diferenta o constituie realismul detaliilor unei animatii. O animatie bidimensionala imita un peisaj asemanator celeui intalnit in revistele de benzi desenate, iar o animatie tridimensionala imita un peisaj asemanator celui intalnit in realitatea concreta, foarte credibil si verosimil.

4. MOTORUL GRAFIC

Un motor de creare a jocurilor video (game engine) sau un motor grafic este un sistem proiectat in special pentru dezvoltarea bidimensionala sau tridimensionala a jocurilor video, dar si a filmelor, aplicatiilor de realitate virtuala, simularilor si simulatoarelor de orice tip, vizualizarilor stiintifice.

Sistemul include un motor de randare a graficii bidimensionale sau tridmensionale (randare precum cea obtinuta folosind biblioteca grafica OpenGL), un motor de detectare a coliziunilor (collision detection engine), modalitati de animatie (animation), sunet (sound), inteligenta artificiala (artificial intelligence), retelistica (networking) si difuzari (streaming).

Un joc video (video game) reprezinta o simulare virtuala a realitatii concrete care se defineste printr-un mod de joaca interactiv-vizual dintre un om si un dispozitiv electronic compatibil. Acesti oameni sunt numiti jucatori (players, gammers). Jucatorii cumpara jocurile si le joaca in special din curiozitate si dorinta de control.

Dispozitivele electronice pe care ruleaza jocurile video sunt compuse din parti harware si aplicatii software si poarta numele de platforme. Aparitia acestora are rolul de a-i inavuti pe dezvoltatori si de a-i binedispune pe jucatori.

Platformele se impart in doua categorii: platforme dedicate (care se folosesc exclusiv pentru rularea jocurilor video) si platforme generale (care se pot utiliza atat pentru rularea jocurilor video cat si pentru rularea altor programe).

In categoria platformelor generale se incadreaza, de exemplu, calculatoarele personale (PC, personal computers). Calculatoarele personale sunt inrebuintate in scopuri diverse, printre care si rularea jocurilor video. Pentru rularea obisnuita a jocurilor video pe un calculator personal, placa de baza (motherboard) a acestuia trebuie sa includa obligatoriu o placa video (graphics board, VGA-video graphics adapter). Pe langa placa de baza si placa video sunt necesare periferice precum mouse si tastatura (in functie de tipul si structura jocului ales de catre jucatori) si, nu in ultimul rand, un ecran (display) pe care vor fi afisate jocurile video rulate.

In categoria platformelor dedicate se incadreaza, de exemplu, consolele pentru jocuri video (games console). O consola pentru jocuri video este un dispozitiv electronic intrebuintat exclusiv pentru rularea jocurilor video si continutului de divertisment derivat din acestea. Pentru rularea jocurilor video pe o consola pentru jocuri, este necesara conectarea prin cablu a consolei la un ecran. Interactiunea dintre jucator si jocul rulat se realizeaza folosind dispozitive cu butoane (gamepads), si anume joysticks (utilizabile cu o singurma mana) sau controllers (utilizabile cu ambele maini). Joystick-urile si controller-ele sunt prevazute cu butoane, care, la apasare, transmit date de intrare (input-uri) percepute de catre consola pentru jocuri video. Consola reactioneaza rapid la primirea acelor date modificand aproape instant actiunile personajelor din cadrul jocurilor video redate pe ecran in acel moment. Conexiunea dintre un controller sau un joystick si o consola pentru jocuri video poate fi realizata cu un cablu (cabled) sau fara vreun cablu (wireless).

Actiunile de stocarea si livrare a jocurilor video au la baza folosirea discurilor compacte (CD-compact disc). Notorietate si popularitatea jocurilor video sunt alimentate in mare parte de de catre reclamele publicitare venite din media.

Motoarele de creare a jocurilor video sunt definite drept sisteme complexe. Exista atat variante gratuite ale motoarelor de creare a jocurilor video cat si variante platite. Utilizarea instrumentelor din motoarele de creare a jocurilor video se poate face in doua moduri: complex, cu ajutorul codului scris (folosind diverse limbaje de programare) sau, mai simplu, cu ajutorul interfetei grafice dedicate utilizatorului (GUI- graphical user interface, folosind metoda drag-drop). Cei mai multi artisti si designeri creeaza jocuri video intrebuintand varianta interfetei grafice cu utilizatorul, fiind mai rapida si eficienta.

4.1 FERESTRELE MOTORULUI GRAFIC

Elementele de baza ale unei interfete grafice cu utilizatorul sunt numite ferestre (windows) si sunt grupate intr-o fereastra principala de editare. Fereastra principala de editare este compusa din ferestre de dimensiuni mai mici care pot fi modificate (aranjate, asucunse sau desprinse) arbitrar de catre artisti si designeri.

Cele mai utilizate dintre ferestrele de dimensiuni mai mici ale ferestrei principale sunt urmatoarele: fereastra proiect (project window), fereastra de vizualizarea a scenei (scene view window), fereastra ierarhica (hierarchy window), fereastra inspector (inspector window). Pe langa acestea, un alt element component important este bara de instrumente (toolbar).

Fereastra proiect (project window) este este o fereastra asemanatoare unei expozitii de elemente (implicite, modelate sau importate) care pot fi utilizate in cadrul unui proiect de creare a unei scene virtuale.

Fereastra de vizualizarea a scenei (scene view window) este o fereastra care permite navigarea si editarea vizuala a unei scene virtuale. Vizualizarea scenei virtuale poate fi redata printr-o perspectiva bidimensionala sau tridimnsionala.

Fereastra ierarhica (hierarchy window), este o fereastra care cuprinde denumirile date de catre artisti si designeri elementelor din componenta unei scene virtuale. Aceasta fereastra se aseamana cu o lista dintr-o baza de date. Prin intermediul ferestrei ierarhice, accesul la elementele unei scene se face mai usor, datorita legaturii dintre elemente si denumirile acestora.

Fereastra inspector (inspector window) este o fereastra care permite vizualizarea si editarea proprietatilor oricarui element dintr-o scena virtuala. Structura si continutul acestei ferestre variaza in functie de diversitatea elementelor.

Bara de instrumente (toolbar) este cea care ofera acces la afisarea si editarea majoritatatii caracteristicilor utilizabile in cadrul unei scene virtuale. Butoanele acesteia sunt grupate in trei pozitii:

In partea stanga are organizate instrumente necesare manipularii modalitatii de vizualizare a scenei virtuale si elementelor sale.

In mijloc sunt pozitionate butoane care controleaza redarea actiunii scenice (pornire-play, intrerupere-pause, oprire-stop).

In partea dreapta cuprinde: un buton care permite accesarea online a contului personal de utilizator, un buton care permite accesarea serviciilor de stocare online (cloud computing), un meniu cu optiuni de afisare a structurii si continutului ferestrelor si un meniu cu optiuni de afisare a elementelor din scena.

Bara de instrumente nu estre o fereastra si totusi intra in componenta ferestrei principale de editare a elementelor unei scene virtuale.

4.2 CORPURI GEOMETRICE GRAFICE

Corpurile geometrice tridimensionale implicite regasite in majoritatea motoarelor de creare a jocurilor video sunt: planul (plane), patrulaterul (quad), cubul (cube), sfera (sphere), capsula (capsule) si cilindrul (cylinder).

Planul (quad) seamana cu un patrat cu o lungime implicita egala cu zece unitati. Este orientat si determinat spatial de sistemul de coordonate cu trei dimensiuni, definit de trei axe, reprezentand lungimea, latimea si inaltimea. Se foloseste in special pentru crearea suprafetelor plane, din cadrul scenelor virtuale, precum podele sau ziduri.

Patrulaterul (quad) seamana partial cu un plan. Ele difera prin faptul ca un patrulater are o lungime implicita egala cu o singura unitate, spre deosebire de un plan care are o lungime implicita egala cu zece unitati, iar un patrulater este compus din doar doua triunghiuri, spre deosebire de un plan care este compus din doua sute de triunghiuri. Patrulaterul este orientat si determinat spatial de sistemul de coordonate cartezian cu doua dimensiuni, definit de doua axe, reprezentand lungimea si latimea. Se foloseste in special pentru afisarea unui element dintr-o scena virtuala sub forma de imagine sau film

.

Cubul (cube) este un corp geometric tridimensional a carui lungime implicita este egala cu o unitate. Acesta este prelucrat si utilizat drept inlocuitor de catre programatorii care vor sa testeze codul de control al unor obiecte nefinalizate inca. Se foloseste in special pentru crearea virtuala a peretilor, cutiilor, treptelor.

Sfera (sphere) este un corp geometric tridimensional cu o lungime implicita (diametrul) care masoara o unitate. Se foloseste in special pentru crearea unor bile, minigi sau planete din cadrul unei scene virtuale.

Capsula (capsule) este un corp geometric tridimensional cu o lungime implicita (diametrul) care masoara o unitate, si o lungime implicita (inaltimea) care masoara doua unitati. Acesta corp geometric este prelucrat si utilizat drept inlocuitor de catre programatorii care vor sa testeze codul de control al unor obiecte nefinalizate inca. Nu are prea multe intrebuintari practice, de aceea se foloseste in special pentru crearea virtuala a prototipurilor.

Cilindrul (cylinder) este un corp geometric tridimensional asemanator capsulei, cu o lungime implicita (diametrul) care masoara o unitate, si o lungime implicita (inaltimea) care masoara doua unitati. Un cilindru este o capsula fara terminatii emisferice la capete. Se foloseste in special pentru crearea virtuala a rotilor sau tijelor.

4.3 ELEMENTE PROGRAMABILE

Elementele principale care pot fi create cu ajutorul unui limbaj de programare (cum ar fi C#), in cadrul unui motor de creare a jocurilor video (cum ar fi Unity 3D) sunt: etichetele (labels), butoanele (buttons), sectoarele de caractere (text fields), comutatoarele (toggles), barile de instrumente (toolbars), grilele de selectie (selection grid), cursoarele (sliders), barile de derulare (scrollbars), vederile de parcurgere (scrollviews), ferestrele (windows).

Etichetele (labels) sunt niste entitati rezultate dintr-o scriere sub forma de cod prin care se afiseaza informatii pe un ecran. Acestea nu pot fi accesate sau mutate, astfel:

using UnityEngine;

using System.Collections;

public class GUITest: MonoBehaviour

{ void OnGUI( )

{ GUI.Label (new Rect (25, 25, 100, 30), "Label"); } }

Butoanele (buttons) sunt niste entitati rezultate dintr-o scriere sub forma de cod prin care, dupa accesarea lor, acestea reactioneaza prin afisarea unui rezultat vizibil, astfel:

using UnityEngine;

using System.Collections;

public class GUITest: MonoBehaviour

{ void OnGUI( )

{ if (GUI.Button (new Rect (25, 25, 100, 30), "Button") ) } }

Sectoarele de caractere (text fields) ) sunt niste entitati rezultate dintr-o scriere sub forma de cod. In urma accesarii acestora, pe ecran va fi afisat un sir de caractere text, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private string textFieldString = "text field";

void OnGUI( )

{ textFieldString = GUI.TextField (new Rect (25, 25, 100, 30), textFieldString); } }

Comutatoarele (toggles) sunt niste entitati rezultate dintr-o scriere sub forma de cod prin care, dupa accesarea lor, acestea reactioneaza prin crearea unor casete cu doua stari: pornire si oprire. Accesarea unei casete duce la schimbarea starii sale, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private bool toggleBool = true;

void OnGUI ( )

{ toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle"); } }

Barile de instrumente (toolbars) sunt niste entitati rezultate dintr-o scriere sub forma de cod. Ele reprezinta randuri de butoane. Accesarea unui buton il dezactiveaza pe cel accesat anterior, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private int toolbarInt = 0;

private string[] toolbarStrings = {"Toolbar1", "Toolbar2", "Toolbar3"};void OnGUI ( )

{ toolbarInt = GUI.Toolbar (new Rect (25, 25, 250, 30), toolbarInt, toolbarStrings); }}

Grilele de selectie (selection grid) sunt niste entitati rezultate dintr-o scriere sub forma de cod care reprezinta bari de instrumente cu mai multe randuri de butoane. Numarul de randuri si coloane ale acestora poate fi reprezentat astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private int selectionGridInt = 0;

private string[] selectionStrings = {"Grid 1", "Grid 2", "Grid 3", "Grid 4"};

void OnGUI ( )

{ selectionGridInt = GUI.SelectionGrid (new Rect (25, 25, 300, 60),

selectionGridInt, selectionStrings, 2); } }

Cursoarele (sliders), sunt niste entitati rezultate dintr-o scriere sub forma de cod. Acestea reprezinta noduri mobile de care se poate trage arbitrar, pe verticala sau orizontala, pentru redarea exacta a detaliilor unui element, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private float hSliderValue = 0.0f;

void OnGUI ()

{ hSliderValue = GUI.HorizontalSlider (new Rect (25, 25, 100, 30),

hSliderValue, 0.0f, 10.0f); } }

Barile de derulare (scrollbars) sunt niste entitati rezultate dintr-o scriere sub forma de cod, similare cursoarelor. Acestea se aseamana vizual cu modul de parcurgerea al exploratoarelor web (web browsers), astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private float hScrollbarValue;

void OnGUI ( )

{ hScrollbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30),

hScrollbarValue, 1.0f, 0.0f, 10.0f); } }

Vederile de parcurgere (scrollviews) sunt niste entitati rezultate dintr-o scriere sub forma de cod. Acestea reprezinta o incadrare a marginilor unui element folosind noduri mobile de care se poate trage arbitrar pe verticala si orizontala, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private Vector2 scrollViewVector = Vector2.zero;

private string innerText = "I am inside the ScrollView";

void OnGUI ( )

{ scrollViewVector = GUI.BeginScrollView (new Rect (25, 25, 100, 100),

scrollViewVector, new Rect (0, 0, 400, 400));

innerText = GUI.TextArea (new Rect (0, 0, 400, 400), innerText);

GUI.EndScrollView( ); } }

Ferestrele (windows) sunt niste entitati rezultate dintr-o scriere sub forma de cod. Acestea reprezinta imbinarea majoritatii entitatilor prezentate anterior, astfel:

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{ private Rect windowRect = new Rect (20, 20, 120, 50);

void OnGUI ( )

{ windowRect = GUI.Window (0, windowRect, WindowFunction, "My Window"); }

void WindowFunction (int windowID) }

Imbinarea acestor elemente face posibila dezvoltarea integrala a unui motor independent si complex de creare a jocurilor video.

5. APLICAȚIA TRIDIMENSIONALA

Aplicatia tridimensionala dinamica si interactiva pe care am creata imagineaza o singura proba, obligatoriu de parcurs, din cadrul unui posibil joc video de tip evadare din labirint, care ar putea fi structurat pe mai multe nivele.

Mini jocul poate fi testat de catre jucatori folosind atat periferice (mouse si tastatura) cat si dispozitive cu butoane (joysticks sau controllers).

Elemntele care compun scena au fost create mixand metoda complexa (utilizarea limbajului de programare C# – C Sharp) cu metoda simpla (folosirea interfetei grafice, GUI). Programele intrebuinate in acest sens au fost Unity 3D, Iclone, Visual Studio si programe auxiliare pentru importul si exportul elementeor.

Ordinea actiunilor necesare conceperii mini jocului este urmatoarea: crearea terenului, crearea copacilor, crearea apelor, crearea personajului, crearea soarelui. Animarea personajului am realizat-o dupa crearea scenei virtuale, iar povestea mini jocului este urmatoarea:

5.1 POVESTEA JOCULUI

Crearea terenului

Pe insula exista un labirintul blestemat si stancos format din munti inaltati misterios.

Regiunea muntoasa infatiseaza un chip monstruos, simbolizand spiritul insulei.

Crearea copacilor

Chipul labirintului este presarat cu niste copaci, facandu-l sa para si mai firos.

Crearea apelor

Marea face iesirea din labirint aproape imposibila, delimitand insula in doua posibilitati.

Crearea personajului

Jucatorul cauta cu disperare evadarea din mrejele enigmatice ale infricosatoarei naturi.

Crearea soarelui

Razele de lumina ivite la finalul luptei sale cu neputinta simbolizeaza speranta nemuritoare.

6. CONCLUZIE

7. BIBLIOGRAFIE

Similar Posts