This is an old revision of the document!


Temă - AnyGame.exe

  • Lansare: 8 decembrie 2025
  • Termen de predare: Înainte de momentul prezentării
  • Termen de prezentare: Ultima dată de prezentare anunțată, nu mai târziu de ultima zi din semestru
  • Regulament: Regulament temă
  • Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!

În cadrul acestei teme, veți avea de implementat un joc în care aveți libertate totală în conceptia ș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 :) !

Concepția jocului este în totalitate la alegerea voastră. Tema aceasta nu impune niciun joc propriu-zis. Va trebui sa concepeți voi unul :) . De asemenea, tematica jocului este în totalitate la alegerea voastră.

În total, 1 punct din cele 3 puncte ale temei, după cum se poate vedea mai jos, se alocă pentru comportamentul de joc ales de voi. Astfel, vă incurajez 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ă, orice rezultat bun din punct de vedere calitativ poate crește cu până la 1 punct bonus.

Barem

Funcționalități obligatorii (3 puncte)

  • Desenare elemente vizuale (0.5p total)
    • Desenare geometrie element - 0.1p per element, conform descrierii de mai jos
  • Curbură geometrie lume (0.3p)
  • Animații personaj (0.75p total)
    • Desenare geometrie personaj - 0.15p
    • Animații personaj - 0.2p per animație
  • Iluminare geometrie (0.45p total)
    • Iluminare cu cel puțin 10 surse de lumină de culori diferite, pentru care nu se calculează umbrele - 0.15p
    • Iluminare cu cel puțin 3 surse de lumină pentru care se calculează umbrele - 0.3p
  • Comportament de joc, complexitate construcție geometrie, creativitate în utilizarea tehnicilor studiate în cadrul acestui curs :) (1p)

Detalii de implementare

Construcție elemente vizuale

Trebuie să realizati cel puțin 5 elemente vizuale.

Pentru simplitate, vom specifica aici faptul că toate elementele vizuale descrise mai jos:

  • Trebuie construite exclusiv din cod. NU este permisă încărcarea unor modele 3D din fișiere pentru realizarea elementelor vizuale.
  • Trebuie să fie desenate prin aplicarea unei texturi;
  • Complexitatea geometriei este descrisă prin cuburi/paralelipipede, dar pentru creșterea punctajului de la ultima cerință din barem, se încurajează utilizarea unor forme geometrice mai complexe precum discurile de cerc, cilindrii, conurile :) …
  • Așezarea componentelor din care este realizat un element vizual, împreună cu texturile aplicate la desenarea componentelor, trebuie să fie consistente cu comportamentul și tematica jocului. Altfel spus, toate elementele vizuale trebuie să aibă sens în lumea virtuală a jocului, nu doar să fie introduse pentru respectarea cerinței minime :) .

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 de redimensionare neuniformă.

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ă aiba un comportament de iluminare ce se modifică continuu. Posibile modificări ale sursei comportamentului de iluminare pot fi schimbarea culorii/intensității de iluminare.

O parte din punctajul ultimei cerințe din barem este proportională cu complexitatea geometriei construite :) . Astfel, vă încurajez să vă folosiți creativitatea pentru crearea unei lumi virtuale cât mai plăcute și interesante, conform tematicii alese de voi pentru joc.

Curbură geometrie

Lumea virtuală în care se desfășoară acțiunea jocului trebuie să conțină o curbură într-o direcție aleasă de voi.

Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :).

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 $$

  • $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader
  • $Pozitie_{camera}$ - poziția în spațiul lumii a personajului controlat de jucător
  • $\vec{control}$ - un vector de control al direcției în care se realizează curbura
    • Cateva exemple de valori pentru acest vector de control pot fi: În situația în care se dorește realizarea curburii în direcția jos, se utilizează vectorul $\vec{control}= \begin{bmatrix} 0 & -1 & 0 \end{bmatrix} $ . În situația în care se dorește realizarea curburii în stânga-jos, relativ la axele principale, vectorul este $\vec{control}= \begin{bmatrix} -1 & -1 & 0 \end{bmatrix} $ .
  • $factorCurbura$ - un factor ce controlează curbura geometriei

Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibilă pentru factorul de curbură este 0.02.

Animații

Geometrie personaj

In imaginile si animatiile de mai jos, se prezinta o versiune minima a personajului pe care trebuie sa il creati cu animatii. Acesta poate sa fie de orice tip, nu doar biped, cum este cel prezentat in continuare. Altfel spus, personajul poate fi o orice, de la o creatura bipeda, la un animalut/vehicul. Personajul trebuie sa fie construit minim din urmatoarea geometrie:

  • Un corp;
  • Cel putin 2 membre utilizate pentru deplasare;
  • Cel putin alte 2 membre ce trebuie sa fie utilizate in cadrul animatiilor.

Similar precum la geometria elementelor vizuale din scena, desenarea personajului trebuie realizata prin procesul de aplicare a unei texturi consistente cu tematica jocului si trebuie sa se calculeze iluminare.

Un posibil exemplu pentru geometria personajului este urmatoarea:

În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință. În aplicația grafică, toată geometria unui personaj sau a unui inamic poate fi desenată cu o singură culoare.

Recomandarea este să construiți această geometrie din 6 cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație.

Animații

Geometria personajului trebuie să realizeze 3 tipuri animatii distincte.

In continuare se ofera 2 exemple de animatii posibile pentru personajul a carui geometrie este descrisa mai sus.

  • Aveti libertatea sa realizati orice alte tipuri de animatii in situatia in care o animatie utilizeaza cele 4 membre pe care trebuie sa le contina geometria.
  • Animatiile trebuie sa fie consistente cu conceptia jocului. Altfel spus, trebuie sa aiba sens pentru joc.
  • Toate cele 3 animatii trebuie sa fie cel putin la fel de complexe precum cele 2 exemple oferite mai jos.

Animatie de deplasare

Recomandarea este să realizați această animație prin utilizarea unui lanț de transformari, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformari ale trunchiului.

Animație de oprire

Iluminare geometrie

Î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.

Transformarea vectorului normal în spațiul lumii

Î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} $$

  • $\vec{N'}$ - vectorul normal în spațiul lumii
  • $Model$ - matricea transformării de modelare
  • $M^t$ - matricea rezultată după transpunerea matricei M
  • $M^{-1}$ - matricea rezultată după inversarea matricei M
  • $\vec{N}$ - vectorul normal în spațiul obiectului

Exemple de funcționalități bonus

Orice funcționalitate suplimentară implementată (care nu este inclusă în cerințele obligatorii) poate fi considerată pentru acordarea unui punctaj bonus dacă este suficient de complexă.

  • Geometrie mai complexă față de cea din cerința de bază pentru elementele vizuale din joc
  • Finalizarea comportamentului de joc pentru a avea de indeplinit o misiune si pentru a incheia jocul
  • Animatie de tras cu arma pentru personaj
  • Utilizarea unor modelele de iluminare ce ofera rezultate vizuale superioare celor din demo
  • Orice aduce îmbunătățiri vizuale jocului
ipg/tema/2025.1765203409.txt.gz · Last modified: 2025/12/08 16:16 by andrei.lambru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0