This is an old revision of the document!
În cadrul acestei teme, veți avea de implementat un joc în care aveți libertate totală în concepția și alegerea tematicii lui vizuale :) . Jocul realizat de voi trebuie să conțină un set de elemente vizuale obligatorii, dar pe care puteți să le adaptați la tematica aleasă de voi. Mai jos, aveți descrierea acestor elemente vizuale, împreună cu câteva indicații de implementare. Mult succes :) !
În total, 1 punct din cele 3 puncte ale temei, după cum se poate vedea în cadrul baremului de mai jos, se alocă pentru comportamentul de joc ales de voi și pentru complexitatea vizuală a jocului. Astfel, vă încurajez să fiți cât mai creativi :) !
Punctajul pentru această temă poate fi extins până la 4 puncte. Pe lângă cele 3 puncte de bază, un joc cu o calitate bună, în special din punct de vedere al elementelor de programare a graficii, poate obține cu până la 1 punct bonus.
Trebuie să realizați cel puțin 5 elemente vizuale.
Cel mai simplu element vizual din lumea virtuală a jocului poate fi realizat sub forma unui cub sau a unui paralelipiped. Paralelipipedul se poate obține din geometria unui cub, prin desenarea celui din urmă cu o transformare neuniformă de modificare de scară.
Următorul element vizual ce trebuie construit este compus din cel puțin 3 cuburi sau paralelipipede.
Un alt element vizual trebuie să fie construit din cel puțin 3 cuburi sau paralelipipede, similar cu cel descris anterior, dar în situația acestuia, cel puțin o componentă din care este construit trebuie să aibă o animație continuă.
Un alt element element vizual trebuie construit din cel puțin 3 cuburi sau paralelipipede și trebuie să conțină cel puțin o sursă de lumină atașată de el. Această sursă de lumină trebuie să poată lumina orice obiect din lumea virtuală.
Similar cu elementul vizual descris anterior, ultimul element vizual obligatoriu trebuie să fie construit din cel puțin 3 cuburi sau paralelipipede și să conțină cel puțin o sursă de lumină atașată de el, care să aibă un comportament de iluminare ce se modifică continuu. Posibile modificări ale comportamentului de iluminare pot fi schimbarea culorii/intensității de iluminare.
Lumea virtuală în care se desfășoară acțiunea jocului trebuie să conțină o curbură într-o direcție aleasă de voi.
Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului/camerei. Este important de menționat faptul că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei.
Realizeaza curburii obiectelor din lume se realizează la pasul de desenare a obiectelor din scenă. Acest efect se creează prin modificarea coordonatelor pentru toate vârfurile obiectelor din lume. Procesul este realizat în vertex shader. Coordonata tuturor vârfurilor se modifică după cum urmează:
$$ Pozitie_{v} = Pozitie_{v} - \vec{control} \cdot \|{Pozitie_{camera}-Pozitie_v}\|^2 \cdot factorCurbura $$
Câteva exemple de valori pentru vectorul de control pot fi:
Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibilă pentru factorul de curbură este 0.02.
În imaginile și animațiile de mai jos, se prezintă o versiune minimă a personajului pe care trebuie să îl creați cu animații continue. Personajul realizat de voi poate fi de orice tip, de la o creatură bipedă, la un animăluț/vehicul.
Geometria personajului trebuie să fie construită din următoarele componente:
Similar precum la geometria elementelor vizuale din scenă, desenarea personajului trebuie realizată prin procesul de aplicare a unei texturi consistente cu tematica jocului și prin calcularea iluminării.
Un posibil exemplu pentru geometria personajului este următorul:
În situația în care realizați o geometrie mai comlexă pentru personaj, recomandarea este să alocați atenție construcției componentelor din care este format personajul, astfel încât să aveți originea axelor de coordonate la o poziție convenabilă pentru transformările de rotație :) .
Geometria personajului trebuie să realizeze cel puțin 3 tipuri animații distincte. Toate animațiile trebuie să fie continue. Acestea trebuie să fie realizate prin utilizarea a cel puțin unei transformări de rotație.
Un exemplu de animație posibilă pentru personajul a cărui geometrie este prezentată mai sus este o animație de deplasare a personajului, precum cea de mai jos.
În calculele de iluminare a geometriei, trebuie utilizată componenta ambientală, componenta difuză și componenta speculară. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar.
În cadrul acestei teme, trebuie să realizați mediul unei lumi virtuale în care la orice moment de timp sunt prezente:
În situația în care transformarea de modelare conține o transformare neuniformă de modificare a scării, trecerea vectorului normal din spațiul obiectului în spațiul lumii se realizează după cum urmează:
$$ \begin{bmatrix} \vec{N'}_{x} \\ \vec{N'}_{y} \\ \vec{N'}_{z} \\ 0 \end{bmatrix} = {{(Model^{-1})}^t} \cdot \begin{bmatrix} \vec{N}_{x} \\ \vec{N}_{y} \\ \vec{N}_{z} \\ 0 \end{bmatrix} $$
Considerăm faptul că sursele de lumină pentru care se calculează umbre sunt de tip spot. La calcularea umbrelor, este recomandat să aveți în vedere să introduceți un număr relativ mic de astfel de surse de lumină și să păstrați rezoluția hărților de iluminare la un nivel care să permită o frecvență de desenare acceptabilă.